我试着写加载Magento的购物车中的Drupal块内部的块。
下面的代码(位于/test.php)装入购物车和它的内容正确(Magento的安装位于/ Magento的):
<?php
/*
* Initialize magento.
*/
require_once('magento/app/Mage.php');
umask(0);
Mage::app('default');
Mage::getSingleton('core/session', array('name'=>'frontend'));
Mage::getSingleton('customer/session');
/*
* Add specific layout handles to our layout and then load them.
*/
$layout = Mage::app()->getLayout();
$layout->getUpdate()
->addHandle('default')
->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;
?>
(我使用FirePHP调试会话值 - 这就是在FB();电话是。)
如果我使用Drupal的范围内是完全相同的代码(通过hook_menu回调),我收到以下错误:
致命错误:Mage_Core_Model_Session_Abstract ::的getMessages():该脚本试图执行的方法或访问不完整的对象的属性。 请确保您尝试操作的对象的类定义“Mage_Core_Model_Message_Collection”加载反序列化()被调用之前或提供__autoload()函数来加载的类定义在/ home / aendrew /工作区/ drupgento / Magento的/上线215的应用程序/代码/核心/法师/核心/型号/会话/ Abstract.php
我的猜测是,Drupal的做某种一个与Magento的冲突的会话处理 - 如果我在脚本的开始取消设置$ _SESSION,它会显示一个空的购物车(无论是否真正有它的项目)。 我也试图把现有的会话在一个临时变量,然后做一个array_merge()结尾,但这并不能工作。
任何想法,我该怎么办呢? 谢谢!