Компоненты Поиск

Реализация независимых друг от друга поисковиков

 
Посетитель
small user social cms
Сообщений: 51
Решаю вот, такую задачку: Независимые друг от друга поисковики.. Один всегда ищет только в статьях.. Другой ищет только в каталоге.. Третий ищет исключительно только в блогах..

Каким образом можно осуществить такое ?
Редактировалось: 5 раз (Последний: 21 июля 2014 в 01:12)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
Наверное надо клонировать модуль поиска и каждый "настроить" на свой раздел.

Но т.к. родной настройки нет, взял это слово в кавычки.
Скорее всего, "настроить" можно в шаблоне модуля скрыв и выставив нужные input name в состояние checked.
Редактировалось: 1 раз (Последний: 21 июля 2014 в 01:39)
Реклама
cms
Посетитель
small user social cms
Сообщений: 51
Sonat:
Скорее всего, "настроить" можно в шаблоне модуля скрыв и выставив нужные input name в состояние checked.
Пробовал уже.. Добавил в код условие, чтоб поставился чек только на нужное (здесь это "3D-модели"):
Код PHP:
  1. <div class="search_select_component">
  2. {foreach key=tid item=enable_component from=$enable_components}
  3. <label id="l_{$enable_component.link}" class="selected">
  4. <input name="from_component[]" onclick="toggleInput('l_{$enable_component.link}')" type="checkbox" value="{$enable_component.link}" {if $enable_component.title=="3D-Модели"} checked="checked"{/if}/>
  5. {$enable_component.title}
  6. </label>
  7. {/foreach}
  8. </div>
Работает.. Чек бокс на поиске проставился где надо.. Но! Жмем поиск, и попадаем на страничку компонета "Поиск", где уже все по другому.. Чек-боксы стоят все..
Ну чтож.. правим компонент.. Код для поиска по компоненту "3D-Модели":
Код PHP:
  1. {foreach key=tid item=enable_component from=$enable_components}
  2. {if $col==1} <tr> {/if}
  3. <td width="">
  4. <label id="l_{$enable_component.link}" {if in_array($enable_component.link, $from_component) || !$from_component}class="selected"{/if}>
  5. <input name="from_component[]" onclick="toggleInput('l_{$enable_component.link}')" type="checkbox" value="{$enable_component.link}" {if in_array($enable_component.link, $from_component) || !$from_component} {if $enable_component.title=="3D-Модели"} checked="checked"{/if} {/if} />
  6. {$enable_component.title}
  7. </label>
  8. </td>
  9. {if $col==5} </tr> {assign var="col" value="1"} {else} {math equation="x + 1" x=$col assign="col"} {/if}
  10. {/foreach}
Ну теперь, вроде все работает, но вот вопрос.. Как быть с поиском по остальным компонентам.. Например по статьям ? Блогам ?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
Я бы сделал еще проще: в файле \modules\mod_search.tpl там где вывод чекбоксов вставить только один нужный удалив всю таблицу чекбоксов.
Пример для фотогалереи:
Код HTML:
  1. <input name="from_component[]" type="checkbox" value="photos" checked="checked">
У другого модуля (копии) вместо таблицы уже другой чекбокс - для например для статья
Код HTML:
  1. <input name="from_component[]" type="checkbox" value="content" checked="checked">
и т.д.

Каждый из модулей выводится только в нужном компоненте и ищет только в нужной части.
Посетитель
small user social cms
Сообщений: 51
Согласен, этот вариант проще.. Но с модулями, вроде, все в порядке.. Мой вариант хоть и сложнее, но работает.. Нужный чекбокс стоит там, где надо, ненужные все отключены..
Вопрос в другом.. После поиска он перенаправляет с модуля на компонент.. Я вот думаю, может быть как-то, при переходе от модуля к результатам поиска, передать поисковому компоненту переменную со значением value выбранного чекбокса ? Ведь модуль передает компоненту слово! Значит, это возможно! Но как?
Т.к. я почти полный нуб в пхп и в архитектуре инстанта, я не могу понять как можно обмениваться переменными...
Редактировалось: 2 раз (Последний: 21 июля 2014 в 12:59)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1147
freet:
Я вот думаю, может быть как-то, при переходе от модуля к результатам поиска, передать поисковому компоненту переменную со значением value выбранного чекбокса ? Ведь модуль передает компоненту слово! Значит, это возможно! Но как?
Так вроде то что я написал это и делает.
Т.е. после нажатия в модуле на кнопку "найти". В компоненте поиска выдается результат по тому компоненту, где был указан чекбокс. И в настройках для повторного поиска чекбоксы стоят так как ему и передал модуль
Проверил на первом примере - после поиска по альбомам. Чекбокс с результате поиска стоял только на фото, остальные отключены.
Редактировалось: 1 раз (Последний: 21 июля 2014 в 13:44)
Посетитель
small user social cms
Сообщений: 51
Получилось.. Ура, господа! Правда, пришлось пошаманить с tpl... Sonat, спасибо.. Подсказки помогли..
Решение получилось следующее:
Компонент поиска править не пришлось.. Скопирован модуль module.tpl..
Две его копии названы module_search_content.tpl и module_search_catalog.tpl..
В файлах, вместо {$mod.body} добавлен код из mod_search.tpl.
Код:
Код PHP:
  1. {foreach key=tid item=enable_component from=$enable_components}
  2. <label id="l_{$enable_component.link}" class="selected">
  3. <input name="from_component[]" onclick="toggleInput('l_{$enable_component.link}')" type="checkbox" value="{$enable_component.link}"
  4. checked="checked" />
  5. {$enable_component.title}
  6. </label>
  7. {/foreach}
в файле module_search_content.tpl заменен на
Код HTML:
  1. <label id="l_content" class="selected" style="display:none;"><input name="from_component[]" type="checkbox" value="content" checked="checked">Статьи</label>
а в файле module_search_catalog.tpl заменен на
Код HTML:
  1. <label id="l_catalog" class="selected" style="display:none;"><input name="from_component[]" type="checkbox" value="catalog" checked="checked">Статьи</label>
Далее, в админке были созданы два дубликата модуля "Поиск", названы "Поиск в статьях" и "Поиск в каталоге", добавлены префиксы (у меня один поиск выводится в сайдбаре, а другой в топе, разные стили) searchcont_ и searchcatalog_, в Шаблон модуля выбран соответствующий ему шаблон..

Все.. готово.. как и требовалось, появились два независимых поисковика.. так-же можно сделать третий, четвертый, сколько нужно..

Спасибо большое за поддержку!
Посетитель
small user social cms
Сообщений: 51
Задача решена, тема закрыта..
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: