Виджет поиска только по заданному типу контента. Возможно?

InstantCMS 2.X
#1 30 июля 2019 в 00:13
Сейчас поиск ищет по всем типам контента, которые заданы в админке. Возможно ли ограничить у виджета поиск по заданному типу контента? Т.е на сайте два виджета. Один ищет по всем типам, который разрешены в админке, а второй только по одному.
#2 31 июля 2019 в 10:58
/blogs/dopolnenija-ot-instantcms2-ru/vidzhet-poisk-iz-bsh.html без бутстрап не работает, быстрый поиск /blogs/dopolnenija-ot-instantcms2-ru/instantcms-2-vidzhet-bystryi-poisk-ajax-poisk.html#comment_110433. Оптимальнее быстрый поиск + перечень типов контента для выбора, по идее будет меньше обращений к базе данных, что уменьшит нагрузку и тд.
#3 31 июля 2019 в 21:55
Аякс это хорошо, но актуально именно, чтобы искал в одном типе контента, а не во всех. Для всех есть стандартный виджет поиска.

Может есть еще решение?
#4 31 июля 2019 в 22:12
Def, есть способ через подключение
яндекс.поиск
с указанием категории

или гугл.поиск

в любом случае — эти поисковики лучше ищут по сайту, чем встроенный поиск
#5 31 июля 2019 в 22:52


Def, есть способ через подключение
яндекс.поиск
с указанием категории

или гугл.поиск

в любом случае — эти поисковики лучше ищут по сайту, чем встроенный поиск

@iKrym

это не лучший вариант. Внутренний поиск очень хорошо сейчас ищет, даже производные от искомого слова. Не хватает в коробке у виджета выбора типов контента и категорий в них.
#6 1 августа 2019 в 00:04
Это очень просто сделать.

1. Дублируем файл /system/controllers/search/actions/index.php в ту же директорию и называем, например, onetype.php, открываем его и меняем название класса на actionSearchOnetype, т.е. слово Index меняем на Onetype (как название самого файла, но только с большой буквы). Далее ищем вот этот кусок
  1. // выключено?
  2. if (!empty($this->options['types']) &&
  3. !in_array($sources_name, $this->options['types'])) {
  4. continue;
  5. }
  6.  
и меняем его на это
  1. if ($sources_name!='news') continue; //вместо 'news' ваш тип контента
Т.е. старый кусок пропускал выключенные типы контента, а мы сделали, чтобы пропускались все, кроме нашего.

2. Дублируем файл шаблона /templates/default/controllers/search/widgets/search/search.tpl.php и назовем его search2.tpl.php, открываем файл и
  1. href_to('search');
меняем на
  1. href_to('search/onetype');
3. Д вашем втором виджете выбираете созданный шаблон и он будет искать по вашему только типу контента
#7 1 августа 2019 в 08:54


Это очень просто сделать.

1. Дублируем файл /system/controllers/search/actions/index.php в ту же директорию и называем, например, onetype.php, открываем его и меняем название класса на actionSearchOnetype, т.е. слово Index меняем на Onetype (как название самого файла, но только с большой буквы). Далее ищем вот этот кусок

  1. // выключено?
  2. if (!empty($this->options['types']) &&
  3. !in_array($sources_name, $this->options['types'])) {
  4. continue;
  5. }
  6.  
и меняем его на это
  1. if ($sources_name!='news') continue; //вместо 'news' ваш тип контента
Т.е. старый кусок пропускал выключенные типы контента, а мы сделали, чтобы пропускались все, кроме нашего.

2. Дублируем файл шаблона /templates/default/controllers/search/widgets/search/search.tpl.php и назовем его search2.tpl.php, открываем файл и
  1. href_to('search');
меняем на
  1. href_to('search/onetype');
3. Д вашем втором виджете выбираете созданный шаблон и он будет искать по вашему только типу контента

islyaeFF

Вот за эту подсказку Огромнейшая благодарность! v
#8 1 августа 2019 в 22:16
Для коробки отличное решение, много правок вредно для психики…
#9 1 августа 2019 в 23:45


много правок вредно для психики ...

@noname

Один раз сделали и забыли. Это не затрагивает файлы движка и при обновлениях ничего не слетит
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.