1

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

    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 天。在禁用 magento 缓存的情况下不断删除会话和缓存目录并清除缓存和 cookie。

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

4

5 回答 5

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)?

于 2012-06-22T08:58:27.127 回答
2

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

于 2013-07-24T18:14:08.057 回答
1

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

于 2012-06-23T04:26:13.713 回答
1

以为你忘记了:

Mage::app()->setCurrentStore(1);  // replace 1 with your store id

Mage::app()
于 2013-01-19T04:52:40.530 回答
0

在您的代码中:而不是:

Mage::app();

利用

Mage::app()->loadArea('frontend');

&你会得到你的输出......

于 2016-04-12T05:30:32.743 回答