Перейти к содержанию
Официальный форум поддержки Simpla

Товары скрытых категорий


Рекомендуемые сообщения

Как то не обращал внимания и наткнулся на не совсем логичную штуку. Товары скрытых категорий участвуют в выводе. Зачем функция отключения каталога, для того что бы убрать ее с менюшки?

Вообщем в каталоге решил этот момент следующим образом

// Выберем текущую категорию
if (!empty($category_url))
{
  $category = $this->categories->get_category((string)$category_url);
  if (empty($category) || (!$category->visible && empty($_SESSION['admin'])))
  return false;
  $this->design->assign('category', $category);

  $categories = $this->categories->get_categories();
  foreach($category->children as $id){
       if($categories[$id]->visible>0)
           $filter['category_id'][] = $id;
   }

}



Скрываем бренды которые относятся к товарам находящихся в скрытой категории.

// Выбираем бренды, они нужны нам в шаблоне	if(!empty($category)){   $brands = $this->brands->get_brands(array('category_id'=>$filter['category_id']));   $category->brands = $brands;}


Обновленная версия http://simpla.cms-update.ru/catalog/bytovaya-tehnika

Стандарт http://demo.simplacms.ru/catalog/bytovaya-tehnika - если в меню есть категория пылесосы - отключите ее в админке для того что бы увидеть разницу.
Ссылка на сообщение
Поделиться на другие сайты

Многие, как я уже понял, сталкивались. Где-то видел эту тему. Пикусов на этот вопрос ответил "скрыта категория, а не товар, значит нужно отобразить товар, а категорию скрать".
Ещё что-то говорил про то, что товар может принадлежать 2 категориям (сейчас не нашёл этой темы)

Ссылка на сообщение
Поделиться на другие сайты

Если товар принадлежит двум категориям при этом ода из категорий скрыта то товар будет отображаться в той категории которая доступна, а в той которая скрыта – не будет. это логично. Под функционалам "Скрыть категорию" - предполагается скрыть не только категорию но и товары, которые относятся к ней.

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

Получается - я отключаю каталог "пылесосы", захожу в категорию бытовая техника и что я там вижу? Я вижу пылесосы висящие в воздухе, их не найти в дочерних каталогах данной категории!!! И тут понимание логики Пикусова у меня заканчивается)))

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

kors, я немного не могу вьехать в то что вы пытаетесь сказать.

вот этой функцией мы отбираем только видимые категории (мы и без того одним запросов выбираем всю иерархию каталога - чего добру пропадать.)

$categories = $this->categories->get_categories();   foreach($category->children as $id){        if($categories[$id]->visible>0)            $filter['category_id'][] = $id;    }


, и в дальнейшем по отобранным идам делаем запрос к товарам. не знаю как еще объяснить... Не обязательно выборку по доступным категориям делать через sql запрос, хотя и там нет ну прям ничего сложного!!
Ссылка на сообщение
Поделиться на другие сайты

Зачем нам отправлять в запрос выборки товаров Иды скрытых категорий? Для того что бы дополнительным запросов убедится в том что они скрыты?))))

Ссылка на сообщение
Поделиться на другие сайты

жаль что Денис не прикрутил нечто подобное в последнюю версию...

Вывод товаров скрытой категории в каталоге - это не правильно...

Ссылка на сообщение
Поделиться на другие сайты

если товар присутствует в другой категории и она не скрыта то естественно надо показать этот товар!

Какова суть категории? Она необходима для того что бы прикрепить к ней товары. Если категория доступна - выводим товары, если категория не доступна - не выводим товары, если хотим что бы товары были не доступны - отключаем товары.

что в предложенном мною коде не логично или не соответствует функциональности - отключить категорию? Есть моменты которые надо доработать, но это уже ближе к истине нежели существующая функциональность.! Выбрать ID-ы скрытых категорий можно на стадии формирования дерева каталога, это ведь тоже не слоджно - добавить массив ID-ы - visible_ids

