Блок "Похожие топики" для livestreet 0.31
29
Доброго времени суток. Решил тут на своем сайте сделать блок — «Похожие статьи». Посмотрел поиском, но нашел только платный аналог. Поэтому сделал свой блок на основе тегов.
Работает он достаточно просто, по тегам определяет похожие статьи из других блогов, упорядочивает по рейтингу и выдает пользователю. При этом учитываются все
теги к текущей статье. К сожалению веса тегов в данной версии блока не учитываются. Думаю сделать это в следующей версии.
Данный блок использует кеширование, он кеширует результаты поиска на час. Поэтому большой нагрузки на сервер не создаст. Так же он не использует ajax запросов, что делает его содержимое доступное поисковикам, и улучшает внутреннюю перелинковку сайта. Его работу можно оценить на примере вот этой .
Что бы его установить, нужно скачать архив с блоком . Распаковать содержимое архива в нужные папки: config и templates/language/, classes в одноименные папку, а содержание templates\skin\myequipment в папку со своим скином.
Найти в нем строку
$this->Viewer_AddBlocks('right',array('stream','tags','blogs'));
И поменять на
$this->Viewer_AddBlocks('right',array('stream','tags','blogs','similarArticles'));
И все наслаждайтесь.
UPD:
После того, как все распаковали нужно поменять файл \classes\actions\ActionBlog.class.php.
В нем нужно найти строчки
/**
* Обрабатываем добавление коммента
*/
И заменить на
$this->Viewer_AddBlock('right','SimilarArticles');
/**
* Обрабатываем добавление коммента
*/
UPD2:
Теперь достаточно скопировать файлы в нужные директории.
- +21
- 18 февраля 2010, 21:22
- empirik
Спасибо!
Eсли вдруг у кого не заработает, то нужно файлик: block.similarArticles.tpl
переименовать в block.SimilarArticles.tpl. Написать с большой буквы S.
Eсли вдруг у кого не заработает, то нужно файлик: block.similarArticles.tpl
переименовать в block.SimilarArticles.tpl. Написать с большой буквы S.
Большое спасибо! Не подскажите, как добиться, чтобы в списке отображались статьи, начиная с последней по дате создания? Сейчас, насколько я понимаю, отображается с наиболее старой похожей статьи. Попробовал перевернуть массив с топиками с помощью array_reverse, но, наверное, не то делаю, т.к. эффекта не получил.
Такого даже на хабре нет. Только сегодня наблюдал как там мне предлагались похожие статьи 2008 года, а я недоумевал — неужели за 2009 год никто про что-то подобное не писал. По моему так намного лучше — случайные устаревшие статьи выводятся наверх.
Странноватый модуль. С одной стороны, вещь нужная, с другой — он не сортирует по убыванию рейтинга :-)
«SIMILAR_TOPICS_ORDER_BY»,«rating»
«SIMILAR_TOPICS_ORDER_BY_DIRECTION»,1
А ещё как его в самый верх зафигачить — над всякими тегами и прочими блоками? :-)
«SIMILAR_TOPICS_ORDER_BY»,«rating»
«SIMILAR_TOPICS_ORDER_BY_DIRECTION»,1
А ещё как его в самый верх зафигачить — над всякими тегами и прочими блоками? :-)

- TonyClifton
- 19 февраля 2010, 21:19
- ↓
Нашёл причину. В файле Similararticles.mapper.php надо заменить:
на
function getTopicIdForTags($tags,
$limit,
$orderBy="rating",
$desc=0)
на

- TonyClifton
- 19 февраля 2010, 21:28
- ↑
- ↓
Случайно запостилось. Ещё раз. Надо заменить в файле \\classes\\modules\\similararticles\\mapper\\Similararticles.mapper.php:
на
А потом в том же файле ниже заменить:
на
function getTopicIdForTags($tags,
$limit,
$orderBy="rating",
$orderBy=0)
на
function getTopicIdForTags($tags,
$limit,
$orderBy="rating",
$desc=0)
А потом в том же файле ниже заменить:
if($orderBy==1)
{
$sql.=" desc ";
}на
if($desc==1)
{
$sql.=" desc ";
}

- TonyClifton
- 19 февраля 2010, 21:33
- ↑
- ↓
Спасибо. Ещё вопрос: а как так выходит, что когда я открываю один топик, у меня появляется семь похожих записей. Потом открываю одну из этих записей — и там похожая только одна :-) Односторонняя какая-то похожесть.

- TonyClifton
- 19 февраля 2010, 21:45
- ↑
- ↓
К сожалению, без изменения стандартного движка ни как, нужно в класс LsViewer добавлять новый метод.
Я ничего не ставил. Всё работает — кроме того, о чём я написал выше.

- TonyClifton
- 19 февраля 2010, 21:34
- ↑
- ↓
А, я понял, о чём вы :-) Но ошибочку с сортировкой поправьте всё-таки.

