-=NICROSS=- Posted August 16, 2016 Report Share Posted August 16, 2016 Есть каталог и товары только в подкатегориях. Категория 1 Подкатегория 1.1 Подкатегория 1.2Категория 2 Если в админке поменять местами подкатегории и расставить так: Категория 1 Подкатегория 1.2 Подкатегория 1.1Категория 2 то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1. Как сделать, чтобы товары сортировались согласно порядку подкатегорий? Quote Link to post Share on other sites
mishanya Posted August 16, 2016 Report Share Posted August 16, 2016 сделайте в api/Products.php новую сортировку по айди категории+позиция на подобии как реализованы другие сортировки. только если у товара будет 2 категории например, то брать первую. Quote Link to post Share on other sites
-=NICROSS=- Posted August 16, 2016 Author Report Share Posted August 16, 2016 сделайте в api/Products.php новую сортировку по айди категории+позиция на подобии как реализованы другие сортировки. только если у товара будет 2 категории например, то брать первую. Помоги, пожалуйста, сделать, а то не соображу как сделать сортировку по позиции. Quote Link to post Share on other sites
mishanya Posted August 17, 2016 Report Share Posted August 17, 2016 попробуйте в api/Products.php в ф-ю get_products(..) добавить после case 'created': $order = 'p.created DESC'; break; добавить case 'category': $order = '(SELECT category_id FROM __products_categories WHERE product_id = p.id LIMIT 1), p.position DESC'; break; и в view/ProductsView.php поменять $filter['sort'] = 'position'; на $filter['sort'] = 'category'; Quote Link to post Share on other sites
Kors Posted August 17, 2016 Report Share Posted August 17, 2016 По-моему, что предлагаемый метод далек от того, что просил ТС, то есть "сделать сортировку по позиции".1. В простых случаях (когда у каждого товара ОДНА категория), метод сортирует по ID категории.2. В сложных (когда встречаются товары, входящие в несколько категорий) будет вообще непредсказуемый хаос... Quote Link to post Share on other sites
mishanya Posted August 17, 2016 Report Share Posted August 17, 2016 (edited) как всегда только бы ляпнуть По-моему, что предлагаемый метод далек от того, что просил ТС, то есть "сделать сортировку по позиции". ТС просил сделать сортировку по категории + позиция. читаем внимательно. 1. В простых случаях (когда у каждого товара ОДНА категория), метод сортирует по ID категории. сортировка проходит вообще-то по двум полям, возможно стоит еще раз посмотреть. я указал два поля 2. В сложных (когда встречаются товары, входящие в несколько категорий) будет вообще непредсказуемый хаос... не уверен в ваших словах. при нескольких категориях будет выбираться всегда первая запись из базы с position 0; и по ней будет идти сортировка. в списке товаров. если человек находится в конкретной категории можно добавить еще вместо $filter['sort'] = 'category'; условие для категории в которой нет дочерних if(empty($category->children)) $filter['sort'] = 'position'; else $filter['sort'] = 'category'; знаете лучший способ, не вижу ваших сообщений с решением. Edited August 17, 2016 by mishanya Quote Link to post Share on other sites
Kors Posted August 17, 2016 Report Share Posted August 17, 2016 ТС просил сделать сортировку по категории + позиция. читаем внимательно. 1. В #1 ТС просил "чтобы товары сортировались согласно порядку подкатегорий". В #3 ТС просил "не соображу как сделать сортировку по позиции".2. Вы же написали "сортировку по категории". Это, строго говоря, бессмыслица.3. В реальности у Вас сортирует по ID подкатегорий, а не по порядку подкатегорий. сортировка проходит вообще-то по двум полям, возможно стоит еще раз посмотреть. я указал два поля Да, Вы указали ДВА поля$order = '(SELECT category_id FROM __products_categories WHERE product_id = p.id LIMIT 1), p.position DESC'; Первое поле - это именно ID категории, к которой относится товар (будем для простоты считать, что у товара ОДНА категория).Выходит, сортируется по ID категории, а внутри блоков с одинаковыми ID - по позициям. А ТС-то просил не по ID категории, а по порядку категорий. Если и после этого еще непонятно, прочтите еще раз #1, там ТС ведет речь про то, что если "в админке поменять местами подкатегории", то и результат сортировки должен измениться. А в Вашем методе - как ни меняй, будет все одинаково... Quote Link to post Share on other sites
mishanya Posted August 17, 2016 Report Share Posted August 17, 2016 (edited) Если и после этого еще непонятно, прочтите еще раз #1, там ТС ведет речь про то, что если "в админке поменять местами подкатегории", то и результат сортировки должен измениться. А в Вашем методе - как ни меняй, будет все одинаково... либо вы тупой либо я либо лыжи не едут. где тут написано что если изменить местами категории то результат должен поменяться? Если в админке поменять местами подкатегории и расставить так: ...то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1. Edited August 17, 2016 by mishanya Quote Link to post Share on other sites
Kosjak76 Posted August 18, 2016 Report Share Posted August 18, 2016 Вот тут соглашусь с корсом, именно в первом посте прямо написано, что при изменении ПОРЯДКА категорий должен меняться вывод, т.е. сортировать надо конкретно по position категории Quote Link to post Share on other sites
mishanya Posted August 18, 2016 Report Share Posted August 18, 2016 Вот тут соглашусь с корсом, именно в первом посте прямо написано, что при изменении ПОРЯДКА категорий должен меняться вывод, т.е. сортировать надо конкретно по position категории так выходит что нет, либо я чего-то не понимаю. ТС написал Если в админке поменять местами подкатегории и расставить так: то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1. что значит если поменять порядок категорий - изменятся позиции. при этом сортировка не должна меняться.и дальше написано, что нужно сортировать по порядку категорий, видимо до сортировки, то есть как создали их изначально. потому что выше написано что порядок не должен меняться Как сделать, чтобы товары сортировались согласно порядку подкатегорий? Quote Link to post Share on other sites
Kosjak76 Posted August 18, 2016 Report Share Posted August 18, 2016 Так ТС хочет, чтобы порядок сортировки товаров ПОМЕНЯЛСЯ при изменении позиций категорий в админке.Я так понял. Quote Link to post Share on other sites
Kors Posted August 18, 2016 Report Share Posted August 18, 2016 (edited) ТС, конечно, написал задание в #1 не образцово, но понять можно. У него сказано:Если в админке поменять местами подкатегории и расставить так: Категория 1 Подкатегория 1.2 Подкатегория 1.1Категория 2 то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1. Как сделать, чтобы товары сортировались согласно порядку подкатегорий? Он сначала сказал о текущем положении на его сайте "Если поменять местами подкатегории ... " (то есть изменить их порядок), то "на сайте порядок товаров какой был, такой и останется". А затем уже спросил "Как сделать, чтобы..."Вроде бы тут однозначно выходит - если сейчас не меняется, то значит, НАДО ЧТОБ МЕНЯЛОСЬ. и дальше написано, что нужно сортировать по порядку категорий, видимо до сортировки, то есть как создали их изначально. То есть сортировать по каким-то старым позициям, которая были в позапрошлом году?Даже если Вы и так поняли, несмотря на всю бессмысленность такой постановки вопроса, Ваше решение никак не делает такого, ибо сортирует по ID подкатегорий.Хорошо Вы сказали: либо вы тупой либо я либо лыжи не едут. Edited August 18, 2016 by Kors Quote Link to post Share on other sites
yr4ik Posted August 18, 2016 Report Share Posted August 18, 2016 Делаем как в посте #4 от Мишани, только в 1м действии добавляем это: case 'category': if(!empty($filter['category_id'])) $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position", (array)$filter['category_id']); break; Quote Link to post Share on other sites
Kors Posted August 19, 2016 Report Share Posted August 19, 2016 Делаем как в посте #4 от Мишани, только в 1м действии добавляем это: case 'category': if(!empty($filter['category_id'])) $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position", (array)$filter['category_id']); break; Шикарное решение! Просто великолепно! Quote Link to post Share on other sites
-=NICROSS=- Posted August 20, 2016 Author Report Share Posted August 20, 2016 Всем спасибо большое за участие!!!Все получилось!! Выкладываю рабочий вариант, может кому пригодится. 1. В api/Products.php в ф-ю get_products(..) добавить после case 'created': $order = 'p.created DESC'; break; добавить case 'category': if(!empty($filter['category_id'])) $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position", (array)$filter['category_id']); break; 2. В view/ProductsView.php заменить $filter['sort'] = 'position'; на $filter['sort'] = 'category'; 3. В файле products.tpl вашего шаблона (везде, где будет сортировка) добавить: <a {if $sort=='category'} class="selected"{/if} href="{url sort=category page=null}">Свой сортировка</a> Quote Link to post Share on other sites
Maksclub Posted August 21, 2016 Report Share Posted August 21, 2016 (edited) Всем спасибо большое за участие!!!Все получилось!! Выкладываю рабочий вариант, может кому пригодится. 1. В api/Products.php в ф-ю get_products(..) добавить после case 'created': $order = 'p.created DESC'; break; добавить case 'category': if(!empty($filter['category_id'])) $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position", (array)$filter['category_id']); break; 2. В view/ProductsView.php заменить $filter['sort'] = 'position'; на $filter['sort'] = 'category'; 3. В файле products.tpl вашего шаблона (везде, где будет сортировка) добавить: <a {if $sort=='category'} class="selected"{/if} href="{url sort=category page=null}">Свой сортировка</a> Спасибо пригодится. Есть пару задумок для такого дела, но я использовал виджет get-products, пока для меня он гибче Edited August 21, 2016 by Maksclub Quote Link to post Share on other sites
Марина Posted September 30, 2016 Report Share Posted September 30, 2016 Здравствуйте подскажите, что не так в шаблоне, почему не работает сортировка:{if $products} {if $products|count>0} <div class="sort-box clearfix"> <label class="label" for="sort">Сортировать по:</label> {if $sort=='price'}<span>умолчанию</span>{else}<a href="{url sort=position page=null}">умолчанию</a>{/if} {if $sort=='price'}<span>цене</span>{else}<a href="{url sort=position page=null}">цене</a>{/if} {if $sort=='name'}<span>названию</span>{else}<a href="{url sort=position page=null}">названию</a>{/if} <label class="select-sm"> <select id="sort"> <option {if $sort=='position'} selected="selected"{/if} value="{url sort=position page=null}">умолчанию</option> <option {if $sort=='price'} selected="selected"{/if} value="{url sort=price page=null}">цене</option> <option {if $sort=='name'} selected="selected"{/if} value="{url sort=name page=null}">названию</option> </select> </label> <div id="view" class="view"> <a href="url sort=position page=null" class="grid {if $view == 'grid'} current{/if}" data-view="grid">сеткой</a> <a href="#" class="list {if $view == 'list'} current{/if}" data-view="list">списком</a> <a href="#" class="table {if $view == 'table'} current{/if}" data-view="table">таблицей</a> </div> </div> {/if} Quote Link to post Share on other sites
Kors Posted September 30, 2016 Report Share Posted September 30, 2016 Здравствуйте подскажите, что не так в шаблоне, почему не работает сортировка: Что у Вас "не так в шаблоне", сказать невозможно, не зная Вашего шаблона.В приведенном фрагменте "не так" то, что открывается вначале два {if}, а в конце закрывается только один {/if}.Еще в приведенном фрагменте в части <select id="sort">...</select> нечто странное. Как будто просто копировали без особого понимания. Чтобы такое осмысленно работало, надо писать JS под этот фрагмент.Почему "не работает сортировка" тоже сказать сложно, не зная всех деталей того, что Вы натворили. Почини мне то, не скажу что... Quote Link to post Share on other sites
Марина Posted September 30, 2016 Report Share Posted September 30, 2016 Что у Вас "не так в шаблоне", сказать невозможно, не зная Вашего шаблона.В приведенном фрагменте "не так" то, что открывается вначале два {if}, а в конце закрывается только один {/if}.Еще в приведенном фрагменте в части <select id="sort">...</select> нечто странное. Как будто просто копировали без особого понимания. Чтобы такое осмысленно работало, надо писать JS под этот фрагмент.Почему "не работает сортировка" тоже сказать сложно, не зная всех деталей того, что Вы натворили. Почини мне то, не скажу что...Я ничего не творила, Молодой человек поставил шаблон, просила его доделать нормально, как было заявлено. Получила отказ. А еще мало того, начал воровать - сносить всё с сайта, пока мне служба поддержки не помогла и не заблокировала все входы.Вот такая печалька. а доработок теперь просто немеренно.... Quote Link to post Share on other sites
Kors Posted September 30, 2016 Report Share Posted September 30, 2016 Я ничего не творила, Молодой человек поставил шаблон, просила его доделать нормально, как было заявлено. Получила отказ. А еще мало того, начал воровать - сносить всё с сайта, пока мне служба поддержки не помогла и не заблокировала все входы. Вот такая печалька. а доработок теперь просто немеренно....Тогда так: Почему "не работает сортировка" - сказать сложно, не зная всех деталей того, что натворили Вы или "Молодой человек" - Ваш работник. Можно только посочувствовать. Если готовы оплачивать - обращайтесь... Quote Link to post Share on other sites
daramal Posted December 9, 2016 Report Share Posted December 9, 2016 Есть каталог и товары только в подкатегориях. Категория 1 Подкатегория 1.1 Подкатегория 1.2Категория 2 Если в админке поменять местами подкатегории и расставить так: Категория 1 Подкатегория 1.2 Подкатегория 1.1Категория 2 то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1. Как сделать, чтобы товары сортировались согласно порядку подкатегорий? Друзья,а как сделать так, чтоб при открытие Категория 1 отображались товары согласно порядку подкатегории а также и по позиции товаров в этих Подкатегориях?то есть Категория 1 (согласно позиции подкатегории)+(согласно позиции товаров) Подкатегория 1.1 (согласно позиции товаров) Подкатегория 1.2 (согласно позиции товаров) Согласно позиции подкатегории выше сделано, за что большое спасибо, а вот с позициями товаров ? Quote Link to post Share on other sites
yr4ik Posted December 9, 2016 Report Share Posted December 9, 2016 Друзья,а как сделать так, чтоб при открытие Категория 1 отображались товары согласно порядку подкатегории а также и по позиции товаров в этих Подкатегориях?то есть Категория 1 (согласно позиции подкатегории)+(согласно позиции товаров) Подкатегория 1.1 (согласно позиции товаров) Подкатегория 1.2 (согласно позиции товаров) Согласно позиции подкатегории выше сделано, за что большое спасибо, а вот с позициями товаров ? и в чем заключается логика? Как вы себе это представляете? Quote Link to post Share on other sites
daramal Posted December 9, 2016 Report Share Posted December 9, 2016 (edited) и в чем заключается логика? Как вы себе это представляете? внес изменения позиции товаров в подкотегории, например в Подкатегория 1.1, а также в Подкатегория 1.2. При нажатие главной Категория 1, чтоб сортировка категории, как ранее сделали, а также показала все товары с подкатегории:Подкатегория 1.1Подкатегория 1.2 но только в том порядке, в котором товары распределены также как и в Подкатегориях ранее. Надеюсь подробно объяснил?! Edited December 9, 2016 by DarAmal Quote Link to post Share on other sites
yr4ik Posted December 9, 2016 Report Share Posted December 9, 2016 То что вы описываете - есть в решении выше. Сначала в приорите категории затем позиции товаров Quote Link to post Share on other sites
daramal Posted December 9, 2016 Report Share Posted December 9, 2016 То что вы описываете - есть в решении выше. Сначала в приорите категории затем позиции товаров С категориями все отлично показывает. Но товары сортируются по ID, а не по позиции ((сколько меняешь позиции товаров в подкатегории, все равно выдает по ID 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.