我有一个与外部网站集成的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();
Run Code Online (Sandbox Code Playgroud)
但是,我希望(并且相信这是可能的)一种更好的方法.
我不喜欢这样一个事实:我必须手动指定模板setTemplate(),这涉及硬编码模板位置并重复在其他地方定义的内容(在设计的布局xml文件中).我尝试加载块通过$app->getLayout()->getBlock($name)没有结果($name代表块的引用名称,如布局xml文件中定义).
所以问题是:
有没有办法在magento之外渲染一个块(具有以下必要条件)?
这个问题的目的是将它包装在一个函数中,并在Magento外部渲染每个块,就像在Magento模板上完成一样.例如:
<div id="sidebar-cart-container">
<?php echo $this->renderMagentoBlock('cart-block-reference-id'); ?>
</div>
Run Code Online (Sandbox Code Playgroud)
提前致谢.