Установка:
1а.В файле /classes/modules/topic/mapper/Topic.mapper.class.php найти функцию GetTopicById, GetTopicsByArrayId, GetTopicsByTag и GetTopicsFavouriteByUserId
Найти во всех этих функциях
u.user_login as user_login,
b.blog_type as blog_type,
b.blog_url as blog_url,
b.blog_title as blog_title,
b.user_owner_id as blog_owner_id,
Заменить на
u.user_login as user_login,
u.user_profile_avatar as user_profile_avatar,
u.user_profile_avatar_type as user_profile_avatar_type,
b.blog_type as blog_type,
b.blog_url as blog_url,
b.blog_title as blog_title,
b.user_owner_id as blog_owner_id,
b.blog_avatar as blog_avatar,
b.blog_avatar_type as blog_avatar_type,
1b.В файле /classes/modules/topic/mapper/Topic.mapper.class.php найти функции GetTopics и GetTopicsRatingByDate
Найти в функцях
u.user_login as user_login,
IF(tv.topic_id IS NULL,0,1) as user_is_vote,
Заменить на
u.user_login as user_login,
u.user_profile_avatar as user_profile_avatar,
u.user_profile_avatar_type as user_profile_avatar_type,
IF(tv.topic_id IS NULL,0,1) as user_is_vote,
Найти в функциях
b.blog_title as blog_title,
b.blog_type as blog_type,
b.blog_url as blog_url,
b.user_owner_id as blog_owner_id
Заменить на
b.blog_title as blog_title,
b.blog_type as blog_type,
b.blog_url as blog_url,
b.user_owner_id as blog_owner_id,
b.blog_avatar as blog_avatar,
b.blog_avatar_type as blog_avatar_type
2.В файле /classes/modules/topic/entity/Topic.entity.class.php
Найти
public function getBlogOwnerId() {
return $this->_aData['blog_owner_id'];
}
Добавить после
public function getBlogAvatar() {
return $this->_aData['blog_avatar'];
}
public function getBlogAvatarType() {
return $this->_aData['blog_avatar_type'];
}
public function getUserAvatar() {
return $this->_aData['user_profile_avatar'];
}
public function getUserAvatarType() {
return $this->_aData['user_profile_avatar_type'];
}
public function getAvatarPath($iSize=24,$bShowNoIcon=false,$bShowNoUserIcon=true) {
if ($this->getBlogType()==open) {
if ($this->getBlogAvatar()) {
return DIR_WEB_ROOT.DIR_UPLOADS_IMAGES.'/'.$this->getBlogOwnerId()."/avatar_blog_{$this->getBlogUrl()}_".$iSize.'x'.$iSize.'.'.$this->getBlogAvatarType();
}
else {
if ($bShowNoIcon) {
return DIR_STATIC_SKIN.'/images/avatar_blog_'.$iSize.'x'.$iSize.'.gif';
}
else {
return false;
}
}
}
//Аналог if (getBlogType()==personal)
else {
if ($this->getUserAvatar()) {
return DIR_WEB_ROOT.DIR_UPLOADS_IMAGES.'/'.$this->getUserId()."/avatar_".$iSize.'x'.$iSize.'.'.$this->getUserAvatarType();
}
else {
if ($bShowNoUserIcon) {
return DIR_STATIC_SKIN.'/images/avatar_'.$iSize.'x'.$iSize.'.jpg';
}
else {
return false;
}
}
}
}
3d.Только если у вас скин Developer. В файлах /templates/skin/developer/topic.tpl и /templates/skin/developer/topic_list.tpl
Найти
Место выбрать по усмотрению :), функции getAvatarPath() так же можно послать переменные, однако стандартные должны подойти.
Главная функция хака — getAvatarPath($iSize=24,$bShowNoIcon=false,$bShowNoUserIcon=true)
Имеет 3 параметра
$iSize — Размер аватара в пикселях 24,48 или пусто.
$bShowNoIcon — Показывать аватар блога, если своей нет?
$bShowNoUserIcon — Тоже самое, но в случае с персональным блогом. Показываться будет стандартный аватар
P.S.: Дайте рейтинга и перенесу в Tips & tricks
29 комментариев
Было бы неплохо чтоб этот хак внесли в след. релиз.
Я понимаю что опциональный хак. Но! сложновато отслеживать каждые изменения и после АП новым релизом, опять приходится ломать голову. Что делал и что надо восстановить.
Это единственный по мне недостаток движка. Хотя у него все еще впереди!
это неизбежное зло. так было и будет всегда. или вы используете коробочную версию без изменений и просто перезаливаете все файлы. или модифицируете систему под себя и с каждым новым релизом обновляетесь вручную.
что бы было проще надо вести лог изменений, с подробными комментариями, что где и для чего. Иначе никак.
а набивать систему всякими дополнительными опциями, которые нужны лишь каждому десятому жертвуя общей производительностью мне кажется неправильным
В нужном месте вызывай функцию getAvatarPath()
Если используется другой запрос (для чочо нупь: функция в Topic.mapper.class.php), то с этим запросом следует забирать
blog_avatar
blog_avatar_type
user_profile_avatar
user_profile_avatar_type
SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(tv.topic_id IS NULL,0,1) as user_is_vote, tv.vote_delta as user_vote_de' at line 13 at /home/w/welikephot/public_html/classes/modules/topic/mapper/Topic.mapper.class.php line 239
Array ( [code] => 1064 [message] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(tv.topic_id IS NULL,0,1) as user_is_vote, tv.vote_delta as user_vote_de' at line 13 [query] => SELECT t_fast.*, tc.*, u.user_login as user_login, u.user_profile_avatar as user_profile_avatar, u.user_profile_avatar_type as user_profile_avatar_type, b.blog_type as blog_type, b.blog_url as blog_url, b.blog_title as blog_title, b.user_owner_id as blog_owner_id, b.blog_avatar as blog_avatar, b.blog_avatar_type as blog_avatar_type IF(tv.topic_id IS NULL,0,1) as user_is_vote, tv.vote_delta as user_vote_delta, IF(tqv.topic_id IS NULL,0,1) as user_question_is_vote, bu.is_moderator as user_is_blog_moderator, bu.is_administrator as user_is_blog_administrator FROM ( SELECT t.* FROM prefix_topic as t WHERE t.topic_id = 1 AND ( 1=1 ) ) AS t_fast JOIN prefix_user AS u ON t_fast.user_id=u.user_id JOIN prefix_blog AS b ON t_fast.blog_id=b.blog_id LEFT JOIN ( SELECT topic_id, vote_delta FROM prefix_topic_vote WHERE user_voter_id = 1 ) AS tv ON t_fast.topic_id=tv.topic_id LEFT JOIN ( SELECT is_moderator, is_administrator, blog_id FROM prefix_blog_user WHERE user_id = 1 ) AS bu ON t_fast.blog_id=bu.blog_id LEFT JOIN ( SELECT topic_id FROM prefix_topic_question_vote WHERE user_voter_id = 1 ) AS tqv ON t_fast.topic_id=tqv.topic_id JOIN prefix_topic_content AS tc ON t_fast.topic_id=tc.topic_id [context] => /home/w/welikephot/public_html/classes/modules/topic/mapper/Topic.mapper.class.php line 239 )
29 комментариев
Это единственный по мне недостаток движка. Хотя у него все еще впереди!
что бы было проще надо вести лог изменений, с подробными комментариями, что где и для чего. Иначе никак.
а набивать систему всякими дополнительными опциями, которые нужны лишь каждому десятому жертвуя общей производительностью мне кажется неправильным
Было бы неплохо это сделать отдельным модулем, а не модификацией.
Тогда и проблем бы меньше было.
Ну чтож тогда ведем логи ;)
А никто не делал вывод аваторов блогов в правом блоке?
Если используется другой запрос (для чочо нупь: функция в Topic.mapper.class.php), то с этим запросом следует забирать
blog_avatar
blog_avatar_type
user_profile_avatar
user_profile_avatar_type
Я попробовал изменить по наитию функцию function getAvatarPath
вот это
заменил на это
Вроде бы работает.
Поправте если че не так.
не нашлось
я его при замене просто пропустил это так и задумывалось? :) вроде работает
да я так и не понял как авотар блогу поставить?
чето ступил все работает) спасибо за хак!
только вот для персональных блогов показывается дефолтный аватар… не знаю как сделать проверку «персональный или коллективный блог».