Wizard Posted August 5, 2012 Report Share Posted August 5, 2012 Как то не обращал внимания и наткнулся на не совсем логичную штуку. Товары скрытых категорий участвуют в выводе. Зачем функция отключения каталога, для того что бы убрать ее с менюшки?Вообщем в каталоге решил этот момент следующим образом // Выберем текущую категорию 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 - если в меню есть категория пылесосы - отключите ее в админке для того что бы увидеть разницу. Quote Link to post Share on other sites
Novecheg Posted August 6, 2012 Report Share Posted August 6, 2012 Многие, как я уже понял, сталкивались. Где-то видел эту тему. Пикусов на этот вопрос ответил "скрыта категория, а не товар, значит нужно отобразить товар, а категорию скрать".Ещё что-то говорил про то, что товар может принадлежать 2 категориям (сейчас не нашёл этой темы) Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Если товар принадлежит двум категориям при этом ода из категорий скрыта то товар будет отображаться в той категории которая доступна, а в той которая скрыта – не будет. это логично. Под функционалам "Скрыть категорию" - предполагается скрыть не только категорию но и товары, которые относятся к ней.Если нам надо скрыть товар мы - отключаем товар. Если нам надо скрыть категорию мы отключаем категорию, и естественным образом предполагаем что товары которые к ней прикреплены не будет выгружаться в материнском каталоге.Получается - я отключаю каталог "пылесосы", захожу в категорию бытовая техника и что я там вижу? Я вижу пылесосы висящие в воздухе, их не найти в дочерних каталогах данной категории!!! И тут понимание логики Пикусова у меня заканчивается))) Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 а что с запросом не так? выложенный пример очень даже работает и ничего сложного в нем нет. Запрос к товарам приходит по ид категории - просто не отправляем ид-ы скрытых категорий. этого вполне достаточно. Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 kors, я немного не могу вьехать в то что вы пытаетесь сказать.вот этой функцией мы отбираем только видимые категории (мы и без того одним запросов выбираем всю иерархию каталога - чего добру пропадать.)$categories = $this->categories->get_categories(); foreach($category->children as $id){ if($categories[$id]->visible>0) $filter['category_id'][] = $id; }, и в дальнейшем по отобранным идам делаем запрос к товарам. не знаю как еще объяснить... Не обязательно выборку по доступным категориям делать через sql запрос, хотя и там нет ну прям ничего сложного!! Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Зачем нам отправлять в запрос выборки товаров Иды скрытых категорий? Для того что бы дополнительным запросов убедится в том что они скрыты?)))) Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 жаль что Денис не прикрутил нечто подобное в последнюю версию... Вывод товаров скрытой категории в каталоге - это не правильно... Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 если товар присутствует в другой категории и она не скрыта то естественно надо показать этот товар!Какова суть категории? Она необходима для того что бы прикрепить к ней товары. Если категория доступна - выводим товары, если категория не доступна - не выводим товары, если хотим что бы товары были не доступны - отключаем товары.что в предложенном мною коде не логично или не соответствует функциональности - отключить категорию? Есть моменты которые надо доработать, но это уже ближе к истине нежели существующая функциональность.! Выбрать ID-ы скрытых категорий можно на стадии формирования дерева каталога, это ведь тоже не слоджно - добавить массив ID-ы - visible_idsУ нас есть пылесосы которые прикреплены к двум категориям, давайте посмотрим что получается с моим не совершенным кодом:http://simpla.cms-update.ru/catalog/tehnika-dlya-uborkihttp://simpla.cms-update.ru/catalog/bytovaya-tehnika - в этой категории есть пылесосы, и они отключены. И О БОЖЕ - товары не выводятся!!! Не вероятно, это надо осмыслить!или вот http://demo.simplacms.ru/catalog/bytovaya-tehnika если категория пылесосы отключена, то товары все равно выводятся. Это куда более сложно осмыслить... Я как покупатель перехожу в категорию бытовая техника, в меню вижу Миксеры, а в списке товаров Пылесосы Dyson. - Откинувшись на спинку кресла подумал - "а может они еще и кофе варят??", смотрю на ценник и понимаю - "за такую цену должны, не просто кофе варить но и в постель приносить"Отличный способ удивлять покупателя, если не учесть что это всего лишь баг, и не желание автора cms исправить этот недостаток не сложными манипуляциями. Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Можно открыть через хлебные крошки, если и дальше оставить этот баг таким какой он есть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; }мы делаем то же самое! У на уже есть иды дочерних категорий, нам осталось понять видимые они или нет Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Как я понял вы считаете что данный пример не может работать корректно. Можно конкретный пример подтверждающий это? 1. Создаю категорию Пылесосы2 в категории Пылесосы.2. Создаю в категории Пылесосы2 товар ппппппппп.2. Категорию Пылесосы2 включаю.3. Категорию Пылесосы выключаю.Этот пример только подтверждает недоработку этого момента и не опровергает работоспособность моего примера. Тут осталось дополнить функцию - выключаем видимость всех дочерних категорий, если отключаем материнский каталог. Потому что это логично! Категория у нас ДРЕВОВИДНАЯ - отключая каталог мы должны отключить всех ее потомков. Иначе зачем нам такая структура каталога? Зачем нам дочерние категории если материнские на них не влияют? Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Вот посмотрите что получается - я потянул категория и все дочерние каталоги тоже потянулись! А почему? То есть по мнению автора логично перетянуть все дочерние категории вместе с материнским но не логично отключать видимость дочерних категорий если мы отключаем материнскую.Бррр... я вообще теряю нить логики автора))))Древовидная структура необходима для зависимости дочерних категорий. И все манипуляции связанные с категориями верхнего уровня должны отображаться на дочерних. Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 А это о чем? "подтверждающий это" - чему хотите подтверждение? Может, это имеете в виду http://demo.simplacms.ru/catalog/pylesosyА в чем тут проблема?if(visible==0) return falseВ чем проблема дописать? Это еще один минус в копилку багов имеющейся функциональности. Но все же в данном случае я бы дал администратору решать - выключить полностью каталог или оставить видимым для индексации, но не доступным на сайте. получается нужна еще одна кнопочка- выключить- отключить видимость на сайтеДааа... это глобально! На месяц работы!))) Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Вообщем не хочу продолжать данную тему. Я наглядно показал что на данный момент, с имеющейся функциональностью можно исправить этот косяк. В Симпле по мимо имеющихся багов, к сожалению присутствую и такие, которые вызваны ленью... Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Я думаю, что автор просто не подумал про все возможные вариантыя все же не предполагал что автор из тех людей которые не думают)) Ну ели это местами так, то эта тема создана для того что бы показать что есть недочеты и они с решаются. Quote Link to post Share on other sites
Wizard Posted August 6, 2012 Author Report Share Posted August 6, 2012 Глобально - не глобально, а работа тут нужна.Конечно нужно, люди деньги иногда платят за симплу.Если считаете, что за мизерное время можете легко поправить...Ничто не избавит человека от нелогичности и ошибок. Но ничто так не логично как бездействие зная о не наличии нелогичностей и ошибок, и нежелания их исправить.А разве кто в этом сомневался и просил это показать наглядно?Если данная тема обсуждается, значит в этом есть потребность. Я так рад что сам автор не отписывается таким вот образом - "Автор, у вас тут баг, он идет в разрез логике функциональности!"- "А разве вас кто то просил покупать симплу? Я ведь все го лиш человек. Да, я знаю что я там не доработал, теперь и вы об этом знаете - давайте оставим все как есть..." Quote Link to post Share on other sites
pikusov Posted August 7, 2012 Report Share Posted August 7, 2012 Еще один способ сделать невидимыми товары из невидимой категории: 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'])); Quote Link to post Share on other sites
Wizard Posted August 7, 2012 Author Report Share Posted August 7, 2012 вот бы один из этих способов включить в релиз.... Quote Link to post Share on other sites
pikusov Posted August 7, 2012 Report Share Posted August 7, 2012 Я рассматриваю категории исключительно для структурирования товаров, ближайший аналог чтоб было понятно - это как "теги" товаров. Более того, у товара вообще может не быть категории.Я могу принять аргумент в том что показ товаров из скрытой категории это не совсем логично, но и в вашем случае логика пропадает, если товары имеют по несколько категорий, часть из которых скрыты. Или даже если все категории скрыты - может быть мы хотим продавать товары по брендам, и категории нам вообще не нужны? Quote Link to post Share on other sites
Wizard Posted August 7, 2012 Author Report Share Posted August 7, 2012 Денис, бывает разные случаи, разные потребности. Будем мы продавать по брендам, нужны ли нам категории или нет и для чего мы скрываем категории в которым прикреплены товары - это дело индивидуальное. Все случае не перечислить и всего не учесть.Просто по моему если есть категория и к ней по какой то причине прикреплены товары а админ решил отключить категорию (возможно временно) - то в этом случае товары не должны выгружаться. Это соответствует функциональности - "Отключить категорию" Quote Link to post Share on other sites
Promo Posted August 7, 2012 Report Share Posted August 7, 2012 Я конечно может чего не понимаю, но вот это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']));Не одна ли и таже тема? Для чего делать запрос по тем категориям которые скрыты? Quote Link to post Share on other sites
Promo Posted August 7, 2012 Report Share Posted August 7, 2012 pikusov 18:04Я рассматриваю категории исключительно для структурирования товаров, ближайший аналог чтоб было понятно - это как "теги" товаров. Более того, у товара вообще может не быть категории.Я как не особо посвященный всеже считаю что теги это теги, категории это категории, как минимум мне как пользователю всегда казалось именно так!Дальше лучше, может мы и фильтры делать начнем древовидными? Quote Link to post Share on other sites
Skynet Posted October 28, 2016 Report Share Posted October 28, 2016 (edited) Добрый день! Версия Simpla 2.0.2 После исправления Wizard-a и pikusov-a, категории отключаются. Но есть несколько замеченных ошибок, которые так же хотелось бы исправить. Если выключить все имеющиеся категории, то на сайте: 1. По прямой ссылке на товар, страница товара открывается.пример: http://demo.simplacms.ru/products/samsung-s5570-galaxy-mini Как можно отключить так же доступность товара по прямой ссылке? 2. Отмеченные хитами товары отображаются на главной странице, если они находятся в отключеной категорий. Как можно исправить данную ситуацию? 3. На сайте при поиске товара по названию или артикулу, высвечиваются выпадающий список предлагаемых товаров, если перейти на выбранный товар, он не доступен. Как исправить, что при вводе названия товара или артикула, товар не высвечивался, если он находится в выключенной категории? Edited October 28, 2016 by delcc Quote Link to post Share on other sites
Skynet Posted October 30, 2016 Report Share Posted October 30, 2016 Автор скрипта интернет-магазина Simpla, можете пожалуйста помочь исправить данные проблемы? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.