Magento多个网站分享购物车会话

时间:2013-11-07 19:03:23

标签: php magento

我是magento的新手,我想要做的是在不同的商店和各自的网站之间分享购物车,我已经实现了这篇文章中提供的解决方案, Magento multiple websites share shopping cart,但有效,但有限制,

在我的情况下也是一个问题的限制是,如果从ROOT类别第一次添加到购物车,即使我们切换商店(所有商店都有不同的ROOT类别)它仍然在会话中,也从其他商店添加的项目也分享同一购物车会议。但是当我从任何其他商店(非默认商店)向购物车添加商品然后移动到其他商店时,每个商店的购物车会话都是独立创建的(意味着会话不会被共享)。现在我想知道我在这里做错了什么,或者我该怎么做才能分享那些会议。

2 个答案:

答案 0 :(得分:0)

Give this a try。我是为Magento EE 1.12上的项目开发的东西,但它也适用于CE。 Magento已在同一网站下的商店视图之间共享购物车。代码背后的主要思想是让magento分享所有商店视图的购物车,而不仅仅是同一网站中的视图 我不确定它适用于任何网站配置,但你可以拍摄。

答案 1 :(得分:0)

尝试这个确实有效,但最好覆盖模型文件。

感谢这篇文章。 Single Cart multiple websites in Magento

我已经采用了不同的方式并且它有效:我有多个域的单一安装和存储和单个SSL

我有一个主网站,我拥有其他网站上的所有产品,并使用SSL设置。 1.在多家商店之间共享客户帐户: 您可以在此处配置此功能:System -> Configuration -> Customer Configuration -> Share Customer Accounts ->Global 2.在Magento多商店网站之间分享购物车内容:

Magento为每个商店使用单独的购物车会话。要在结帐会话中使用一个网站,您需要修改Mage_Checkout_Model_Session课程。 将此文件:app/code/core/Mage/Checkout/Model/Session.php复制到:app/code/local/Mage/Checkout/Model/Session.php

之后,将以下源代码添加到类中:

class Mage_Checkout_Model_Session extends Mage_Core_Model_Session_Abstract
{
   const CHECKOUT_STORE_ID = 1;

   public function getCheckoutStoreId()
   {
      return self::CHECKOUT_STORE_ID;
   }

CHECKOUT_STORE_ID1更改为包含所有产品和SSL的Magento商店ID。

接下来,找到文件中的所有这些元素:

Mage::app()->getStore()

并将其更改为:

Mage::app()->getStore($this->getCheckoutStoreId())

就是这样!

清除Magento缓存并检查您的商店。现在,您的Magento将使用一个购物车用于不同的多域商店网站。 该解决方案有3个局限性:

  1. 购物车中的所有价格都来自您选择的商店(使用 CHECKOUT_STORE_ID)。所以,如果你有不同的价格 商店不会在购物车中使用。
  2. 购物车中的货币将与您选择的商店中的货币相同。
  3. 用于编辑购物车中商品的链接不会将客户重定向到原始购物车网站。