Товар не попадает на первую страницу в динамический список

Собственно вопрос прост: при формировании динамического списка с сортировкой по дате создания товара, товар не попадает в этот список. Собственно товар создан давно, но в БД у него подправлена дата создания на сегодняшнюю

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

create_datetime

нужно подправить где то еще? А может и вообще другим путем пойти для достижения данной цели?

1 ответ

  • 2
    replicant 21 июля 2021 17:34 #

    Если правильно помню (могу ошибаться, т.к. что-то могло измениться) как это работает то суть в следующем. Та штука, что называется сортировкой по Дате добавления, на деле является сортировкой по ID.

    Т.к. id имеет свойство auto increment т.е. автоматического приращения на +1 с каждой новой записью в таблице товаров, то для любой каждой более новой даты и id увеличивается тоже.

    Именно поэтому правкой даты вы ничего не добьетесь.

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

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

    • +1

      Надо ж... Похоже действительно всё так. Беспредел какой-то.. ))

      • +1
        replicant replicant 21 июля 2021 18:08 #

        Немного побуду телепатом и попробую угадать цель. Допустим есть список "Новинки" на главной или в ином месте сайта, где новые товары какое-то время болтаются, а затем сползают ниже при появлении следующих более свежих. Тут возникает потребность что-то старенькое вытащить из чулана и подкинуть как новинку. Причины могут быть разные и тут не обязательно что-то "нечестно". Модификация товара обновилась или какие-то ещё параметры поменялись, но так, что сама товарная позиция по факту осталась та же самая. Даже просто товара очень давно не было и его забыли, но тут раз и он появился. Относительно определенной группы посетителей сайта в рамках выбранного временного периода это будет Новинка. Поэтому заводить в систему новый товар не хочется и часто не нужно ибо поломается картинка по статистике этого товара. Решили просто этот приподнять повыше, но не ломая общую динамику списка. Идея рабочая вполне.

        • +1

          Да, я увидел что цель в теме топика описана, поэтому отредактировал немного ответ.

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

          • +1
            replicant replicant 21 июля 2021 18:21 #

            Сами по себе динамические списки неплохи, если в небольших дозах (скажем показать 10-12 хитов продаж или новинок) с четким пониманием происходящего за кадром, чтобы не создать по недосмотру ненужную нагрузку.

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

            • +1

              Кстати, посмотрел, и получается что в динамических списках не отсортировать по приоритету товара (плагин Приоритет товаров). А в динамической категории - да, можно.

              • +1
                replicant replicant 21 июля 2021 18:28 #

                По приоритету там сортируется нормально. Сначала в плагине создается правило сортировки, а потом оно применяется к выбранным спискам. Правила сортировки плагина перечисляются ниже системных в настройках списка под словом "Приоритет".  Приоритет идёт вообще первым параметром в таблице shop_set в колонку rule (у меня например вот так для новинок)

                priority desc,IF(p.count > 0 OR p.count IS NULL, 1, 0) DESC ,p.create_datetime desc, 1

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

                • +1

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

                • +1

                  Констатация факта, не более =)

                  Если открыть браузер, открыть раздел товаров, нажать кнопку создания нового списка, выбрать тип списка Фильтр, потом закрыть диалог создания списка, то сколько потом не открывай настройки уже существующего динамического списка, в перечне параметров не будет приоритета товаров пока не зарефрешишь страницу =)    Вот такая "особенность" =)

        • +1
          Дмитрий Петренко Дмитрий Петренко 22 июля 2021 09:00 #

          Именно так и есть, телепатия сильная штука, особенно когда есть опыт ))

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите