На одном из сайтов, где используется универсальный каталог для вывода различных товаров и тд,
появилась необходимость сделатьвывод похожих при просмотре записи.
Необходимость этого очевидна — увеличивается глубина просмотра, удобство каталога
и как результат, увеличивается ПФ.
Штатными средствами инстанта, пока можно только организовать вывод модуля с
показом записей из выбранной рубрики, но это не всегда подходит.
Как работает:
— При формировании похожих записей в УК, учитывается их релевантность и список строится по убывающей.
— Записи берутся из той же рубрики в которой находится просматриваемая запись.
— Запись выводится с изображением и названием (при отсутствии изображения — заглушка)
— Поиск идет по словам из названия записи в соответствии с настройками.
Если при поиске похожих не нашлось, будет выведен случайный набор записей из той же рубрики.
Изменения необходимо сделать в 2 файлах:
в \components\catalog\frontend.php
найти строку (примерно 720я):
и сразу Перед ней добавить:
* в начале есть 2 простых настройки, это:
$limits = 5; // — кол-во выводимых похожих записей
$len = 3; // — минимальное кол-во букв в словах для поиска
далее открыть файл\templates\_default_\components\com_catalog_item.tpl
найти строку (в самом конце):
и перед ней добавить:
* {$item.recomend} — это сам блок с выводом похожих записей, его можно размещать
в шаблоне com_catalog_item.tpl в удобном месте.
Если все правки вносятся вручную, необходимо добавить стили в свой файл CSS:
** не забывайте делать резервные копии!
Демо можно посмотреть здесь:
раз — внизу выводятся похожие записи.
два — похожих не нашлось, выводятся рекомендуемые.
в других рубриках, так же можно посмотреть вывод.
появилась необходимость сделатьвывод похожих при просмотре записи.
Необходимость этого очевидна — увеличивается глубина просмотра, удобство каталога
и как результат, увеличивается ПФ.
Штатными средствами инстанта, пока можно только организовать вывод модуля с
показом записей из выбранной рубрики, но это не всегда подходит.
Как работает:
— При формировании похожих записей в УК, учитывается их релевантность и список строится по убывающей.
— Записи берутся из той же рубрики в которой находится просматриваемая запись.
— Запись выводится с изображением и названием (при отсутствии изображения — заглушка)
— Поиск идет по словам из названия записи в соответствии с настройками.
Если при поиске похожих не нашлось, будет выведен случайный набор записей из той же рубрики.
Изменения необходимо сделать в 2 файлах:
в \components\catalog\frontend.php
найти строку (примерно 720я):
cmsPage::initTemplate('components', 'com_catalog_item')->
///////////////// //////////////////KS////////////////// //////////////////// ///////////////// Выдаем похожие записи из рубрики по релевантности //////////////////// ///////// Настройки: /////////// $limits = 5; // - кол-во выводимых похожих записей $len = 3; // - минимальное кол-во букв в словах для поиска //////////////////////////////// $ti = $item['title']; $query = ''; $item['recomend'] = ''; foreach($matches[1] as $v) { } } if ($query) { $sql = "SELECT id, title, imageurl, price, MATCH (title) AGAINST ('$query' IN BOOLEAN MODE) as REL FROM cms_uc_items WHERE MATCH (title) AGAINST ('$query' IN BOOLEAN MODE) AND category_id = ".$item['category_id']." AND published=1 AND id != ".$item['id']." ORDER BY REL DESC LIMIT $limits"; $catres1 = $inDB->query($sql); if ($inDB->num_rows($catres1)>0){ $item['recomend'] .= ' <div class="ks1">Похожие в рубрике:</div>'; while($cat_hom = $inDB->fetch_assoc($catres1)){ $item['recomend'] .= '<div class="ks2">'; $item['recomend'] .= '<a href="/catalog/item'.$cat_hom['id'].'.html" title="'.$cat_hom['title'].'"> (цена: '.(($cat_hom['price']) ? $cat_hom['price'] : 'не указана').') '; if ($cat_hom['imageurl']){ $item['recomend'] .= '<img src="/images/catalog/small/'.$cat_hom['imageurl'].'" alt="'.$cat_hom['title'].'">'; } else { $item['recomend'] .= '<img src="/images/catalog/small/nopic.jpg" alt="'.$cat_hom['title'].'">'; } $item['recomend'] .= $cat_hom['title'].'</a>'; $item['recomend'] .= '</div>'; } } else { $sql = "SELECT id, title, imageurl, price FROM cms_uc_items WHERE category_id = ".$item['category_id']." AND published=1 AND id != ".$item['id']." ORDER BY RAND() LIMIT $limits"; $catres1 = $inDB->query($sql); if ($inDB->num_rows($catres1)>0){ $item['recomend'] .= ' <div class="ks1">Рекомендуем:</div>'; while($cat_hom = $inDB->fetch_assoc($catres1)){ $item['recomend'] .= '<div class="ks2">'; $item['recomend'] .= '<a href="/catalog/item'.$cat_hom['id'].'.html" title="'.$cat_hom['title'].'"> (цена: '.(($cat_hom['price']) ? $cat_hom['price'] : 'не указана').') '; if ($cat_hom['imageurl']){ $item['recomend'] .= '<img src="/images/catalog/small/'.$cat_hom['imageurl'].'" alt="'.$cat_hom['title'].'">'; } else { $item['recomend'] .= '<img src="/images/catalog/small/nopic.jpg" alt="'.$cat_hom['title'].'">'; } $item['recomend'] .= $cat_hom['title'].'</a>'; $item['recomend'] .= '</div>'; }}} } ///////////////// ////////////////////////////////////////////// //////////////////// ///////////////// ////////////////////////////////////////////// ////////////////////
$limits = 5; // — кол-во выводимых похожих записей
$len = 3; // — минимальное кол-во букв в словах для поиска
далее открыть файл\templates\_default_\components\com_catalog_item.tpl
найти строку (в самом конце):
{$item.plugins_output_after}
{$item.recomend}
в шаблоне com_catalog_item.tpl в удобном месте.
Если все правки вносятся вручную, необходимо добавить стили в свой файл CSS:
.ks1 { font-size:24px; padding-top:20px; } .ks2{ display:block; width:120px; height:171px; float:left; overflow:hidden; font-size:12px; font-style:italic; } .ks2 img{ width:110px; border-radius:4px; -moz-border-radius:4px; padding: 1px; border:solid 1px silver; margin-top:3px} .ks2 a{ padding-right:1px; }
** не забывайте делать резервные копии!
Демо можно посмотреть здесь:
раз — внизу выводятся похожие записи.
два — похожих не нашлось, выводятся рекомендуемые.
в других рубриках, так же можно посмотреть вывод.
Реклама #
omarov 8 лет назад #
Только 2 вопроса:
1. Можно сделать поиск по похожим со всех рубрик?
2. Можно вывести цену товара под названием?
В php слаб, сам не смог найти решение!
KS 6 лет назад #
строчка 17:
строчка 13:
строчки 27 и 49 :
$item['recomend'] .= '<a href="/catalog/item'.$cat_hom['id'].'.html" title="'.$cat_hom['title'].'"> (цена: '.(($cat_hom['price']) ? $cat_hom['price'] : 'не указана').') ';
ps . написано без проверки , возможны опечатки
KS 6 лет назад #
Юрий 6 лет назад #