Pregunta

Estoy aquí golpear una pared al intentar acceder a los elementos de Magento en páginas externas (mismo servidor, mismo dominio, etc, etc). Quiero ver si el usuario se registra en Magento antes de mostrarlos en ciertas partes del sitio.

Tenga en cuenta que este código existe fuera de 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;

$ carrito devuelve 0, en donde definitivamente tengo productos en mi carrito. IsLoggedIn () también devuelve false. ¿Qué estoy haciendo mal aquí? ¿Hay una opción en Magento que necesito para activar o desactivar para poder acceder a esta información fuera de Magento?

¿Fue útil?

Solución

Usando el código anterior, he creado un archivo PHP en la carpeta de Magento. A partir de ahí, ha añadido el número de artículos en el carro y si fue iniciado sesión o no a una matriz y codificado como JSON. He utilizado algunas jQuery en mi página externa para agarrar el archivo y extraer los datos que necesitaba.

No es la situación ideal, pero funciona por ahora.

Otros consejos

¿Está usted incluyendo Mage.php (que define getSingleton)?

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

Lo que hace $ sesión tiene en él después de la llamada getSingleton()?

print_r ($session);

EDIT: He intentado esto en mi final y no era capaz de obtener datos precisos IsLoggedIn () o getItemsCount (). Cuando tiré a cabo su sesión de $ muestra todos los campos como 'protegido'.

No estoy interesado en que el usuario tenga que entrar ... sólo quiero acceder a los datos desde el ya iniciado sesión en sesión.

Alguien más tiene alguna idea sobre esto? Todos los ejemplos por ahí parecen ser 1.4.x anterior.

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';


}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top