Básicamente, he creado una categoría 'Productos en oferta', que me gustaría que contenga automáticamente todos los productos en mi catálogo a los que se les haya aplicado un Precio especial (a través del Catálogo> Gestionar productos). Me gustaría que la página conserve las capacidades de clasificación y navegación por capas que contiene una página estándar de categoría de Magento.
Parece que esto es algo que sería valioso para la mayoría de los usuarios de Magento, y me sorprende que no esté incluido como parte de la funcionalidad principal.
He probado más de una docena de respuestas de Stack Exchange, publicaciones de blog y foros, y hasta ahora nada ha funcionado. ¿Alguien tiene una solución programática para esto?
=== EDITAR ===
Basado en la crítica de @ pspahn en los comentarios a continuación, he decidido seguir un método alternativo para lograr una funcionalidad similar. Dicho esto, si está interesado en seguir esta línea, @ sander-mangel describe un método que parece completamente factible.
fuente
Respuestas:
La forma más fácil de hacer esto es crear una extensión personalizada que funcione con un Observador y un Cronjob.
Cree una categoría para los productos de ventas. De esta manera, puede utilizar las funcionalidades normales de Magento en la interfaz como navegación en capas, etc.
Para obtener los productos en esta categoría automáticamente, utilizaremos el observador y el cronjob. El observador observará el
catalog_product_save_after
evento que se desencadena cuando un producto se guarda en el back-end. Cuando esto sucede se puede comprobar laspecial_price
,special_price_from
fecha yspecial_date_to
fecha a determinar si es necesario poner el producto en la categoría de ventas o sacarlo de allí.El cronjob está ahí para las fechas especiales desde y hasta. Todas las noches después de la medianoche, primero vacíe la categoría de ventas de todos los productos. Luego, use una colección para recuperar todos los productos que tienen un precio especial y que están dentro del especial desde y hasta la fecha. Si es así, muévalos a esta categoría de ventas.
fuente
La solución ofrecida por @SanderMangel es de primera categoría. Puedo ayudar a ampliar esto con algún código, que actualmente uso en mi módulo Productos de categoría automatizados / dinámicos, que tiene la capacidad de hacer reglas de categoría de productos en productos especiales
El código ajusta una colección de productos estándar para obtener todos los productos con un precio especial establecido, el día que se ejecuta el código. Puede usar esto en el cron para volver a llenar las categorías a las 00:00 y asegurarse de que se mantengan actualizadas.
Tenga en cuenta que el código se extrae de un módulo más grande, por lo tanto, he compactado las partes relevantes aquí para usted. Puede haber una variable o dos que no están representadas en este extracto, pero serían fáciles de deducir, o simplemente preguntar :)
El objeto $ category es la categoría real que debe contener los productos. El código a continuación también le permitirá especificar el descuento en un valor de% :)
Ahora, hay que tener en cuenta que la colección no devolverá productos, ya que contiene enlaces a las tablas normales de enlaces de productos del catálogo <->. Como no está interesado en los productos vinculados actuales, debe borrar esa relación de tabla de la colección.
Yo uso el siguiente código para hacerlo:
Como beneficio adicional, puede usar la misma técnica para ajustar la colección de productos del catálogo y encontrar productos que están en modo especial debido a las reglas del catálogo:
Una vez que tenga la colección de trabajo, todo lo que necesita hacer es obtener todos los identificadores de la colección, voltear la matriz y usar
$category->setPostedProducts($products);
y una $ category-> save () l; para completar la actualización.Para completar, aquí está mi cron diario que mantiene las categorías dinámicas actualizadas. (de nuevo, se refiere a métodos no incluidos aquí, pero estoy seguro de que lo llevará en la dirección correcta
Que te diviertas :)
ref: http://www.proxiblue.com.au/magento-dynamic-category-products.html
fuente
Aquí está la colección que debe proporcionarle el conjunto de resultados de todos los productos con precios especiales en su catálogo que puede mostrar en una página
Puede hacer esto de varias maneras, ya sea creando un nuevo módulo que tenga su propio controlador, bloque y modelo muy similar al módulo de categoría Mage o anule el módulo de categoría Mage para ejecutar solo la colección anterior cuando el cliente selecciona una categoría especial. Esto se puede configurar fácilmente en el sistema -> configuración de su módulo.
Si puede gastar poco, entonces recomendaría la siguiente extensión en Magento connect
Para Magento 1 -:
http://www.magentocommerce.com/magento-connect/dynamic-sale-category.html ( http://www.scommerce-mage.co.uk/magento-dynamic-sale-category.html )
Para Magento 2 -:
https://www.scommerce-mage.com/magento2-dynamic-sale-category.html
¡Espero eso ayude!
Saludos S
fuente
Creé una extensión para Magento 2 que muestra productos en especial bajo su propio controlador con navegación por capas. Entonces no hay necesidad de categoría o cron.
https://github.com/DominicWatts/Special
Espero que esto ayude a alguien
fuente