1

外部ページ(同じサーバー、同じドメインなど)でMagentoからアイテムにアクセスしようとしているときに、ここで壁にぶつかっています。サイトの特定の部分を表示する前に、ユーザーがMagentoにログインしているかどうかを確認したいと思います。

このコードはMagentoの外部に存在することに注意してください。

Mage :: app( "default");
Mage :: getSingleton( "core / session"、array( "name" => "frontend"));

if(empty($ session))
{{
  $ session = Mage :: getSingleton( "customer / session");
}

if($ session-> isLoggedIn())
  エコー「こんにちは」;

$ cart = Mage :: helper('checkout / cart')-> getCart()-> getItemsCount();
エコー$カート;

$ cartは0を返します。ここで、カートには間違いなく商品が入っています。isLoggedIn()もfalseを返します。私はここで何が間違っているのですか?Magentoの外部でこの情報にアクセスできるようにするには、オンまたはオフにする必要があるMagentoのオプションはありますか?

4

3 に答える 3

1

上記のコードを使用して、Magentoフォルダーにphpファイルを作成しました。そこから、カート内のアイテムの数と、ログインしているかどうかを配列に追加し、jsonとしてエンコードしました。外部ページでjqueryを使用してファイルを取得し、必要なデータをプルしました。

理想的な状況ではありませんが、今のところは機能します。

于 2010-04-28T15:23:28.077 に答える
1

Mage.php(を定義するgetSingleton)を含めていますか?

require_once ($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');

getSingleton()呼び出し後、$ sessionには何が含まれていますか?

print_r ($session);

編集:私は自分の側でこれを試しましたが、正確なisLoggedIn()またはgetItemsCount()データを取得できませんでした。$ sessionをダンプすると、すべてのフィールドが「保護されている」と表示されます。

ユーザーにログインを要求することに興味はありません...すでにログインしているセッションのデータにアクセスしたいだけです。

他の誰かがこれについて何か考えを持っていますか?そこにあるすべての例は、1.4.xより前のもののようです。

于 2010-04-30T03:48:39.943 に答える
0
require_once "app/Mage.php";

umask(0); 

Mage::app();

//  require_once $_SERVER['DOCUMENT_ROOT'] . "/mage1/app/Mage.php";

// Customer Information

$firstname = "krishana";

$lastname = "singh";

$email = "krish.bhati@gmail.com";

$password = "myverysecretpassword";


// Website and Store details

$websiteId = Mage::app()->getWebsite()->getId();

$store = Mage::app()->getStore();

$customer = Mage::getModel("customer/customer");

$customer->website_id = $websiteId;

$customer->setStore($store);


$mageRunCode = isset ( $_SERVER ['MAGE_RUN_CODE'] ) ? $_SERVER ['MAGE_RUN_CODE'] : '';

$mageRunType = isset ( $_SERVER ['MAGE_RUN_TYPE'] ) ? $_SERVER ['MAGE_RUN_TYPE'] : 'store';

$app = Mage::app ( $mageRunCode, $mageRunType );

Mage::getSingleton('core/session', array('name' => 'frontend')); 

$session = Mage::getSingleton('customer/session');

$session->start();

$customer->loadByEmail($email); 

$customer_id= $customer->getId();


if($customer_id){   

Mage_Core_Model_Session_Abstract_Varien::start();

$session->login($email, $password);

$session->setCustomerAsLoggedIn($session->getCustomer()); 

echo $session->isLoggedIn() ? $session->getCustomer()->getName().' is online!' : 'not logged in';


}
于 2013-07-02T06:14:03.313 に答える