在Magento外部加载块,并应用当前模板
|
我有与外部网站集成的Magento安装,我希望将Magento的购物车块显示在此外部网站的标题上。
我通过以下代码实现了这一点:
<?php
require_once(dirname(__FILE__).\'/store/app/Mage.php\');
$app = Mage::app();
$session = Mage::getSingleton(\'core/session\', array(\'name\'=>\'frontend\'));
$block = $app
->getLayout()
->getBlockSingleton(\'checkout/cart_sidebar\')
->setTemplate(\'checkout/cart/sidebar.phtml\');
echo $block->toHtml();
但是,我想要(并相信这是可能的)更好的方法。
我不喜欢必须通过setTemplate()
手动指定模板的事实,这涉及对模板位置进行硬编码并在其他地方(在设计的布局xml文件中)重复定义的内容。我尝试通过$app->getLayout()->getBlock($name)
加载块,但是没有结果($name
表示块的参考名称,如布局xml文件中所定义)。
所以问题是:
有什么方法可以在magento外部渲染块(具有以下条件)?
我希望基本布局xml和设计更改的商店的设计布局更新能够自动加载,因此我不需要手动(再次)指定模板路径和块类型。
我想通过其引用名称加载该块,因此可以利用布局xml文件上应用于该块的属性。
这个问题的目的是将其包装在一个函数中,并以与在Magento模板上相同的方式渲染Magento外部的每个块。例如:
<div id=\"sidebar-cart-container\">
<?php echo $this->renderMagentoBlock(\'cart-block-reference-id\'); ?>
</div>
提前致谢。
没有找到相关结果
已邀请:
1 个回复
抚驰
请注意,您必须手动指定要从中加载块的布局句柄。 \'default \'布局句柄将包含侧边栏,因为它是从checkout.xml内部放置的。 但是,由于许多模块将其块放置在此句柄中,因此使用“默认”布局句柄会带来巨大的性能成本。您可能需要将外部站点上使用的所有块放在单独的布局句柄中,然后简单地加载它。 这是你的选择。祝好运。