Вывести в поиске Картинки. Возможно ли?

#1 11 апреля 2014 в 09:58
Обратил внимание, что при поиске, сайт выдает заголовок и описание и ссылку на материал.

Возможно ли еще вывести и картинку, если например поиск по инстантшопу, универсальному кталогу, новостям? Это было бы удобно и наглядно для пользователя.
#2 11 апреля 2014 в 10:54
Код поиска, думаю r2 не будет против, т.к этот файл отвечает только за поиск

  1. <?php
  2. /*********************************************************************************************/
  3. // //
  4. // InstantCMS v1.6 (c) 2010 FREEWARE //
  5. // http://instantcms.ru/, info@instantcms.ru //
  6. // //
  7. // written by Vladimir E. Obukhov, 2007-2010 //
  8. // //
  9. /*********************************************************************************************/
  10.  
  11. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  12.  
  13. function search_shop($query, $look){ //query sends here already prepared and secured!
  14.  
  15. $inCore = cmsCore::getInstance();
  16. $inDB = cmsDatabase::getInstance();
  17.  
  18. global $_LANG;
  19.  
  20. //BUILD SQL QUERY
  21. $sql = "SELECT DISTINCT con.*,
  22. cat.title cat_title,
  23. cat.seolink as cat_seolink
  24. FROM cms_shop_items con, cms_shop_cats cat
  25. WHERE MATCH(con.title, con.shortdesc, con.description) AGAINST ('$query' IN BOOLEAN MODE) AND con.category_id = cat.id AND con.published=1";
  26.  
  27. //QUERY TO GET TOTAL RESULTS COUNT
  28. $result = $inDB->query($sql);
  29. $found= $inDB->num_rows($result);
  30.  
  31. if ($found){
  32. while($item = $inDB->fetch_assoc($result)){
  33. //build params
  34. $inCore->loadLanguage('components/shop');
  35. $link = "/shop/".$item['seolink'].".html";
  36. $place = $_LANG['SHOP'];
  37. $placelink = "/shop/".$item['cat_seolink'];
  38. $item['cat_title'] = mysql_real_escape_string($item['cat_title']);
  39. //include item to search results
  40. if (!dbRowsCount('cms_search', "session_id='".session_id()."' AND link='$link'")){
  41. $sql = "INSERT INTO cms_search (`id`, `session_id`, `title`, `link`, `place`, `placelink`)
  42. VALUES ('', '".session_id()."', '".$item['title']."', '$link', '$place', '$placelink')";
  43. $inDB->query($sql);
  44. }
  45. }
  46. }
  47.  
  48. $query = str_replace('+', '', $query);
  49. $query = str_replace(' ', '', $query);
  50. $query = str_replace('*', '%', $query);
  51.  
  52. //BUILD SQL QUERY
  53. $sql = "SELECT cat.title cat_title,
  54. cat.seolink as cat_seolink
  55. FROM cms_shop_cats cat
  56. WHERE cat.title LIKE '%{$query}%'";
  57.  
  58. //QUERY TO GET TOTAL RESULTS COUNT
  59. $result = $inDB->query($sql);
  60. $found = $inDB->num_rows($result);
  61.  
  62. if ($found){
  63. while($item = $inDB->fetch_assoc($result)){
  64. //build params
  65. $inCore->loadLanguage('components/shop');
  66. $link = "/shop/".$item['cat_seolink'];
  67. $place = $_LANG['SHOP'];
  68. $placelink = "/shop/".$item['cat_seolink'];
  69. $item['cat_title'] = mysql_real_escape_string($item['cat_title']);
  70. //include item to search results
  71. $sql = "INSERT INTO cms_search (`id`, `session_id`, `title`, `link`, `place`, `placelink`)
  72. VALUES ('', '".session_id()."', '".$item['cat_title']."', '$link', '$place', '$placelink')";
  73. $inDB->query($sql);
  74. }
  75. }
  76.  
  77. return;
  78. }
  79.  
  80.  
  81. ?>
#3 14 апреля 2014 в 18:24
ребят, может кто помочь?
#4 19 июля 2014 в 06:31
Я так понимаю, задача слишком сложна для ее полноценной реализации.
Может возможен упрощенный вариант? Например только картинки элементов универсального каталога.
Как это можно сделать?
#5 19 июля 2014 в 09:19
Все возможно сделать. Просто нужно доработать вывод компонента search и доработать каждый поисковый файл компонента.
#6 21 июля 2014 в 02:38

Просто нужно доработать вывод компонента search и доработать каждый поисковый файл компонента.

maxisoft
хм… здорово! а можно подробней, как доработать? Что нужно добавить в код?
#7 22 июля 2014 в 13:00
Пожалуйста… вопрос для профи… как вывести картинки в результатах поиска?
#8 22 июля 2014 в 13:39

Пожалуйста… вопрос для профи… как вывести картинки в результатах поиска?

freet
тоже очень интересно
#9 22 июля 2014 в 14:36
Мой пост НЕ решение!
Картинки можно вывести:
редактируется 2 файла
\system\controllers\search\model.php
templates\default\controllers\search\index.tpl.php
Пытался выбрать к примеру по полю 'photo' — для новостей. Выборка по значению поля происходит, место для картинки выставляется.

НО! Такое поле имеется только в таблице cms_con_news — то есть только для новостей.
В пейджах такого поля нет, в постах это поле называется Picture и содержание мальца другое.

Поэтому при включенном поиске во всех возможных (настройки компонента поиска в админке) — я получаю ошибку про не найденное поле в таблице.
#10 22 июля 2014 в 14:38
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)
";
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.