Информация о корзине Magento для внешнего веб-сайта

Среда: Magento Enterprise 1.12, Redhat Linux

Я пытаюсь разработать автономную php-страницу в Magento (Enterprise 1.12) с минимальным кодом для отображения информации о корзине покупок. Это будет использоваться внешним веб-сайтом, который отображает основную информацию о корзине из магазина Magento. Я стараюсь избегать полномасштабной пользовательской модели MVC, если это возможно, поскольку я просто пытаюсь получить минимальную информацию только для чтения.

Я хочу отобразить:

  • количество товаров в корзине (независимо от того, вошли ли они в систему)
  • названия товаров в корзине, если она не пуста
  • вошел ли пользователь в систему
  • имя клиента, если они вошли в систему

Я видел много сообщений об этом в сети и безуспешно пробовал все примеры.

Вот что я пытаюсь:

require_once 'app/Mage.php';
umask(0);
Mage::app();

// The following three variables are successfully set
// but they don't help with what I'm trying to do

$session = Mage::getModel('core/cookie')->get('frontend');
$cartid = Mage::getModel('core/cookie')->get('CART');
$sid = Mage::getModel("core/session")->getEncryptedSessionId();
echo "session=$session <br />\n";
echo "cartid=$cartid <br />\n";
echo "sid=$sid  <br />\n"; 

// None of the following seem to work, whether or not I''m logged in
$cart = Mage::getSingleton('checkout/cart')->getItemsCount();
echo "cart items count: $cart <br />\n";
$cart = Mage::helper('checkout/cart')->getItemsCount();
echo "cart items count: $cart <br />\n";
$cart = Mage::helper('checkout/cart')->getCart()->getItemsCount();
echo "cart items count: $cart <br />\n";
$cart = Mage::helper('checkout/cart')->getCart()->getQuote()->getItemsCount();
echo "cart items count: $cart <br />\n";
$count = Mage::helper('checkout/cart')->getSummaryCount();
echo "cart items count: $cart <br />\n";

// None of the following seem to work. I'm logged in, but the following code says I'm not.
$session = Mage::getSingleton("customer/session");
if($session->isLoggedIn()) { echo "logged in <br />\n"; } else { echo "not logged in <br />\n"; }
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
if($session->isLoggedIn()) { echo "logged in <br />\n"; } else { echo "not logged in <br />\n"; }

Любая помощь очень ценится.


person Dave    schedule 11.02.2013    source источник


Ответы (1)


Обновлено

Я устанавливаю путь к файлам cookie через раздел администратора в разделе Система-> Конфигурация-> Веб-> Управление файлами cookie сеанса.

Затем я создал test.php и скопировал ваш код в файл, добавив строку сразу после Mage::app():

Mage::getSingleton('core/session', array('name'=>'frontend'));
person dmanners    schedule 11.02.2013
comment
Большое спасибо за ваш ответ, но он возвращает нулевое значение, с чем-либо в корзине или без него. Тот же результат независимо от того, вошел я в систему или нет. - person Dave; 12.02.2013
comment
Попробуйте указать путь к файлам cookie / в системном администраторе в разделе Система-> Конфигурация-> Веб-> Управление файлами cookie сеанса. - person dmanners; 12.02.2013
comment
Или попробуйте строку Mage::getSingleton('core/session', array('name'=›'frontend')); после вызова Mage::app(). - person dmanners; 12.02.2013
comment
Спасибо, я тоже только что попробовал Mage::getSingleton('core/session', array('name'=›'frontend')); как вы описываете, но в поведении нет никаких изменений. Как и раньше, количество в корзине не отображается, и он не определяет, вошел ли пользователь в систему. Я вошел в систему, и у меня есть 2 товара в корзине, но ни одна из попыток не показывает количество товаров в корзине или не обнаруживает, что я я вошел в систему. - person Dave; 12.02.2013
comment
Я должен упомянуть, что все файлы cookie правильно обнаруживаются. Обратите внимание на первые несколько строк после Mage::app();. Но я не начал процесс оформления заказа, поэтому мне интересно, не является ли модель "оформить заказ/корзина" тем, что я хочу для содержимого корзины? - person Dave; 12.02.2013
comment
Для меня после изменения пути к файлу cookie и создания файла test.php с вашим кодом я могу добавить элемент в корзину, и тогда он появится в моем test.php. Все, что я могу сказать, это то, что без строки Mage::getSingleton('core/session', array('name'=›'frontend')); Это не работает для меня. В обоих случаях файлы cookie у меня также проходят нормально, но информация о корзине будет отображаться только после вызова ядра/сеанса. - person dmanners; 12.02.2013
comment
Я очень ценю ваш отзыв, но я все перепроверил и не вижу решения, которое вы описываете. Я подтвердил: a) Путь к файлам cookie установлен на / в Система-> Конфигурация-> Веб-> Управление файлами cookie сеанса; б) Я поместил строку кода, которую вы описали, сразу после Mage::app(); в) сбросил кеш; г) Я повторил попытку добавить товар в корзину в двух браузерах. Не могли бы вы опубликовать полный код скрипта, который работает для вас. Это должно быть 5 строк кода. Также не могли бы вы подтвердить, что используете EE 1.12. - person Dave; 12.02.2013