Обратил внимание, что при поиске, сайт выдает заголовок и описание и ссылку на материал.
Возможно ли еще вывести и картинку, если например поиск по инстантшопу, универсальному кталогу, новостям? Это было бы удобно и наглядно для пользователя.
#1
11 апреля 2014 в 09:58
#2
11 апреля 2014 в 10:54
Код поиска, думаю r2 не будет против, т.к этот файл отвечает только за поиск
<?php /*********************************************************************************************/ // // // InstantCMS v1.6 (c) 2010 FREEWARE // // http://instantcms.ru/, info@instantcms.ru // // // // written by Vladimir E. Obukhov, 2007-2010 // // // /*********************************************************************************************/ function search_shop($query, $look){ //query sends here already prepared and secured! $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; //BUILD SQL QUERY $sql = "SELECT DISTINCT con.*, cat.title cat_title, cat.seolink as cat_seolink FROM cms_shop_items con, cms_shop_cats cat WHERE MATCH(con.title, con.shortdesc, con.description) AGAINST ('$query' IN BOOLEAN MODE) AND con.category_id = cat.id AND con.published=1"; //QUERY TO GET TOTAL RESULTS COUNT $result = $inDB->query($sql); $found= $inDB->num_rows($result); if ($found){ while($item = $inDB->fetch_assoc($result)){ //build params $inCore->loadLanguage('components/shop'); $link = "/shop/".$item['seolink'].".html"; $place = $_LANG['SHOP']; $placelink = "/shop/".$item['cat_seolink']; //include item to search results $sql = "INSERT INTO cms_search (`id`, `session_id`, `title`, `link`, `place`, `placelink`) $inDB->query($sql); } } } //BUILD SQL QUERY $sql = "SELECT cat.title cat_title, cat.seolink as cat_seolink FROM cms_shop_cats cat WHERE cat.title LIKE '%{$query}%'"; //QUERY TO GET TOTAL RESULTS COUNT $result = $inDB->query($sql); $found = $inDB->num_rows($result); if ($found){ while($item = $inDB->fetch_assoc($result)){ //build params $inCore->loadLanguage('components/shop'); $link = "/shop/".$item['cat_seolink']; $place = $_LANG['SHOP']; $placelink = "/shop/".$item['cat_seolink']; //include item to search results $sql = "INSERT INTO cms_search (`id`, `session_id`, `title`, `link`, `place`, `placelink`) $inDB->query($sql); } } return; } ?>
#3
14 апреля 2014 в 18:24
ребят, может кто помочь?
Сегодня в 08:15
#4
19 июля 2014 в 06:31
Я так понимаю, задача слишком сложна для ее полноценной реализации.
Может возможен упрощенный вариант? Например только картинки элементов универсального каталога.
Как это можно сделать?
Может возможен упрощенный вариант? Например только картинки элементов универсального каталога.
Как это можно сделать?
#5
19 июля 2014 в 09:19
Все возможно сделать. Просто нужно доработать вывод компонента search и доработать каждый поисковый файл компонента.
#6
21 июля 2014 в 02:38
хм… здорово! а можно подробней, как доработать? Что нужно добавить в код?Просто нужно доработать вывод компонента search и доработать каждый поисковый файл компонента.
#7
22 июля 2014 в 13:00
Пожалуйста… вопрос для профи… как вывести картинки в результатах поиска?
#8
22 июля 2014 в 13:39
тоже очень интересноПожалуйста… вопрос для профи… как вывести картинки в результатах поиска?
#9
22 июля 2014 в 14:36
Мой пост НЕ решение!
Картинки можно вывести:
редактируется 2 файла
\system\controllers\search\model.php
templates\default\controllers\search\index.tpl.php
Пытался выбрать к примеру по полю 'photo' — для новостей. Выборка по значению поля происходит, место для картинки выставляется.
НО! Такое поле имеется только в таблице cms_con_news — то есть только для новостей.
В пейджах такого поля нет, в постах это поле называется Picture и содержание мальца другое.
Поэтому при включенном поиске во всех возможных (настройки компонента поиска в админке) — я получаю ошибку про не найденное поле в таблице.
Картинки можно вывести:
редактируется 2 файла
\system\controllers\search\model.php
templates\default\controllers\search\index.tpl.php
Пытался выбрать к примеру по полю 'photo' — для новостей. Выборка по значению поля происходит, место для картинки выставляется.
НО! Такое поле имеется только в таблице cms_con_news — то есть только для новостей.
В пейджах такого поля нет, в постах это поле называется Picture и содержание мальца другое.
Поэтому при включенном поиске во всех возможных (настройки компонента поиска в админке) — я получаю ошибку про не найденное поле в таблице.
model.php
public function getSearchSQL($table_name, $fields){
$query = $this->getFullTextQuery();
$sql_fields = implode(', ', $fields);
$sql = "SELECT id, slug, date_pub, photo, {$sql_fields}
FROM cms_{$table_name}
WHERE MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE)
";
$query = $this->getFullTextQuery();
$sql_fields = implode(', ', $fields);
$sql = "SELECT id, slug, date_pub, photo, {$sql_fields}
FROM cms_{$table_name}
WHERE MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE)
";
#11
27 июля 2014 в 00:10