По сути, я создал категорию «Продукты в продаже», в которую я хотел бы автоматически включить все продукты из моего каталога, к которым была применена специальная цена (через Каталог> Управление продуктами). Я хотел бы, чтобы страница сохранила многоуровневую навигацию и возможности сортировки , которые содержит стандартная страница категории Magento.
Кажется, что это то, что было бы полезно большинству пользователей Magento, и я удивлен, что это не входит в базовую функциональность.
Я перепробовал более десятка ответов Stack Exchange, сообщений в блогах и форумах, и пока ничего не получалось. У кого-нибудь есть программное решение для этого?
=== РЕДАКТИРОВАТЬ ===
Основываясь на критике @ pspahn в комментариях ниже, я решил использовать альтернативный метод достижения аналогичной функциональности. С учетом вышесказанного, если вы заинтересованы в продолжении этой линии, @ sander-mangel описывает метод, который кажется вполне осуществимым.
источник
Ответы:
Самый простой способ сделать это - создать собственное расширение, которое работает с Observer и Cronjob.
Создайте категорию для продажи товаров. Таким образом, вы можете использовать обычные функции Magento во внешнем интерфейсе, такие как многоуровневая навигация и т. Д.
Для автоматического получения товаров в этой категории мы будем использовать наблюдателя и cronjob. Наблюдатель будет наблюдать за
catalog_product_save_after
событием, которое запускается при сохранении продукта в бэкэнде. Когда это произойдет , вы можете проверитьspecial_price
,special_price_from
дату иspecial_date_to
дату , чтобы определить , если вам нужно поместить продукт в категорию продаж или удалить его оттуда.Cronjob там для специальных от и до даты. Каждую ночь после полуночи сначала очищайте категорию продаж всех продуктов. Затем используйте коллекцию, чтобы получить все продукты, которые имеют специальную цену и попадают в специальные с и до даты. Если это так, переместите их в эту категорию продаж.
источник
Решение, предлагаемое @SanderMangel, на высшем уровне. Я могу помочь расширить это с помощью некоторого кода, который я в настоящее время использую в своем модуле «Автоматическая / Динамическая категория продуктов», который имеет возможность выполнять правила категорий продуктов на специальных
Код настраивает стандартную коллекцию продуктов, чтобы получать все продукты с установленной специальной ценой в день запуска кода. Вы можете использовать это в cron для повторного заполнения категорий в 00:00 и проверки их актуальности.
Обратите внимание, что код извлекается из более крупного модуля, поэтому я сжал для вас соответствующие части. Может быть переменная или две, которые не представлены в этом извлечении, но их будет легко вывести, или просто спросить :)
Объект $ category - это фактическая категория, которая должна содержать продукты. Код ниже также позволит вам указать скидку в% значении :)
Теперь следует отметить, что коллекция не будет возвращать товары, так как она содержит ссылки на обычный каталог <-> таблиц ссылок на товары. Поскольку вас не интересуют текущие связанные продукты, вам необходимо удалить это табличное отношение из коллекции.
Я использую следующий код, чтобы сделать это:
в качестве дополнительного бонуса вы можете использовать ту же технику при настройке коллекции продуктов каталога и находить продукты, которые находятся в специальном режиме благодаря правилам каталога:
Когда у вас есть рабочая коллекция, все, что вам нужно сделать, это получить все идентификаторы из коллекции, перевернуть массив и использовать
$category->setPostedProducts($products);
и $ category-> save () l; завершить обновление.Для полноты, вот мой ежедневный хрон, который поддерживает динамические категории в актуальном состоянии. (опять же, это относится к методам, не включенным здесь, но я уверен, что это поможет вам в правильном направлении
Веселиться :)
ссылка: http://www.proxiblue.com.au/magento-dynamic-category-products.html
источник
Вот коллекция, которая должна дать вам набор результатов всех продуктов со специальной ценой в вашем каталоге, которые вы можете отобразить на одной странице.
Это можно сделать несколькими способами: либо создать новый модуль с собственным контроллером, блоком и моделью, очень похожим на модуль категории «Маг», либо переопределить модуль категории «Маг», чтобы запускать вышеуказанную коллекцию только тогда, когда заказчик выбрал специальную категорию. Это можно легко настроить в системе -> настройка вашего модуля.
Если вы можете потратить несколько фунтов, я бы порекомендовал следующее расширение для подключения Magento.
Для Magento 1 -:
http://www.magentocommerce.com/magento-connect/dynamic-sale-category.html ( http://www.scommerce-mage.co.uk/magento-dynamic-sale-category.html )
Для Magento 2 -:
https://www.scommerce-mage.com/magento2-dynamic-sale-category.html
Надеюсь, это поможет!
Приветствия S
источник
Я создал расширение для Magento 2, которое отображает продукты на специальных устройствах под собственным контроллером с многоуровневой навигацией. Так что нет необходимости в категории или хрон.
https://github.com/DominicWatts/Special
Надеюсь, это поможет кому-то
источник