У нас есть пылесосы которые прикреплены к двум категориям, давайте посмотрим что получается с моим не совершенным кодом:
http://simpla.cms-update.ru/catalog/tehnika-dlya-uborki
http://simpla.cms-update.ru/catalog/bytovaya-tehnika - в этой категории есть пылесосы, и они отключены. И О БОЖЕ - товары не выводятся!!! Не вероятно, это надо осмыслить!

или вот

http://demo.simplacms.ru/catalog/bytovaya-tehnika если категория пылесосы отключена, то товары все равно выводятся. Это куда более сложно осмыслить... Я как покупатель перехожу в категорию бытовая техника, в меню вижу Миксеры, а в списке товаров Пылесосы Dyson. - Откинувшись на спинку кресла подумал - "а может они еще и кофе варят??", смотрю на ценник и понимаю - "за такую цену должны, не просто кофе варить но и в постель приносить"

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

Ссылка на сообщение
Поделиться на другие сайты

Можно открыть через хлебные крошки, если и дальше оставить этот баг таким какой он есть

http://simpla.cms-update.ru/products/pylesos-dyson-dc23-pink

Что вы видете в "хлебных крошках" данного товара? Мы там видим Техника для уборки. Вы ожидали увидеть там что то другое?

А ведь эта категрия действительно доступна! Блин как же так, все должно быть сложнее, мы же должны были увидеть там пылесосы! Вот блин...

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

if($pointers[$id]->visible>0){
$pointers[$id]->visible_children[] = $id;

if(isset($pointers[$pointers[$id]->parent_id]->visible_children))
$pointers[$pointers[$id]->parent_id]->visible_children = array_merge($pointers[$id]->visible_children, $pointers[$pointers[$id]->parent_id]->visible_children);
else
$pointers[$pointers[$id]->parent_id]->visible_children = $pointers[$id]->visible_children;
}



но в этом нет потребности потому что вот этим

$categories = $this->categories->get_categories();   foreach($category->children as $id){        if($categories[$id]->visible>0)            $filter['category_id'][] = $id;    }


мы делаем то же самое! У на уже есть иды дочерних категорий, нам осталось понять видимые они или нет
Ссылка на сообщение
Поделиться на другие сайты

Как я понял вы считаете что данный пример не может работать корректно. Можно конкретный пример подтверждающий это?

1. Создаю категорию Пылесосы2 в категории Пылесосы.
2. Создаю в категории Пылесосы2 товар ппппппппп.
2. Категорию Пылесосы2 включаю.
3. Категорию Пылесосы выключаю.


Этот пример только подтверждает недоработку этого момента и не опровергает работоспособность моего примера.

Тут осталось дополнить функцию - выключаем видимость всех дочерних категорий, если отключаем материнский каталог. Потому что это логично! Категория у нас ДРЕВОВИДНАЯ - отключая каталог мы должны отключить всех ее потомков. Иначе зачем нам такая структура каталога? Зачем нам дочерние категории если материнские на них не влияют?

Ссылка на сообщение
Поделиться на другие сайты



Вот посмотрите что получается - я потянул категория и все дочерние каталоги тоже потянулись! А почему? То есть по мнению автора логично перетянуть все дочерние категории вместе с материнским но не логично отключать видимость дочерних категорий если мы отключаем материнскую.

Бррр... я вообще теряю нить логики автора))))

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

Ссылка на сообщение
Поделиться на другие сайты

А это о чем? "подтверждающий это" - чему хотите подтверждение?
Может, это имеете в виду http://demo.simplacms.ru/catalog/pylesosy


А в чем тут проблема?

if(visible==0)  return false


В чем проблема дописать? Это еще один минус в копилку багов имеющейся функциональности.

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

получается нужна еще одна кнопочка

- выключить
- отключить видимость на сайте

Дааа... это глобально! На месяц работы!)))
Ссылка на сообщение
Поделиться на другие сайты

Вообщем не хочу продолжать данную тему. Я наглядно показал что на данный момент, с имеющейся функциональностью можно исправить этот косяк. В Симпле по мимо имеющихся багов, к сожалению присутствую и такие, которые вызваны ленью...

Ссылка на сообщение
Поделиться на другие сайты

Я думаю, что автор просто не подумал про все возможные варианты

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

Ссылка на сообщение
Поделиться на другие сайты

