После скрытия товара в админке он остаётся доступен с поиска по ссылке, как это исправить и скрывать товар полностью? Может кто то делал?
По какой ссылке? Он же скрыт.
Ааа, если в поиске набираешь товар, который скрыт?
Lora, всё верно, в категории он скрывается, но по прямой ссылке товар доступен и соответственно если он был проиндексирован то с поиска пс можно зайти, бросить товар в корзину и заказать.
Если выйти из аккаунта админа тоже доступен?)
Можно в шаблоне отвечающем за вывод товара обернуть всё в
{if $item.published}
то, что есть сейчас
{else}
«Этот товар временно недоступен»
{/if}
Не знаю, какой там флаг отвечает за сокрытие товара, возможэно published выставляется в ноль, возможно есть дополнительный hidden выставляется в 1 тогда как то так
{if $item.hidden}
«Этот товар временно недоступен»
{else}
то, что есть сейчас
{/if}
Поидее скрытый товар не должен показываться т.к. при поиске в запросе есть условие «AND con.published=1»
Но
Если этот товар был включен к показу, затем его кто то «нашел», далее админ его отключает, но товар все ровно будет в списке поиска.
Это происходит потому что поиск первоначально ищет в БД в таблице «cms_search» и выводит оттуда. Что бы избежать подобного в настройках в зачах крон есть «deleteOldResults Удаляет записи в кеше поиска старее 1 дня.» Посмотрите включен ли он и когда последний раз выполнялся.
Решение:
1) включить/настроить задачу в кроне + сократить интервал выполнения данной задачи
2) чистить вручную в настройках компонента «поиск»
спасибо всем попробую сейчас поиграться с шаблоном, да если выйти из аккаунта админа тоже доступен, он скрывается только в категории, но прямой урл доступен всем, тут дело не в поиске на сайте.
остаётся доступен с поиска по ссылке
Поэтому и написал про поиск.
А так если нужно скрыть, то делов на 1 строчку.
\components\shop\frontend.php строка ~333
//если товар не найден - ошибка if (!$item) { cmsCore::error404(); }
меняем на
//если товар не найден - ошибка if (!$item || !$item['published']) { cmsCore::error404(); }
и по прямой ссылке отключенного товара будет 404 страница
остаётся доступен с поиска по ссылке
Поэтому и написал про поиск.
А так если нужно скрыть, то делов на 1 строчку.
\components\shop\frontend.php строка ~333
//если товар не найден - ошибка if (!$item) { cmsCore::error404(); }меняем на
//если товар не найден - ошибка if (!$item || !$item['published']) { cmsCore::error404(); }и по прямой ссылке отключенного товара будет 404 страница
Это относится только к цифровым товарам
Этот код сработает для товаров если добавить после
//если товар не найден - ошибка if (!$item) { cmsCore::error404(); }
у меня это 278 строка. Но и админу будет показывать 404 страница.
Не знаю правильно или нет написал, но вот такой код сработал и админу теперь показывает страница с неопубликованным товаром.
if ((!$inUser->id) && (!$item || !$item['published'])) { cmsCore::error404(); }
Юрий, как только разберётесь что вам возвращает ваш же $inUser->id, сами ответите на свой же вопрос
Юрий, как только разберётесь что вам возвращает ваш же $inUser->id, сами ответите на свой же вопрос
… Проверьте доступность таких страниц под юзером, который не является админом
Ну этот то понятно, что всем зарегистрированным юзерам будет показывать. В моем случае не критично.
PS А по доброму моглибы и подсказать как правильно или хотя бы ткнуть где почитать.
Это относится только к цифровым товарам
нет
$inUser->id
отдает id авторизованного пользователя
$inUser->is_admin
Проверка на админа.
Но вроде как ТС не просил что бы админу показывалось, «скрывать товар полностью». Поэтому лишнего кода не писал)