Проверка входа в Magento на внешней странице - PullRequest
1 голос
/ 27 апреля 2010

Я пытаюсь получить доступ к элементам из Magento на внешней странице (тот же сервер, тот же домен и т. Д., И т. Д.). Я хочу посмотреть, вошел ли пользователь в Magento, прежде чем показывать ему определенные части на сайте.

Имейте в виду, что этот код существует за пределами Magento.

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

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

if($session->isLoggedIn()) 
  echo "hi";

$cart = Mage::helper('checkout/cart')->getCart()->getItemsCount();
echo $cart;

$ корзина возвращает 0, где у меня определенно есть товары в моей корзине. isLoggedIn () также возвращает false. Что я здесь не так делаю? Есть ли в Magento опция, которую мне нужно включить или выключить, чтобы получить доступ к этой информации за пределами Magento?

Ответы [ 3 ]

1 голос
/ 30 апреля 2010

Включаете ли вы Mage.php (который определяет getSingleton)?

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

Что находится в $ session после вызова getSingleton()?

print_r ($session);

РЕДАКТИРОВАТЬ: я попытался это на моем конце и не смог получить точные данные isLoggedIn () или getItemsCount (). Когда я выгружал $ session, он отображал все поля как защищенные.

Меня не интересует требование входа пользователя в систему ... Я просто хочу получить доступ к данным уже зарегистрированного сеанса.

У кого-нибудь еще есть мысли по этому поводу? Кажется, что все примеры до 1.4.x.

1 голос
/ 28 апреля 2010

Используя приведенный выше код, я создал файл php в папке Magento. Оттуда, добавили количество товаров в корзине и независимо от того, вошли вы в систему или нет, в массив и закодировали его как json. Я использовал JQuery на своей внешней странице, чтобы получить файл и извлечь нужные данные.

Не совсем идеальная ситуация, но пока она работает.

0 голосов
/ 02 июля 2013
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';


}
...