1

私はこれを機能させるためにあらゆることを試みたので、これは少し混乱するかもしれません。必要なのは、ブランドサイト(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日間見つけたすべてを読んで試しました。セッションとキャッシュディレクトリを常に削除し、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の外部からアクセスすることはできません(したがって、セッションデータにアクセスすることはできません)。[管理]>[システム]>[構成]>[Web]>[セッションCookie管理]>[Cookieパス]でCookieのパスを変更する必要があります。/に設定してみてください

于 2013-07-24T18:14:08.057 に答える
1

あなたが忘れたと思います:

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

Mage::app()
于 2013-01-19T04:52:40.530 に答える
1

必要なのが数量だけの場合は、なぜmagentoをインスタンス化するのか。クライアント側のCookie(つまり、cart_qty)を設定してから、メインサイトのヘッダーでこのCookieを読み取ります。

于 2012-06-23T04:26:13.713 に答える
0

あなたのコードで:代わりに:

Mage::app();

使用する

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

&uはあなたの出力を取得します...

于 2016-04-12T05:30:32.743 に答える