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

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

Есть каталог и товары только в подкатегориях.

 

Категория 1

    Подкатегория 1.1

    Подкатегория 1.2

Категория 2

 

Если в админке поменять местами подкатегории и расставить так:

 

Категория 1

    Подкатегория 1.2

    Подкатегория 1.1

Категория 2

 

то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1.

 

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

 

 

 

 

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

сделайте в api/Products.php новую сортировку по айди категории+позиция на подобии как реализованы другие сортировки. только если у товара будет 2 категории например, то брать первую.

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

сделайте в api/Products.php новую сортировку по айди категории+позиция на подобии как реализованы другие сортировки. только если у товара будет 2 категории например, то брать первую.

 

Помоги, пожалуйста, сделать, а то не соображу как сделать сортировку по позиции.

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

попробуйте в 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';
Ссылка на сообщение
Поделиться на другие сайты

По-моему, что предлагаемый метод далек от того, что просил ТС, то есть "сделать сортировку по позиции".

1. В простых случаях (когда у каждого товара ОДНА категория), метод сортирует по ID категории.

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

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

как всегда только бы ляпнуть

 

По-моему, что предлагаемый метод далек от того, что просил ТС, то есть "сделать сортировку по позиции".

 

ТС просил сделать сортировку по категории + позиция. читаем внимательно.

 

 

 1. В простых случаях (когда у каждого товара ОДНА категория), метод сортирует по ID категории.

 

сортировка проходит вообще-то по двум полям, возможно стоит еще раз посмотреть. я указал два поля

 

 

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

 

не уверен в ваших словах. при нескольких категориях будет выбираться всегда первая запись из базы с position 0; и по ней будет идти сортировка. в списке товаров. если человек находится в конкретной категории можно добавить еще вместо 

 

$filter['sort'] = 'category';

 

условие для категории в которой нет дочерних

if(empty($category->children))
  $filter['sort'] = 'position';
else
  $filter['sort'] = 'category';

знаете лучший способ, не вижу ваших сообщений с решением.

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

ТС просил сделать сортировку по категории + позиция. читаем внимательно.

 

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, там ТС ведет речь про то, что если "в админке поменять местами подкатегории", то и результат сортировки должен измениться. А в Вашем методе - как ни меняй,  будет все одинаково...

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

 Если и после этого еще непонятно, прочтите еще раз #1, там ТС ведет речь про то, что если "в админке поменять местами подкатегории", то и результат сортировки должен измениться. А в Вашем методе - как ни меняй,  будет все одинаково...

 

либо вы тупой либо я либо лыжи не едут.

 

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

 

 

 Если в админке поменять местами подкатегории и расставить так:

 

 ...

то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1.

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

Вот тут соглашусь с корсом, именно в первом посте прямо написано, что при изменении ПОРЯДКА категорий должен меняться вывод, т.е. сортировать надо конкретно по position категории

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

Вот тут соглашусь с корсом, именно в первом посте прямо написано, что при изменении ПОРЯДКА категорий должен меняться вывод, т.е. сортировать надо конкретно по position категории

 

так выходит что нет, либо я чего-то не понимаю. ТС написал

 

 

Если в админке поменять местами подкатегории и расставить так:

 

то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1.

 

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

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

 

 

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

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

Так ТС хочет, чтобы порядок сортировки товаров ПОМЕНЯЛСЯ при изменении позиций категорий в админке.

Я так понял.

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

ТС, конечно, написал задание в #1 не образцово, но понять можно.
 
У него сказано:

Если в админке поменять местами подкатегории и расставить так:
 
Категория 1
    Подкатегория 1.2
    Подкатегория 1.1
Категория 2
 
то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1.
 
Как сделать, чтобы товары сортировались согласно порядку подкатегорий?

 
Он сначала сказал о текущем положении на его сайте "Если поменять местами подкатегории ... " (то есть изменить их порядок), то "на сайте порядок товаров какой был, такой и останется". А затем уже спросил "Как сделать, чтобы..."
Вроде бы тут однозначно выходит - если сейчас не меняется, то значит, НАДО ЧТОБ МЕНЯЛОСЬ.
 

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

 

То есть сортировать по каким-то старым позициям, которая были в позапрошлом году?
Даже если Вы и так поняли, несмотря на всю бессмысленность такой постановки вопроса, Ваше решение никак не делает такого, ибо сортирует по ID подкатегорий.
Хорошо Вы сказали:

 

либо вы тупой либо я либо лыжи не едут.

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

Делаем как в посте #4 от Мишани, только в 1м действии добавляем это:

case 'category':
     if(!empty($filter['category_id']))
      $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position",  (array)$filter['category_id']);
    break;
Ссылка на сообщение
Поделиться на другие сайты

 

Делаем как в посте #4 от Мишани, только в 1м действии добавляем это:

