Php 加载Magento外部的块,并应用当前模板

Php 加载Magento外部的块,并应用当前模板,php,magento,integration,Php,Magento,Integration,我有一个与外部网站集成的Magento安装,我希望Magento的购物车块显示在此外部网站的标题上 我通过以下代码实现了这一点: 提前谢谢。我花了几分钟调试,但似乎相对容易 <?php /* * Initialize magento. */ require_once 'app/Mage.php'; Mage::init(); /* * Add specific layout handles to our layout and then load them. */ $layo

我有一个与外部网站集成的Magento安装,我希望Magento的购物车块显示在此外部网站的标题上

我通过以下代码实现了这一点:



提前谢谢。

我花了几分钟调试,但似乎相对容易

<?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;
generateXml()
->生成块();
/* 
*现在我们可以用通常的方法简单地得到任何块。
*/
$cart=$layout->getBlock('cart_边栏')->toHtml();
echo$cart;
请注意,必须手动指定要从中加载块的布局句柄。“默认”布局句柄将包含侧栏,因为它是从checkout.xml内部放置在那里的

但是使用“默认”布局句柄可能会带来巨大的性能代价,因为许多模块都将它们的块放在这个句柄中。您可能希望将外部站点上使用的所有块放在一个单独的布局句柄中,然后简单地加载它


选择权在你。祝你好运。

谢谢,它很管用!尽管如此,我还是无法在Admin->System->design中看到任何设计更改。修正了在管理->系统->配置->设计中的设置。还要注意的是,如果没有
Mage::init()
Mage::getSingleton('core/session',array('name'=>'frontend'))后面的行,我就无法看到购物车的内容我在让它工作时遇到问题--它在$layout->generateBlocks()处崩溃;。知道为什么吗?@DanielSloof我想那会有帮助的,嗯?“致命错误:Mage_Core_Model_Session_Abstract::getMessages():脚本试图执行一个方法或访问一个不完整对象的属性。请确保在调用unserialize()或提供自动加载()之前,加载了您尝试操作的对象的类定义“Mage_Core_Model_Message_Collection”函数将类定义加载到第215行的/home/aendrew/workspace/project/magento/app/code/core/Mage/core/Model/Session/Abstract.php中。我提出了一个新问题:如果我需要将块翻译成一种特定的语言,该怎么办?@MarekMaurizio Translations绑定到storeview,因此使用Mage::init()代替Mage::init('u storeview_code','store');