Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Модули DIAFAN.CMS Поиск по сайту Поиск по артикулам на сайте


alex (bigsport) 05 января 2016 г.

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

//вывод артикула
if (!empty($result["id"]))
{
echo '<div class="shop_article">' . $this->_('ARTICLE') . ': <span class="shop_article_value">' . $result["id"] . '</span></div>';
}

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

Виталий NVGPRO (DIAFAN.CMS) 32405 января 2016 г.

По умолчанию в cms реализован поиск по артикулам, остается присвоить артикулам товара значения их id. На мой взгляд больше делать ничего не придётся.

Владимир (voha2006) 5905 января 2016 г., редакция 05 января 2016 г.

Проблема в том, что у многих товаров (например в магазине автозапчастей) указывается в артикуле каталожный номер номенклатуры для удобного поиска. Таким образом можно легко найти в базе ту или иную деталь по её заводскому номеру.

Виталий NVGPRO (DIAFAN.CMS) 32405 января 2016 г., редакция 05 января 2016 г.

Тогда можно создать характеристику (например, тип - строчка и назвать ее как Внутренний артикул). Туда и писать id, поиск по характеристикам тоже есть в cms

Владимир (voha2006) 5905 января 2016 г.

У меня товары, через 1С выгружаются, все ищет по артикулу Хотя артикул не характеристика. Видимо alex (bigsport), что то не до разобрал

alex (bigsport) 13 января 2016 г.

в каком файле это лучше сделать?

Виталий (DIAFAN.CMS) 62806 января 2016 г.

Галку "Искать по артикулу" в настройках магазина поставили?

alex (bigsport) 13 января 2016 г.

да

Андрей (koda) 2407 января 2016 г.

В свое время добавлял в функцию list_search файл shop.model.php
такой код
Код
if(!empty($_GET['article']))// поиск по артикулу
{

$count = DB::query_result(
"SELECT COUNT(DISTINCT s.id) FROM {shop} AS s "
. ($this->diafan->_users->role_id ? " LEFT JOIN {access} AS a ON a.element_id=s.id AND a.module_name='shop' AND a.element_type='element'" : "")
. " WHERE s.[act]='1' AND s.trash='0' and s.id=%d "
." AND s.date_start<=%d AND (s.date_finish=0 OR s.date_finish>=%d)",
intval($_GET['article']), $time, $time
);

Показать весь код
if($count>0)
$this->diafan->redirect(BASE_PATH.$this->diafan->_route->link($this->diafan->_site->id, intval($_GET['article']), 'shop'), '301');
else
$this->result["error"] = $this->diafan->_('Извините, ничего не найдено.', false);
return $this->result;
}

Поиск по артикулу включен и поиск по нему заменен на редирект в случае если такой идентификатор найден. Не готовый рецепт, но для начала достаточно.