case 'category':
     if(!empty($filter['category_id']))
      $order = $this->db->placehold("FIELD(pc.category_id, ?@), p.position",  (array)$filter['category_id']);
    break;

 

Шикарное решение! Просто великолепно!

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

Всем спасибо большое за участие!!!
Все получилось!!
 
Выкладываю рабочий вариант, может кому пригодится.
 
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>
Ссылка на сообщение
Поделиться на другие сайты

 

Всем спасибо большое за участие!!!

Все получилось!!

 

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

 

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, пока для меня он гибче Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Здравствуйте подскажите, что не так в шаблоне, почему не работает сортировка:

{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} 
Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте подскажите, что не так в шаблоне, почему не работает сортировка:

 

Что у Вас "не так в шаблоне", сказать невозможно, не зная Вашего шаблона.

В приведенном фрагменте "не так" то, что открывается вначале два {if}, а в конце закрывается только один {/if}.

Еще в приведенном фрагменте в части <select id="sort">...</select> нечто странное. Как будто просто копировали без особого понимания. Чтобы такое осмысленно работало, надо писать JS под этот фрагмент.

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

 

Почини мне то, не скажу что...

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

Что у Вас "не так в шаблоне", сказать невозможно, не зная Вашего шаблона.

В приведенном фрагменте "не так" то, что открывается вначале два {if}, а в конце закрывается только один {/if}.

Еще в приведенном фрагменте в части <select id="sort">...</select> нечто странное. Как будто просто копировали без особого понимания. Чтобы такое осмысленно работало, надо писать JS под этот фрагмент.

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

 

Почини мне то, не скажу что...

Я ничего не творила, Молодой человек поставил шаблон, просила его доделать нормально, как было заявлено. Получила отказ. А еще мало того, начал воровать - сносить всё с сайта, пока мне служба поддержки не помогла и не заблокировала все входы.

Вот такая печалька. а доработок теперь просто немеренно....

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

Я ничего не творила, Молодой человек поставил шаблон, просила его доделать нормально, как было заявлено. Получила отказ. А еще мало того, начал воровать - сносить всё с сайта, пока мне служба поддержки не помогла и не заблокировала все входы.

Вот такая печалька. а доработок теперь просто немеренно....

Тогда так:

Почему "не работает сортировка" - сказать сложно, не зная всех деталей того, что натворили Вы или "Молодой человек" - Ваш работник.

 

Можно только посочувствовать.

 

Если готовы оплачивать - обращайтесь...

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

Есть каталог и товары только в подкатегориях.

 

Категория 1

    Подкатегория 1.1

    Подкатегория 1.2

Категория 2

 

Если в админке поменять местами подкатегории и расставить так:

 

Категория 1

    Подкатегория 1.2

    Подкатегория 1.1

Категория 2

 

то на сайте порядок товаров какой был, такой и останется, то есть заходя в Категория 1, сначала будут идти товары Подкатегория 1.1.

 

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

 

Друзья,

а как сделать так, чтоб при открытие Категория 1 отображались товары согласно порядку подкатегории а также и по позиции товаров в этих Подкатегориях?

то есть

 

Категория 1 (согласно позиции подкатегории)+(согласно позиции товаров)

    Подкатегория 1.1 (согласно позиции товаров)

    Подкатегория 1.2 (согласно позиции товаров)

 

Согласно позиции подкатегории выше сделано, за что большое спасибо, а вот с позициями товаров ?

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

Друзья,

а как сделать так, чтоб при открытие Категория 1 отображались товары согласно порядку подкатегории а также и по позиции товаров в этих Подкатегориях?

то есть

 

Категория 1 (согласно позиции подкатегории)+(согласно позиции товаров)

    Подкатегория 1.1 (согласно позиции товаров)

    Подкатегория 1.2 (согласно позиции товаров)

 

Согласно позиции подкатегории выше сделано, за что большое спасибо, а вот с позициями товаров ?

 

и в чем заключается логика? Как вы себе это представляете?

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

и в чем заключается логика? Как вы себе это представляете?

 

внес изменения позиции товаров в подкотегории, например в Подкатегория 1.1, а также в Подкатегория 1.2.

 

При нажатие главной Категория 1, чтоб сортировка категории, как ранее сделали, а также показала все товары с подкатегории:

Подкатегория 1.1

Подкатегория 1.2

 

но только в том порядке, в котором товары распределены также как и в Подкатегориях ранее.

 

Надеюсь подробно объяснил?!

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

То что вы описываете - есть в решении выше. Сначала в приорите категории затем позиции товаров

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

То что вы описываете - есть в решении выше. Сначала в приорите категории затем позиции товаров

 

С категориями все отлично показывает. Но товары сортируются по ID, а не по позиции ((

сколько меняешь позиции товаров в подкатегории, все равно выдает по ID

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

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

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

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

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

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

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

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

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

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