Fondamentalement, j'ai créé une catégorie «Produits en vente», que je voudrais automatiquement contenir tous les produits de mon catalogue auxquels un prix spécial leur a été appliqué (via Catalogue> Gérer les produits). Je voudrais que la page conserve les capacités de navigation et de tri en couches que contient une page de catégorie Magento standard.
Il semble que ce soit quelque chose qui serait précieux pour la majorité des utilisateurs de Magento, et je suis surpris qu'il ne soit pas inclus dans la fonctionnalité de base.
J'ai essayé plus d'une douzaine de réponses Stack Exchange, des articles de blog et des forums, et rien n'a fonctionné jusqu'à présent. Quelqu'un at-il une solution programmatique pour cela?
=== EDIT ===
Sur la base de la critique de @ pspahn dans les commentaires ci-dessous, j'ai décidé de poursuivre une autre méthode pour obtenir des fonctionnalités similaires. Cela dit, si vous êtes intéressé à poursuivre cette ligne, @ sander-mangel décrit une méthode qui semble tout à fait réalisable.
Réponses:
La façon la plus simple de le faire est de créer une extension personnalisée qui fonctionne avec un observateur et un Cronjob.
Créez une catégorie pour les produits de vente. De cette façon, vous pouvez utiliser les fonctionnalités normales de Magento dans l'interface comme la navigation en couches, etc.
Pour obtenir automatiquement les produits de cette catégorie, nous utiliserons l'observateur et le cronjob. L'observateur observera l'
catalog_product_save_after
événement qui se déclenche lorsqu'un produit est enregistré dans le backend. Lorsque cela se produit , vous pouvez vérifier laspecial_price
,special_price_from
date et laspecial_date_to
date pour déterminer si vous avez besoin de mettre le produit dans la catégorie des ventes ou le retirer de là.Le cronjob est là pour les dates spéciales du et au. Chaque soir, après minuit, videz d'abord la catégorie de vente de tous les produits. Utilisez ensuite une collection pour récupérer tous les produits qui ont un prix spécial et qui entrent dans la promotion à partir de et jusqu'à ce jour. Si c'est le cas, déplacez-les vers cette catégorie de vente.
la source
La solution offerte par @SanderMangel est de premier ordre. Je peux aider à développer cela avec du code, que j'utilise actuellement dans mon module Produits de catégorie automatisés / dynamiques - qui a la capacité de faire des règles de catégorie de produits sur des produits spéciaux
Le code ajuste une collection de produits standard pour obtenir tous les produits avec un prix spécial, le jour de l'exécution du code. Vous pouvez l'utiliser dans le cron pour re-remplir les catégories à 00:00 et vous assurer qu'elles restent à jour.
Notez que le code est extrait d'un module plus grand, j'ai donc compacté les parties pertinentes ici pour vous. Il peut y avoir une ou deux variables qui ne sont pas représentées dans cet extrait, mais elles seraient faciles à déduire, ou simplement à demander :)
L'objet $ category est la catégorie réelle qui doit contenir les produits. Le code ci-dessous vous permettra également de spécifier la remise en% également :)
Maintenant, il est à noter que la collection ne renverra pas de produits, car elle contient des liens vers les tables de liens de produits catalogue <-> normales. Étant donné que vous n'êtes pas intéressé par les produits liés actuels, vous devez supprimer cette relation de table de la collection.
J'utilise le code suivant pour y parvenir:
en prime, vous pouvez utiliser la même teqnique pour ajuster la collection de produits du catalogue et trouver des produits qui sont en mode spécial en raison des règles du catalogue:
Une fois que vous avez la collection de travail, tout ce que vous avez à faire est d'obtenir tous les identifiants de la collection, de retourner le tableau et d'utiliser
$category->setPostedProducts($products);
et un $ category-> save () l; pour terminer la mise à jour.Pour être complet, voici mon cron quotidien qui maintient les catégories dynamiques à jour. (encore une fois, cela fait référence à des méthodes non incluses ici, mais je suis sûr que cela vous mènera dans la bonne direction
S'amuser :)
réf: http://www.proxiblue.com.au/magento-dynamic-category-products.html
la source
Voici la collection qui devrait vous donner l'ensemble de résultats de tous les produits à prix spécial de votre catalogue que vous pouvez afficher sur une seule page
Il existe plusieurs façons de le faire, soit créer un nouveau module qui a son propre contrôleur, bloc et modèle très similaire au module de catégorie Mage ou vous remplacez le module de catégorie Mage pour exécuter uniquement la collection ci-dessus lorsque la catégorie spéciale est sélectionnée par le client. Cela peut être facilement configuré dans le système -> configuration de votre module.
Si vous pouvez dépenser peu, alors je recommanderais l'extension suivante sur Magento connect
Pour Magento 1 -:
http://www.magentocommerce.com/magento-connect/dynamic-sale-category.html ( http://www.scommerce-mage.co.uk/magento-dynamic-sale-category.html )
Pour Magento 2 -:
https://www.scommerce-mage.com/magento2-dynamic-sale-category.html
J'espère que cela aide!
Cheers S
la source
J'ai créé une extension pour Magento 2 qui affiche des produits spéciaux sous son propre contrôleur avec une navigation en couches. Donc pas besoin de catégorie ou de cron.
https://github.com/DominicWatts/Special
J'espère que cela aide quelqu'un
la source