- TonyClifton
- 19 февраля 2010, 21:36
- ↑
- ↓
Решил проблему переноса блока «наверх» следующим образом:
В файле с хуком:
заменил на:
и в темплэйте, в файле sidebar.tpl добавил в начале:
В файле с хуком:
$this->Viewer_AddBlock('right','SimilarArticles');заменил на:
$this->Viewer_AddBlock('right_top','SimilarArticles');и в темплэйте, в файле sidebar.tpl добавил в начале:
{if isset($aBlocks.right_top)}
{foreach from=$aBlocks.right_top item=aBlock}
{if $aBlock.type=='block'}
{insert name="block" block=`$aBlock.name` params=`$aBlock.params`}
{/if}
{if $aBlock.type=='template'}
{include file=`$aBlock.name` params=`$aBlock.params`}
{/if}
{/foreach}
{/if}
Спасибо, все работает. Но один ламерский вопрос :)
Как сделать, чтобы этот блок был не последним, а первым? Короче, как поменять его позицию, а то не нашел в ваших файлах такого(((
Как сделать, чтобы этот блок был не последним, а первым? Короче, как поменять его позицию, а то не нашел в ваших файлах такого(((
А может подскажите как всё это завести с модулем «».
Поставил. Ругается
Fatal error: Argument 1 passed to LsSimilararticles::getSimilarForTopicByTags() must not be null, called in /var/www/mysite/data/www/mysite.ru/classes/modules/similararticles/Similararticles.class.php on line 41 and defined in /var/www/mysite/data/www/mysite.ru/classes/modules/similararticles/Similararticles.class.php on line 55
Поставил. Ругается
Fatal error: Argument 1 passed to LsSimilararticles::getSimilarForTopicByTags() must not be null, called in /var/www/mysite/data/www/mysite.ru/classes/modules/similararticles/Similararticles.class.php on line 41 and defined in /var/www/mysite/data/www/mysite.ru/classes/modules/similararticles/Similararticles.class.php on line 55
т.е. в коде просто
<div class="tl"><div class="tr"></div></div>
<div class="cl"><div class="cr">
<h1></h1>
<div class="block-content">
<ul class="stream-content">
</ul>
<div class="right"><a href="http://myequipment.ru" target="_blank"></a></div> </div>
</div></div>
<div class="bl"><div class="br"></div></div>
Тестю
надо еще readme.txt добавить
И еще — после подключения модуля вижу только ошибку:
надо еще readme.txt добавить
Name: Livestreet Similar topics
Author: Stepan Tanasiychuk
Homepage: http://stfalcon.com/
Version: 0.1
Requires: 0.4.0
Description: >Выводит список похожих записей.
Delegate:И еще — после подключения модуля вижу только ошибку:
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/block.similar_topics.tpl) is not within the allowed path(s): (/var/www/vhosts/tuningster.ru/httpdocs:/tmp) in /var/www/vhosts/tuningster.ru/httpdocs/engine/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1656
Fatal error: Uncaught exception 'Exception' with message 'Can not find the block`s template: /block.similar_topics.tpl' in /var/www/vhosts/tuningster.ru/httpdocs/engine/modules/viewer/Viewer.class.php:481 Stack trace: #0 /var/www/vhosts/tuningster.ru/httpdocs/engine/modules/viewer/Viewer.class.php(412): LsViewer->DefineTypeBlock('/block.similar_...', NULL) #1 /var/www/vhosts/tuningster.ru/httpdocs/engine/classes/Engine.class.php(339) : eval()'d code(1): LsViewer->AddBlock('right', '/block.similar_...', NULL, 300) #2 /var/www/vhosts/tuningster.ru/httpdocs/engine/classes/Engine.class.php(339): eval() #3 /var/www/vhosts/tuningster.ru/httpdocs/engine/classes/Hook.class.php(35): Engine->_CallModule('Viewer_AddBlock', Array) #4 [internal function]: Hook->__call('Viewer_AddBlock', Array) #5 /var/www/vhosts/tuningster.ru/httpdocs/plugins/similar/classes/hooks/HookSimilar.class.php(16): PluginSimilar_HookSimilar->Viewer_AddBlock('right', '/block.similar_...', NULL, 300) #6 /var/www/vhosts/tuningster.ru/httpdocs/engine/modules/hook in /var/www/vhosts/tuningster.ru/httpdocs/engine/modules/viewer/Viewer.class.php on line 481
Такс, с ошибкой разобрался. Сменил имя шаблона на new.
Как подключить модуль к шаблону? Выводить куда то надо руками?
Как подключить модуль к шаблону? Выводить куда то надо руками?
В LS 0.31 установил вместе с менеджером блогов, ошибок не выдает, справа появляется блог
«Похожие статьи», но он пустой, нет даже ссылки на сайт автора.
Кто-нибудь может подсказать в чем дело?
«Похожие статьи», но он пустой, нет даже ссылки на сайт автора.
Кто-нибудь может подсказать в чем дело?
Поставил обновленную версию, вот что выдаёт:
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 '' at line 16 at /home/***/www/***/public_html/plugins/similar/classes/modules/similar/mapper/Similar.mapper.class.php line 57
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 '' at line 16 [query] => SELECT topic_tag.topic_id, topic.topic_rating, COUNT(*) AS `tags_count` FROM `prefix_topic_tag` AS topic_tag, `prefix_topic` AS topic WHERE topic.topic_publish = 1 AND topic_tag.topic_id = topic.topic_id AND topic_tag_text IN ('Нью-Йорк', 'свадьба') AND topic.topic_lang = '' GROUP BY topic_tag.topic_id ORDER BY tags_count DESC, topic.topic_rating LIMIT 0, [context] => /home/***/www/***/public_html/plugins/similar/classes/modules/similar/mapper/Similar.mapper.class.php line 57 )
Комментарии (64)
RSS свернуть / развернуть