8
votes

Comment puis-je appeler un bloc dans une PHTML au lieu de passer par une mise en page?

J'ai une disposition désactivée pour le bloc de liste de souhaits: xxx

Je veux maintenant appeler ce bloc dans la PHTML au lieu de l'ajouter à une autre mise en page.

Comment faire Je l'appelle directement?


0 commentaires

4 Réponses :


3
votes

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');


0 commentaires

31
votes

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(); ?>


0 commentaires

12
votes
 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();

2 commentaires

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 . Vous pouvez regarder cela.



3
votes

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: xxx

au lieu de: xxx

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.


1 commentaires

Notez qu'il est nécessaire de définir ce bloc dans la mise en page.