2010-12-09 22 views
0

J'ai cette tâche à faire, mais je suis coincé dessus. Client veut obtenir un produit de nom de catégorie a été acheté à. Cette information n'est normalement pas définie. Donc, à la première étape, je suis en train de capturer l'événement checkout_cart_product_add_after et définir une catégorie pour le produit.Obtenez la catégorie sous laquelle le produit a été acheté

Donc, dans mon Observer.php j'essaie d'obtenir la catégorie actuelle, par:

Mage::registry('current_category')->getName()

mais il semble que l'objet current_category n'est pas défini dans le registre de Mage. Comment puis-je ajouter une catégorie à un produit d'une manière différente? (Notez que le produit peut appartenir à plusieurs catégories, j'ai juste besoin de celui auquel il a été acheté).

Cordialement, Ventus

Répondre

1

Garder ces données dans la session de l'utilisateur n'est pas si bonne idée. Il y a un autre moyen. Sur la page du produit, j'ajoute un tag caché input avec l'identifiant de la catégorie actuelle, qui peut être reçu par $product->getCategory()->getEntityId().

La deuxième étape est plus difficile. Avant d'avoir ajouté un nouveau champ (attribut) au sales_flat_quote_item et sales_flat_order_item nommé from_category (mon nom personnalisé;)). Maintenant, j'utilise l'observateur pour l'événement sales_quote_save_before et j'ai mis à l'article de citation mon attribut personnalisé.

Pour convertir un objet de devis pour commander l'article avec mon attribut personnalisé Je viens d'ajouter à config.xml global section:


<fieldsets> 
    <sales_convert_quote_item> 
    <from_category> 
     <to_order_item>*</to_order_item> 
    </from_category> 
    </sales_convert_quote_item> 
</fieldsets> 

Maintenant, je peux l'utiliser à la caisse.

1

créer votre objet de session et de stocker le Mage :: Registre ('current_category') -> getName(); il alors:

  • vous pouvez l'obtenir même si l'utilisateur a déménagé à la page du produit
  • vous pouvez décider quoi faire si cela est vide et le client a accédé à la page produit directement

bien sûr vous pouvez dire à votre client que ce n'est pas une solution infaillible et au lieu de cela, il pourrait simplement configurer des entonnoirs pour google analytics et avoir les bonnes statistiques de localisation sur la page