скрыть товары по прямой ссылке instantshop

InstantCMS 1.X
#1 6 сентября 2021 в 10:18

После скрытия товара в админке он остаётся доступен с поиска по ссылке, как это исправить и скрывать товар полностью? Может кто то делал?

#2 6 сентября 2021 в 19:17

По какой ссылке? Он же скрыт. 

Ааа, если в поиске набираешь товар, который скрыт? 

#3 19 сентября 2021 в 13:28

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

#4 19 сентября 2021 в 19:04

Если выйти из аккаунта админа тоже доступен?)

Можно в шаблоне отвечающем за вывод товара обернуть всё в

 

{if $item.published}

то, что есть сейчас

{else}

«Этот товар временно недоступен»

{/if}

Не знаю, какой там флаг отвечает за сокрытие товара, возможэно published выставляется в ноль, возможно есть дополнительный hidden выставляется в 1 тогда как то так

{if $item.hidden}

«Этот товар временно недоступен»

{else}

то, что есть сейчас

{/if}

#5 20 сентября 2021 в 18:17

Поидее скрытый товар не должен показываться т.к. при поиске в запросе есть условие «AND con.published=1»

Но

Если этот товар был включен к показу, затем его кто то «нашел», далее админ его отключает, но товар все ровно будет в списке поиска.

Это происходит потому что поиск первоначально ищет в БД в таблице «cms_search» и выводит оттуда. Что бы избежать подобного в настройках в зачах крон есть «deleteOldResults Удаляет записи в кеше поиска старее 1 дня.» Посмотрите включен ли он и когда последний раз выполнялся.

Решение:

1) включить/настроить задачу в кроне + сократить интервал выполнения данной задачи

2) чистить вручную в настройках компонента «поиск»

 

 

#6 30 сентября 2021 в 10:21

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

#7 2 октября 2021 в 02:51

остаётся доступен с поиска по ссылке

Поэтому и написал про поиск.

А так если нужно скрыть, то делов на 1 строчку.

\components\shop\frontend.php строка ~333

  1. //если товар не найден - ошибка
  2. if (!$item) { cmsCore::error404(); }

меняем на 

  1. //если товар не найден - ошибка
  2. if (!$item || !$item['published']) { cmsCore::error404(); }

и по прямой ссылке отключенного товара будет 404 страница

#8 2 октября 2021 в 15:22

остаётся доступен с поиска по ссылке

Поэтому и написал про поиск.

А так если нужно скрыть, то делов на 1 строчку.

\components\shop\frontend.php строка ~333

  1. //если товар не найден - ошибка
  2. if (!$item) { cmsCore::error404(); }

меняем на 

  1. //если товар не найден - ошибка
  2. if (!$item || !$item['published']) { cmsCore::error404(); }

и по прямой ссылке отключенного товара будет 404 страница

AtlantisWeb

Это относится только к цифровым товарам

Этот код сработает для товаров если добавить после

  1. //если товар не найден - ошибка
  2. if (!$item) { cmsCore::error404(); }

у меня это 278 строка. Но и админу будет показывать 404 страница.

 

Не знаю правильно или нет написал, но вот такой код сработал и админу теперь показывает страница с неопубликованным товаром.

  1. if ((!$inUser->id) && (!$item || !$item['published'])) { cmsCore::error404(); }
#9 2 октября 2021 в 17:02

 Юрий, как только разберётесь что вам возвращает ваш же $inUser->id, сами ответите на свой же вопрос

… Проверьте доступность таких страниц под юзером, который не является админом
#10 2 октября 2021 в 17:48

 Юрий, как только разберётесь что вам возвращает ваш же $inUser->id, сами ответите на свой же вопрос

… Проверьте доступность таких страниц под юзером, который не является админом
Олег Васильевич я

Ну этот то понятно, что всем зарегистрированным юзерам будет показывать. В моем случае не критично.

PS А по доброму моглибы и подсказать как правильно или хотя бы ткнуть где почитать.

#11 2 октября 2021 в 23:28

Это относится только к цифровым товарам

нет

  1. $inUser->id

отдает id авторизованного пользователя

  1. $inUser->is_admin

Проверка на админа.

Но вроде как ТС не просил что бы админу показывалось, «скрывать товар полностью». Поэтому лишнего кода не писал)

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