Utiliser les méthodes de Magento dans un fichier PHP – Script externe Magento

Dans: Magento

2 mar 2010

Pour certains développements spécifiques (intégration de produits promotionnels dans un blog WordPress par exemple), il est intéressant d’avoir accès aux données de la base de données de Magento.

3 solutions :

  1. Aller chercher l’information dans la base de données (étant donné le modèle EAV, c’est long à mettre en place mais les requêtes sont plus rapides. Pour les données en sessions, c’est impossible sauf si elles sont stockées en BDD et non en fichiers dans var/session)
  2. Utiliser les collections d’objets de Magento (pratique, efficace, mais lent sur un volume important de données)
  3. Utiliser les Web Services (pratique, efficace, peut être exécuter à distance, un peu plus long à mettre en place et idem pour le problème de sessions)

Ici nous utiliserons la 2ème solution pour comme coder dans un fichier PHP quelconque du serveur et avoir accès aux ressources de Magento.

Pour cela nous pouvons créer un fichier count-cart.php (par exemple) à la racine du serveur :

<?php
require_once 'app/Mage.php';
umask(0);
Mage::app('default');
try{
/** Code à utiliser **/
// Affiche le nombre d'article dans le panier de Magento
echo Mage::helper('checkout/cart')->getCart()->getItemsCount();
}catch (Exception $e){
die($e->getMessage());
}
?>

6 Commentaires pour Utiliser les méthodes de Magento dans un fichier PHP – Script externe Magento

Avatar

Export des clients invités ayant leur commande « terminée » sous Magento - Frédéric Martinez

mars 2nd, 2010 à 2 h 02 min

[...] Une fois les données récupérées, nous créons un fichier .CSV (via un fichier externe, donc hors module Magento) accessible uniquement aux administrateurs du [...]

Avatar

Oluha

août 10th, 2015 à 16 h 35 min

Bonjour,

J’essaye justement de récupérer des sessions dans une page externe mais j’ai de gros soucis.
La variable de session s’affiche toujours bien dans une page magento, mais sur ma page externe c’est complètement aléatoire !

Voici comment j’initialise ma variable dans Magento :

$session = Mage::getSingleton("core/session",  array("name"=>"frontend"));
$session->setData("nummax", $expire);

Et comment je la récupère dans ma page externe :

require_once($_SERVER['DOCUMENT_ROOT'].'\app\Mage.php');
umask(0);
Mage::app();
$session = Mage::getSingleton("core/session",  array("name"=>"frontend"));
echo $session->getData("nummax");

J’inclus ce bout de code dans différentes pages externes, dès fois j’ai bien ma valeur, des fois c’est vide.

Une idée ?
Je sèche complètement…

Je suis en version 1.9.

Merci

Avatar

Oluha

août 11th, 2015 à 14 h 59 min

Bon en fait le problème survient quand je me déconnecte et que je me reconnecte.
A la 1ere connexion j’ai bien ma valeur. Si je me déconnecte et que je me reconnecte, je n’ai plus rien. Et ça refonctionne quand la session expire d’elle même.
J’essaye de supprimer ma valeur sur le logout mais rien n’y fait ou alors je ne le fais pas de la bonne façon et/ou au bon endroit.

J’ai mis ça dans function logoutAction() de AccountController.php :

Mage::getSingleton('core/session')->unsetAll();

Quelqu’un pour m’aider ?

Avatar

Frédéric Martinez

août 11th, 2015 à 15 h 09 min

@Oluha : Une session Magento est un cookie lié à la session de l’internaute.
Ainsi, si tu te déconnectes, tu perdras forcément les sessions.

Si tu veux conserver les valeurs autour de cette déconnexion, tu ne dois pas utiliser les sessions mais des cookies : http://blog.chapagain.com.np/magento-create-read-delete-cookie/

Avatar

Oluha

août 11th, 2015 à 15 h 33 min

Non je ne veux pas garder la valeur justement mais lors de la reconnexion celle-ci doit normalement se recréer avec mon $session->setData.
Sauf que je n’ai plus rien quand ensuite j’appelle le getData dans une page que j’ai appelé lors de la 1ere connexion.
Par contre, le getData fonctionne si je l’appelle sur une 2eme page externe qui n’a pas été appelée la 1ere fois.

Je pense qu’il y a un mélange dans les sessions, la 1ere page doit garder en mémoire la 1ere session mais qui a été vidée lors du logout et donc c’est pour ça que je n’arrive plus à récupérer ma valeur lors de la 2eme connexion.

Mais je ne vois pas comment faire pour que lors du logout, ma page externe perde sa session également.

Je ne sais pas si je suis très claire… :-)

Avatar

Julie

octobre 23rd, 2015 à 12 h 38 min

Article très intéressante !!!
Bravo !!

Formulaire pour Commenter

Si vous en avez besoin, entourez votre code :

PHP : [php]echo $variable[/php]
XML : [xml]<default></default>[/xml]

Je m'appelle Frédéric Martinez.

Je suis Freelance Magento, fondateur de l'agence web e-commerce PH2M et anciennement étudiant en Master MIAGE à Toulouse.

Ce site présente mes réalisations professionnelles, personnelles et universitaires.

Magento Certified Developer Plus

rss_32 twitter_32 Magento

  • Vincent MARMIESSE: Bonjour, Attention depuis Magento 1.9.2.0, les blocs CMS sont en cache ! Cela ne pose pas de pro [...]
  • Java2dev: Bonjour, pour l'Etape 1 a quel niveau on met les codes? dans quel folder et c'est un fichier a edit [...]
  • manuel: Bonjour Frédéric, j'aimerais savoir comment enlever l'option de ( signature obligatoire ) de mon m [...]
  • Arsene: Bonjour a tous, j'aimerais savoir comment créer un module qui propose des options d'assurance su [...]
  • Frédéric Martinez: @Thomas : Il y aura toujours de la perte sur les personnes ne retournant pas sur la page de success. [...]