J'ai une disposition désactivée pour le bloc de liste de souhaits: Je veux maintenant appeler ce bloc dans la PHTML au lieu de l'ajouter à une autre mise en page. P> Comment faire Je l'appelle directement? P> p>
4 Réponses :
Chris - Vous devriez avoir besoin d'appeler un bloc directement à partir d'un modèle. Ce serait une mauvaise habitude / pratique d'entrer. Trouvez la référence appropriée au modèle que vous souhaitez ajouter le bloc et l'ajouter à la mise en page XML. Ensuite, à partir du fichier de modèle, utilisez:
echo $this->getChildHtml('your-block');
tandis que Prattski a raison de dire que cela est une forme médiocre (suis-je en train de mettre en avant pour telle), il y a eu des moments où se développent lorsque cela a été une technique de débogage précieuse, ou il a fait la différence de plusieurs heures de programmation. Dans cet esprit, c'est la mauvaise façon de le faire:
<?php print $this->getLayout() ->createBlock("catalog/product_view") ->setTemplate("catalog/product/view/addto.phtml") ->toHtml(); ?>
echo Mage::app()->getLayout() ->createBlock('somemodule/someblock') ->setSomeVariable($variable) ->setTemplate('somemodule/someblock.phtml') ->toHtml(); this can be use anywhere for calling blocks. setSomeVariable($variable) if set can be accessed in someblock.phtml by $this->getSomeVariable();
Comment puis-je ajouter "après" ou "avant" de fonctionnalité pour appeler le bloc avant d'un bloc ou après un bloc dans le code ci-dessus.
Désolé n'a pas essayé celui-ci. Mais dans CreateBlock, le 3ème paramètre est Array $ attribut code>. Vous pouvez regarder cela.
J'ai lutté avec ceci depuis des siècles et j'ai constaté que si vous souhaitez appeler un bloc d'une partie totalement séparée de la mise en page, vous devez utiliser un code légèrement différent. Utilisation: au lieu de: p> Utilisation de ce code, vous pouvez créer vos propres blocs n'importe où ou choisir des blocs d'autres modules et mettre en place eux partout. p> p>
Notez qu'il est nécessaire de définir ce bloc dans la mise en page.