[eZ Publish] Relations Object with template
Bonjour ,
Je Cherche un solution pour le probleme suivant :
j'ai deux classe : a et b
et j'ai 1 template pour chacune de ces classes.
Dans la classe a , la classe b est en relation objet !
Mon probleme est que dans le template de la classe a , jintegre le template de la classe b ! avec un include ! mais je n'arrive pas a afficher les données de la classe b !
Sachant que le contenu de la classe b sont des relations_objects.
C'est a dire que si mon template b est un tableau avec toutes les données que j'ai collecté avec mes relations objects, je narrive pas apres un include a affiché le tableau ainsi que ces données ! ( il n'y a que le tableau qui apparait , mais je narrive pas a appeler les données)
Merci,
Cordialement
Bon usage du content_view_gui
Bonjour à tous,
l'erreur principale vient du mélange entre "objet" et "noeud". En effet, eZ Publish utilise ses 2 notions pour gérer son contenu.
Petit rappel :
Un objet représente une instance d'une classe telle que définie dans l'interface d'administration : un article par exemple.
Les objets ne sont pas organisés entre eux. Ils sont stockés "à plat".
Un noeud sert à mettre en place la structure arborescente de votre site. A chaque noeud, nous attacherons donc un objet et nous obtiendrons un arbre de contenus pour organiser notre site.
Pourquoi ce système ?
Cette organisation peut sembler un peu complexe mais elle est finalement très puissante. En effet, par cette division entre noeud et objets vous pouvez faire de la multipublication et ainsi avoir le même article dans plusieurs espaces de votre site sans jamais dupliquer l'information.
*_view_gui
Lorsque vous souhaitez visualiser un contenu (noeud, objet, attribut d'objet...) vous avez des fonctions utilitaires qui vont charger dynamiquement la template nécessaire en fonction du contexte (classe de l'objet, nature de l'attribut, object id, node id...).
Les 3 principales fonctions étant :
node_view_gui pour les noeuds
content_view_gui pour les objets
attribute_view_gui pour les attributs
Les templates associées
Pour node_view_gui, eZ Publish va chercher à charger la template node/view/<type de vue>.tpl. Le mécanisme d'override vous permettant de choisir la template chargée.
Pour content_view_gui, c'est content content/view/<type de vue>.tpl.
Pour attribute_view_gui, ce sera légèrement différent avec content/datatype/view/<type d'attribut>.tpl
Dans le cas présenté
Au final, dans le cas présenté :
{content_view_gui content_object=$node.data_map.typelop.object view=full_lop}
La règle d'override devra être de type
[full_lop_lop]
Source=content/view/full_lop.tpl
MatchFile=content/full/full_lop_lop.tpl
Subdir=templates
Match[class_identifier]=lop
Pour plus d'infos :
http://ez.no/doc/ez_publish/technica...ntent_view_gui
A noter
Il ne faut pas oublier que lorsque vous utilisez les objets, vous n'avez plus de lien avec l'arborescence. $object.url_alias n'existe donc pas. Il faudra dans les templates de type content/view/<..>.tpl faire appel à $object.main_node.url_alias afin d'avoir l'URL de l'emplacement principal.
A titre perso, je préfère toujours utiliser des node_view_gui afin de ne pas mélanger. Par contre les content_view_gui sont très utiles dans le cas de l'insertions d'objets (images, vidéos...) directement dans une zone de texte riche avec le online editor.