Как мне вызвать блок в phtml, а не через макет? - PullRequest
8 голосов
/ 27 апреля 2011

Я отключил макет для блока списка желаний:

<block type="catalog/product_view" name="product.info.addtoto" as="addtoto" template="catalog/product/view/addto.phtml"/>

Теперь я хочу вызвать этот блок в phtml вместо того, чтобы добавить его в другой макет.

Как мне позвонить напрямую?

Ответы [ 4 ]

31 голосов
/ 27 апреля 2011

Несмотря на то, что Пратцки прав, что это плохая форма (я поддерживаю голосование как таковое), были времена, когда разрабатывался, когда это был ценный метод отладки, или это делало разницу в нескольких часах программирования.В этом духе это плохой привычный способ сделать это:

<?php print $this->getLayout()
                 ->createBlock("catalog/product_view")
                 ->setTemplate("catalog/product/view/addto.phtml")
                 ->toHtml(); ?>

Используйте экономно, если вообще.

12 голосов
/ 05 апреля 2013
 echo  Mage::app()->getLayout()
        ->createBlock('somemodule/someblock')
        ->setSomeVariable($variable)
        ->setTemplate('somemodule/someblock.phtml')
        ->toHtml();

это можно использовать где угодно для вызова блоков. setSomeVariable($variable) если набор доступен в someblock.phtml по $this->getSomeVariable();

3 голосов
/ 26 февраля 2016

Я боролся с этим целую вечность и обнаружил, что если вы хотите вызвать блок из совершенно отдельной части макета, вам нужно использовать немного другой код. Использование:

<?php echo $this->getBlockHtml('any_block'); ?>

Вместо:

<?php echo $this->getChildHtml('any_block'); ?>

Используя этот код, вы можете создавать свои собственные блоки где угодно или выбирать блоки из других модулей и размещать их где угодно.

3 голосов
/ 27 апреля 2011

Крис - Вам всегда нужно вызывать блок напрямую из шаблона. Это было бы плохой привычкой / практикой. Найдите правильную ссылку на шаблон, в который вы хотите добавить блок, и добавьте его в макет xml. Затем из файла шаблона используйте:

echo $this->getChildHtml('your-block');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...