Développer avec RBS Change : [Résolu] Injecter un document avec le document "product"

  • 74088.1

    31/01/2013 16:55


    Mathias
    Rang : Expert
    Bonjour,

    pour faire du crossSelling entre le blog et les produits de la boutique, on m'a demandé de créer un block pour mettre en avant un produit dont parle l'article de blog.

    Pour cela, j'ai étendu le document modules_blog/post pour l'injecter avec le champs modules_catalog/product.
    J'ai tenté cette approche pour avoir la liberté d'ajouter tout type de produit (simpleproduct / declinedproduct / etc...)

    Or, lorsque j'essaye depuis le BO de sélectionner un produit dans la popin de sélection depuis l'article de blog, j'ai un message qui me dit que je n'ai pas les droits pour accéder aux ressources du module.

    Etant donné que dans mon cas particulier, ma boutique ne gère que des produits déclinés, j'ai modifié l'injection pour la remplacer par un champs de type modules_catalog/declinedproduct.

    Et là, je n'ai pas de soucis pour sélectionner un produit de mon catalogue.

    Je me dis que ça vient du fait que le document modules_catalog/product n'est pas un document disponible en BO.

    Mais comment faire du coup ?

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 74088.2

    01/02/2013 11:27


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Alors il faut effectivement gérer les choses en tenant compte du fait que le declinedproduct n'étend pas product.

    Il y a plusieurs possibilités :

    1) Vous ne voulez sélectionner que des produits (produits simples, décliaisons, etc) et pas de produits déclinés directement : dans ce cas vous indiquez bien modules_catalog/product dans le modèle mais il vous faudra spécifier les choses dans l'éditeur du document :

    <field name="product" moduleselector="catalog" allow="[modules_catalog_product]" />
    Les crochets dans le allow sont importants car il spécifient qu'il faut inclure les types de document qui héritent de product (si vous ne spécifiez pas l'attribut allow, il est implicitement renseigné avec le modèle de la propriété mais sans les crochets).


    2) Vous voulez sélectionner à la fois des produits et des produits déclinés : dans ce cas le seul ancêtre commun que l'on peut indiquer dans le modèle c'est modules_generic/Document et là aussi il faut spécifier l'attribut allow dans l'éditeur :

    <field name="product" moduleselector="catalog" allow="[modules_catalog_product],!modules_catalog_productdeclination,[modules_catalog_declinedproduct]" />
    Dans cet exemple, on autorise l'ensemble des types héritant de produit sauf les déclinaisons (point d'exclamation devant le modèle) ainsi que les produits déclinés.
  • 74088.3 en réponse à 74088.2 écrit par Gaël Port

    01/02/2013 13:42


    Mathias
    Rang : Expert
    Merci Gaël !

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 74088.4

    01/02/2013 15:11


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Petite précision encore pour être complet : dans le premier cas si l'on veut pouvoir sélectionner des déclinaison, il faut ajouter dans l'éditeur l'attribut dialog="productselector". Cela active un sélecteur de document spécifique aux produits qui liste également les produits déclinés (sans permettre de les sélectionner) et permet de sélectionner leurs déclinaisons.

    Sans cela les déclinaisons ne sont jamais sélectionnable puisqu'elles ne sont pas visibles directement dans l'arborescence.

    Édité par Gaël Port 01/02/2013 15:11

 
Merci de prendre connaissance et de respecter les règles des forums.
 
1471 membres
Aucun membre connecté