我已禁用wishlist块的布局:
<block type="catalog/product_view" name="product.info.addtoto" as="addtoto" template="catalog/product/view/addto.phtml"/>
我现在想在phtml中调用该块而不是将其添加到另一个布局 .
我该如何直接调用它?
虽然Prattski是正确的,这是一种糟糕的形式(我正在这样做),有时候开发时,这是一个有 Value 的调试技术,或者它产生了几个小时的编程差异 . 本着这种精神,这是做这件事的坏习惯:
<?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();
这可以在任何地方用于调用块 . setSomeVariable($variable) 如果设置可以在 someblock.phtml 中通过 $this->getSomeVariable(); 进行访问
setSomeVariable($variable)
someblock.phtml
$this->getSomeVariable();
克里斯 - 你应该直接从模板中调用一个块 . 进入这将是一个坏习惯/做法 . 找到要添加块的模板的正确引用,并将其添加到布局xml中 . 然后从模板文件中,使用:
echo $this->getChildHtml('your-block');
多年来我一直在努力解决这个问题,并且发现如果你想从布局的一个完全独立的部分调用一个块,你需要使用稍微不同的代码 . 使用:
<?php echo $this->getBlockHtml('any_block'); ?>
代替:
<?php echo $this->getChildHtml('any_block'); ?>
使用此代码,您可以在任何地方创建自己的块,也可以从其他模块中选择块并将它们放在任何位置 .
4 回答
虽然Prattski是正确的,这是一种糟糕的形式(我正在这样做),有时候开发时,这是一个有 Value 的调试技术,或者它产生了几个小时的编程差异 . 本着这种精神,这是做这件事的坏习惯:
如果有的话,请谨慎使用 .
这可以在任何地方用于调用块 .
setSomeVariable($variable)
如果设置可以在someblock.phtml
中通过$this->getSomeVariable();
进行访问克里斯 - 你应该直接从模板中调用一个块 . 进入这将是一个坏习惯/做法 . 找到要添加块的模板的正确引用,并将其添加到布局xml中 . 然后从模板文件中,使用:
多年来我一直在努力解决这个问题,并且发现如果你想从布局的一个完全独立的部分调用一个块,你需要使用稍微不同的代码 . 使用:
代替:
使用此代码,您可以在任何地方创建自己的块,也可以从其他模块中选择块并将它们放在任何位置 .