Настройка Типовой динамической страницы для поиска только товаров магазина.
Код Типовой динамической страницы "Поиск"
<?php
if (Core::moduleIsActive('search'))
{
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
$Search_Controller_Show = new Search_Controller_Show($oSite);
$Search_Controller_Show
->limit(Core_Page::instance()->libParams['itemsOnPage'])
->parseUrl()
->len(Core_Page::instance()->libParams['maxlen'])
->query(Core_Array::getGet('text'))
->structure(Core_Page::instance()->structure);
//
// 'module_id' => 3 - здесь указываем id интернет-магазина
//
$Search_Controller_Show->modules(
array(
3 =>array(array('module_id' => 3, 'module_value_type' => 2))
)
);
$Search_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName(Core_Page::instance()->libParams['xsl'])
)
->show();
}
else
{
?>
<h1>Поиск</h1>
<p>Функционал недоступен, приобретите более старшую редакцию.</p>
<p>Модуль «<a href="http://www.hostcms.ru/hostcms/modules/search/">Поиск по сайту</a>» доступен в редакциях «<a href="http://www.hostcms.ru/hostcms/editions/corporation/">Корпорация</a>», «<a
href="http://www.hostcms.ru/hostcms/editions/business/">Бизнес</a>», «<a
href="http://www.hostcms.ru/hostcms/editions/small-business/">Малый бизнес</a>» и «<a
href="http://www.hostcms.ru/hostcms/editions/my-site/">Мой сайт</a>».</p>
<?php
}Class Search_Controller_Show
Доступные методы:
Доступные методы:
- query($query) поисковый запрос
- inner($inner) поиск по внутренним данным, например, Helpdesk. По умолчанию 0 - внешние данные, 1 - внутренние данные
- modules($modules) массив условий поиска по модулям
- itemsForbiddenTags(array('description')) массив тегов связанных элементов, запрещенных к передаче в генерируемый XML
- offset($offset) смещение, с которого выводить информационные элементы, по умолчанию 0
- limit($limit) количество выводимых элементов
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
$Search_Controller_Show = new Search_Controller_Show($oSite);
$Search_Controller_Show
->limit(Core_Page::instance()->libParams['result_on_page'])
->parseUrl()
->len(Core_Page::instance()->libParams['maxlen'])
->query(Core_Array::getGet('text'));
$Search_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName(Core_Page::instance()->libParams['xsl'])
)
->show();Массив условий поиска по модулям позволяет ограничить область поиска по модулям и типам индексируемого контента. Ключами массива являются номера модулей, а значениями — массив идентификаторов элементов. Номера модулей:
0 – Структура сайта;
1 – Информационные системы;
2 – Форум;
3 – Интернет-магазин;
4 – HelpDesk.
Пример поиска по информационной системе с номером 5 и 7, а также по магазину с номером 17.
$Search_Controller_Show
->modules(
array(
1 => array (5, 7),
3 => array (17)
)
);Пример поиска по информационной системе с номером 5 и 7 (с дополнительным условием поиска только по информационным элементам), а также по магазину с номером 17.
$Search_Controller_Show
->modules(
array(
1 => array (5,
array('module_id' => 7, 'module_value_type' => 2)),
3 => array (17))
);При указании массива с дополнительными условиями он может принимать следующие аргументы:
module_id — целое число, ID сущности, например, магазин с кодом 7
module_value_type — целое число или массив, ID типа, например, 1 - группа, 2 - элемент (или товар)
module_value_id — целое число или массив, ID сущности указанного типа (например, ID товара или группы) при поиске только по ним.