Глобально - не глобально, а работа тут нужна.

Конечно нужно, люди деньги иногда платят за симплу.

Если считаете, что за мизерное время можете легко поправить...

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

А разве кто в этом сомневался и просил это показать наглядно?

Если данная тема обсуждается, значит в этом есть потребность. Я так рад что сам автор не отписывается таким вот образом

- "Автор, у вас тут баг, он идет в разрез логике функциональности!"
- "А разве вас кто то просил покупать симплу? Я ведь все го лиш человек. Да, я знаю что я там не доработал, теперь и вы об этом знаете - давайте оставим все как есть..."

Ссылка на сообщение
Поделиться на другие сайты

Еще один способ сделать невидимыми товары из невидимой категории:
api/Products.php в функции get_products() изменить фильтр по видимости на:

if(!empty($filter['visible']))     $visible_filter = $this->db->placehold('AND p.visible=? AND (SELECT count(*) FROM __categories, __products_categories WHERE __categories.id = __products_categories.category_id AND __categories.visible=1 AND p.id=__products_categories.product_id) > 0', intval($filter['visible']));
Ссылка на сообщение
Поделиться на другие сайты

Я рассматриваю категории исключительно для структурирования товаров, ближайший аналог чтоб было понятно - это как "теги" товаров. Более того, у товара вообще может не быть категории.
Я могу принять аргумент в том что показ товаров из скрытой категории это не совсем логично, но и в вашем случае логика пропадает, если товары имеют по несколько категорий, часть из которых скрыты. Или даже если все категории скрыты - может быть мы хотим продавать товары по брендам, и категории нам вообще не нужны?

Ссылка на сообщение
Поделиться на другие сайты

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

Просто по моему если есть категория и к ней по какой то причине прикреплены товары а админ решил отключить категорию (возможно временно) - то в этом случае товары не должны выгружаться. Это соответствует функциональности - "Отключить категорию"

Ссылка на сообщение
Поделиться на другие сайты

Я конечно может чего не понимаю, но вот это

Wizard 6 Август
Зачем нам отправлять в запрос выборки товаров Иды скрытых категорий? Для того что бы дополнительным запросов убедится в том что они скрыты?))))

И вот это


pikusov 17:27
Еще один способ сделать невидимыми товары из невидимой категории:
api/Products.php в функции get_products() изменить фильтр по видимости на:

if(!empty($filter['visible']))
$visible_filter = $this->db->placehold('AND p.visible=? AND (SELECT count(*) FROM __categories, __products_categories WHERE __categories.id = __products_categories.category_id AND __categories.visible=1 AND p.id=__products_categories.product_id) > 0', intval($filter['visible']));

Не одна ли и таже тема? Для чего делать запрос по тем категориям которые скрыты?

Ссылка на сообщение
Поделиться на другие сайты

pikusov 18:04
Я рассматриваю категории исключительно для структурирования товаров, ближайший аналог чтоб было понятно - это как "теги" товаров. Более того, у товара вообще может не быть категории.



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

Дальше лучше, может мы и фильтры делать начнем древовидными?

Ссылка на сообщение
Поделиться на другие сайты
  • 4 года спустя...

Добрый день!

 

Версия Simpla 2.0.2

 

После исправления Wizard-a и pikusov-a, категории отключаются.

 

Но есть несколько замеченных ошибок, которые так же хотелось бы исправить.

 

Если выключить все имеющиеся категории, то на сайте:

 

1. По прямой ссылке на товар, страница товара открывается.

пример: http://demo.simplacms.ru/products/samsung-s5570-galaxy-mini

 

Как можно отключить так же доступность товара по прямой ссылке?

 

2. Отмеченные хитами товары отображаются на главной странице, если они находятся в отключеной категорий.

 

Как можно исправить данную ситуацию?

 

3. На сайте при поиске товара по названию или артикулу, высвечиваются выпадающий список предлагаемых товаров, если перейти на выбранный товар, он не доступен.

 

Как исправить, что при вводе названия товара или артикула, товар не высвечивался, если он находится в выключенной категории?

Изменено пользователем delcc
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...