Я использую Mangeto 1.9.1
Я пытаюсь получить доступ к сеансу клиента magento за пределами magento в php файле в корневой папке magento.
Вот мой код:
<?php
error_reporting(E_ALL | E_STRICT);
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
$app = Mage::app('default');
Mage::app();
$customer_id = Mage::getSingleton('customer/session')->getId();
$GrandTotal = Mage::getModel('sales/quote')->loadByCustomer($customer_id)->getGrandTotal();
$HalfTotal = $GrandTotal / 2;
echo "Grand: $GrandTotal<br>Half: $HalfTotal";
?>
Мой magento установлен на субдомене, таком как beta.mymagento.com
Но, похоже, он не может получить доступ к сеансу. Как я могу это исправить?
Заранее спасибо!
У вас возникла проблема с выбором правильной сессии, потому что Magento сохраняет свой идентификатор сеанса в другом cookie, чем обычные PHP-приложения. Вам нужно сначала инициализировать основной сеанс и сказать ему, чтобы посмотреть на cookie с именем frontend, а не на то, что по умолчанию для PHP. Ваш код должен выглядеть следующим образом:
...
Mage::getSingleton('core/session', array('name' => 'frontend'));
$customer_id = Mage::getSingleton('customer/session')->getId();
...
Кроме того, вам, скорее всего, нужно только одно обращение к Mage::app()
.
Примечание. Если у вас есть несколько магазинов/веб-сайтов в вашей установке Magento, вам нужно будет вызвать Mage::app()
с соответствующими идентификаторами, например Mage::app('<website_code>', 'website');
,