getChildHtml() magento

octobre 19, 2009 4 Commentaires

getChildHtml(), une importante méthode de magento. Elle est souvent utilisée dans les templates (les fichiers PHTML) pour importer d’autres templates. Elle possède deux variantes ; soit on l’utilise avec un paramètre, dans ce cas elle fait référence à un template, soit on l’utilise sans paramètre, elle fera alors référence à tous les éléments contenus dans un Noeux xml. Nous allons voir dans ce tutoriel le fonctionnement de getChildHtml().

getChildHtml() avec paramètre appelle un template (PHTML)

Nous allons étudier tout le cheminement du noeud footer à partir du layout page.xml, qui est un bon exemple pour comprendre les subtilités de cette méthode.

Dans le layout page.xml nous pouvons voir ce code :

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
<block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
<block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
</block>

En ouvrant un PHTML de gabarit exemple 2columns-right.phtml, nous pouvons voir  l’utilisation de getChilhtml() avec un paramètre « footer » =>  getChildHtml(‘footer’)
Cette méthode importera le template footer.phtml. Comment magento reconnait-il le lien vers ce fichier ? Grace au layout page.xml  :

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">

Le chemin se trouve à la fin du code

 template="page/html/footer.phtml".

Quand getChildHtml() comprend un paramètre, ici « footer » getChildHtml(‘footer’) magento va chercher le chemin du template associé dans la déclaration de ce block

getChildHtml() sans paramètre appelle tous les blocks enfants.

Utilisée sans paramètre la méthode appellera tous les élèments « enfant » du bloc courant. Pour notre code footer page/switch et template_links

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
<block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
<block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
</block>

Dans le template footer.phtml on peut voir ce code

<div class="informational">
    getChildHtml() ?></div>

getChildHtml()  fera référence aux deux block enfants :  « page/switch » et « page/template_links »

Récapitulatif

Comme vous pouvez le voir sur l’aperçut ci-dessous toute la partie en bleu correspond au  footer, appelé dans un  template gabarit  (ex :2colums.phtml) grâce a getChildHtml(‘footer’) .
Footer.phtml est chargé. Dans ce fichier getChildHtml() est utilisé sans paramètre. Il chargera donc les fichiers page/switch et template_links (entouré de rouge sur l’imprime écran).
Page/Switch n’est pas présent il faut avoir plusieurs vues magasin pour l’activer.

getChildHtml ()

getChildHtml ()

Code
4 commentaires : “getChildHtml() magento”
  1. durand dit :

    comment retrouver dans le layout le block ou le getchildhtml
    intervient.

  2. admin dit :

    Bonsoir
    Tu le retrouves en fonction du template ou tu te trouves. Si tu est dans head.phtml le layout associé est dans page.xml. Dans le noeud xml

  3. Pat dit :

    Bonjour,

    Je ne comprends pas à quel moment les layouts (donc les .xml) sont chargés ou lus !!

    Par exemple, tu dis que le layout associé à head.phtml est page.xml, mais je ne vois rien dans head.phtml qui fait référence à page.xml

    Merci…

  4. cédric rousset dit :

    Bonjour,
    C’est les layout qui charger les block dans les templates (les phtml). Il n’y a rien dans head.phtml qui fait référence au layout.
    Regarde les tutoriels de structure de page magento

Poster un commentaire

(obligatoire)

(obligatoire)