这可能会让我感到有些困惑,因为我已经尝试了一切来完成这项工作。我想要的只是我的品牌网站(domain.com)中的一个链接,它显示我的magento 1.5.1购物车(domain.com/shop)中的数量我很容易提取产品数据和导航块,但不管我做什么,购物车数量从外面的magento总是0。 我试过的主要方式就是在我的品牌网站上:
require_once $_SERVER['DOCUMENT_ROOT'].'/shop/app/Mage.php';
umask(0);
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend'));
// trying everything
Mage::getSingleton('checkout/cart')->getItemsCount(); // returns 0
Mage::helper('checkout/cart')->getItemsCount(); // returns 0
Mage::getSingleton('customer/session')->isLoggedIn(); // returns blank
Mage::helper('checkout/cart')->getCart()->getItemsCount(); // returns 0
Mage::helper('checkout/cart')->getCart()->getQuote()->getItemsCount(); // returns blank
然后,当这些都不起作用的时候,我在Magento中创建了一个模板,只是为了给我一个块数量,这个块可以很好地返回块但在购物车中仍为零!
$block = $this->layout->createBlock('core/template');
$block->setTemplate('page/html/cartForBrand.phtml');
return $block->renderView();
并且magento中的块只是
Mage::getSingleton('core/session', array('name'=>'frontend'));
$cart = Mage::getModel('checkout/cart')->getQuote()->getData()['items_qty'];
我见过很多人遇到类似的问题:/ session_cookie_management,.domain.com cookie_domain(即使这是特定于子域名的),我已经阅读并尝试了我能找到的所有内容,为期2天。不断删除会话和缓存目录,并清除缓存和cookie,禁用magento缓存。
这是我在使用多年后在网站上发布的第一个问题,我已经坚持了3天!拉出我的头发!
答案 0 :(得分:7)
我复制了你的代码并在Magento 1.5,1.6和1.7上进行了测试 我将代码放在Magento根目录中名为 test.php 的PHP文件中。这是我使用的代码:
umask(0);
require_once 'app/Mage.php';
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend'));
var_dump(array(
"Mage::getSingleton('checkout/cart')->getItemsCount()" =>
Mage::getSingleton('checkout/cart')->getItemsCount()
)); // returns number of items (w/o qty)
var_dump(array(
"Mage::helper('checkout/cart')->getSummaryCount()" =>
Mage::helper('checkout/cart')->getSummaryCount()
)); // returns number according to configuration
var_dump(array(
"Mage::getSingleton('customer/session')->isLoggedIn()" =>
Mage::getSingleton('customer/session')->isLoggedIn()
)); // returns bool true|false
Magento实例使用本地测试主机名magento15.dev,magento16.dev和magento17.dev。
我请求相应的Magento实例并将产品放入购物车(使用可配置和简单的产品进行测试),然后更新购物车中的产品数量。
在每个步骤之间,我在浏览器中重新加载了 test.php 文件 结果总是一样的:它按预期工作。每次调用都返回与Magento站点相同的值。
这意味着您的代码是正确的,它可能是您的域和/或设置(当您请求测试脚本时,浏览器是否发送Magento前端cookie)?
答案 1 :(得分:2)
您的代码很好,但默认情况下,Magento的“前端”cookie无法在Magento之外访问(因此您无法访问会话数据)。您需要在Admin>中更改Cookie的路径系统>配置>网络>会话Cookie管理> Cookie路径。尝试将其设置为/
答案 2 :(得分:1)
如果您想要的只是数量,那么为什么要实例化magento。只需设置客户端cookie(即cart_qty),然后在主站点标题上读取此cookie。
答案 3 :(得分:1)
想你忘了:
Mage::app()->setCurrentStore(1); // replace 1 with your store id
之后
Mage::app()
答案 4 :(得分:0)
在您的代码中:而不是:
Mage::app();
使用
Mage::app()->loadArea('frontend');
&安培;你会得到你的输出......