首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento购物车/ magento之外的会话数据

问Magento购物车/ magento之外的会话数据
EN

Stack Overflow用户
提问于 2012-06-22 16:23:13
回答 5查看 11.8K关注 0票数 1

这可能会让人有点困惑,因为我已经尝试了所有的方法来让它工作。我想要的是在我的品牌网站(domain.com)中的一个链接,它显示了我的magento 1.5.1购物车(domain.com/shop)中的数量,我很容易拉入产品数据和导航块,但无论我做什么,购物车数量总是从magento之外的0。我尝试的主要方式是在我的品牌网站上:

代码语言:javascript
复制
    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中创建了一个模板,只是给我一个cart数量作为一个块,它返回块很好,但在cart中仍然是零!

代码语言:javascript
复制
    $block = $this->layout->createBlock('core/template');
    $block->setTemplate('page/html/cartForBrand.phtml');
    return $block->renderView();

magento中的区块很简单

代码语言:javascript
复制
    Mage::getSingleton('core/session', array('name'=>'frontend'));
    $cart = Mage::getModel('checkout/cart')->getQuote()->getData()['items_qty'];

我见过很多人有类似的问题:/ session_cookie_management,.domain.com cookie_domain(尽管这是特定于子域名的),我已经阅读并尝试了两天能找到的所有东西。不断删除会话和缓存目录,并在禁用magento缓存的情况下清除缓存和cookies。

这是我使用多年后在这个网站上发布的第一个问题,我已经被这个问题困了3天了!把我的头发拔出来!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-23 12:26:14

如果你想要的只是数量,为什么要实例化magento。只需设置一个客户端cookie (即cart_qty),然后在主站点标题上阅读此cookie即可。

票数 1
EN

Stack Overflow用户

发布于 2012-06-22 16:58:27

我复制了你的代码,并在Magento 1.5、1.6和1.7上进行了测试。

我将代码放在Magento根目录中名为test.php的PHP文件中。这是我使用的代码:

代码语言:javascript
复制
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 )?

票数 7
EN

Stack Overflow用户

发布于 2013-07-25 02:14:08

您的代码很好,但是默认情况下,Magento的“前端”cookie不能在Magento之外访问(因此您不能访问会话数据)。您需要在Admin > System > Configuration > Web > Session Cookie Management > Cookie Path中更改Cookie的路径。尝试将其设置为/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11152613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档