加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 加载Magento外的块,并应用当前模板

发布时间:2020-05-25 09:36:53 所属栏目:PHP 来源:互联网
导读:我有一个Magento安装与外部网站集成,我想要Magento的购物车块显示在这个外部站点的标题. 我已经通过以下代码实现了这一点: ?phprequire_once(dirname(__FILE__)./store/app/Mage.php);$app = Mage::app();$session = Mage::getSingleton(core/session, arra

我有一个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>

提前致谢.

给我几分钟的调试,但似乎比较容易.
<?php

/*
 * Initialize magento.
 */
require_once 'app/Mage.php';
Mage::init();

/*
 * Add specific layout handles to our layout and then load them.
 */
$layout = Mage::app()->getLayout();
$layout->getUpdate()
    ->addHandle('default')
    ->addHandle('some_other_handle')
    ->load();

/*
 * Generate blocks,but XML from previously loaded layout handles must be
 * loaded first.
 */
$layout->generateXml()
       ->generateBlocks();

/* 
 * Now we can simply get any block in the usual way.
 */
$cart = $layout->getBlock('cart_sidebar')->toHtml();
echo $cart;

请注意,您必须手动指定要加载块的布局句柄. “默认”布局句柄将包含边栏,因为它从checkout.xml内部放在那里.

但是使用“默认”布局句柄可能会带来显着的性能成本,因为许多模块将其块放在此句柄中.您可能希望将您在外部站点上使用的所有块放在单独的布局句柄中,并简单地加载它.

这是你的选择.祝你好运.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读