Méthodes utiles pour la gestion des clients (customers)

  • De le 08 octobre 2011
  • Difficulté : 1/4

Méthodes utiles pour la gestion des clients (customers) Petit aide mémoire sur les méthodes utilisées régulièrement pour la gestion des clients : charger l'objet customer, récupérer les commandes associées, les adresses, les commentaires...

Session

Le client est-il connecté ?

$isLoggedIn = Mage::helper('customer')->isLoggedIn();

Récupérer l'objet customer associé à la session

$customer = Mage::getSingleton('customer/session')->getCustomer();
// ou
$customer = Mage::helper('customer')->getCustomer();
// ou
$customer = Mage::helper('customer')->getCurrentCustomer();

Déconnecter le client

Mage::getSingleton('customer/session')->logout();
Charger l'objet customer

Selon l'identifiant du client

$customer = Mage::getModel('customer/customer')->load(1);

Selon l'adresse e-mail du client

$webisteId = Mage::app()->getStore()->getWebsiteId();

$customer = Mage::getModel('customer/customer')
            ->setWebsiteId($webisteId)
            ->loadByEmail('customer@domain.com');

Depuis une collection de clients

$customers = Mage::getModel('customer/customer')->getCollection();

foreach($customers as $customer) { Zend_debug::dump($customer->getData()); }
Afficher les données du client

Données de base

$customer->getId();

$customer->getEmail();

$customer->getGroupId();

$customer->getIncrementId();

$customer->getCreatedAt();
$customer->getCreatedAtTimestamp();

$customer->getUpdatedAt();

$customer->getIsActive();

// Nom complet : Prefix Firstname Middlename Lastname Suffix
$customer->getName();

$customer->getPrefix();

$customer->getFirstname();

$customer->getMiddlename();

$customer->getLastname();

$customer->getSuffix();
Adresses du client

Adresses enregistrées

$addresses = $customer->getAddresses();

foreach($addresses as $address) {
    Zend_debug::dump($address->getData());
}

Adresse de facturation par défaut

$billing = $customer->getPrimaryBillingAddress();
// ou
$billing = $customer->getDefaultBillingAddress();

Adresse de livraison par défaut

$shipping = $customer->getPrimaryShippingAddress();
// ou
$shipping = $customer->getDefaultShippingAddress();

Afficher l'adresse au format HTML

$address = $customer->getPrimaryBillingAddress();

echo $address->format('html');
Newsletter

Le client est-il inscrit à la newsletter ?

$isSubscribed = Mage::getModel('newsletter/subscriber')->loadByCustomer($customer)->isSubscribed();

Inscrire le client à la newsletter

$customer->setIsSubscribed(1)->save();

Désinscrire le client de la newsletter

$customer->setIsSubscribed(0)->save();
Commandes

Récupérer toutes les commandes (orders) du client

$orders = Mage::getResourceModel('sales/order_collection')
            ->addAttributeToSelect('*')
            ->joinAttribute('shipping_firstname', 'order_address/firstname', 'shipping_address_id', null, 'left')
            ->joinAttribute('shipping_lastname', 'order_address/lastname', 'shipping_address_id', null, 'left')
            ->addAttributeToFilter('customer_id', $customer->getId())
            ->addAttributeToSort('created_at', 'desc');

foreach($orders as $order) { Zend_debug::dump($order->getData()); }
Commentaires

Récupérer les commentaires (reviews) ajoutés par le client

$comments = Mage::getModel('review/review')->getProductCollection()
             ->addStoreFilter(Mage::app()->getStore()->getId())
             ->addCustomerFilter($customer->getId())
             ->setDateOrder();

foreach($comments as $comment) { Zend_debug::dump($comment->getData()); }
6 commentaires

Commentez cet article : Méthodes utiles pour la gestion des clients (customers)

Pau Le 16/11/2011 à 07:10
Merci beaucoup pour cet article!
Commentaire #1
eddz Le 13/01/2012 à 10:08
Merci beaucoup pour cette aide mémoir
Commentaire #2
Neo Le 17/01/2012 à 15:08
Merci !pour l'article
Commentaire #3
Neo Le 17/01/2012 à 15:11
Une question?
Comme étant débutant en magento !J'aimerais etre capable de maitriser Magento !Est -ce que quelqu'un
peut me donner quelques conseil pour pouvoir y arriver?
Merci d'avance!
Commentaire #4
Magentix Le 17/01/2012 à 15:15
Magento est assez vaste... Un livre intéressant pour commencer :
http://www.magentix.fr/divers/livre-magento-francais-eyrolles.html

Sinon règle de base, ne pas toucher au core ;)
Commentaire #5
giyggboukzi Le 27/04/2013 à 13:19
2PHQKJ , [url=http://nhyuinusviln.com/]nhyuinusviln[/url], [link=http://jeomfhqcvcan.com/]jeomfhqcvcan[/link], http://oglporjdqyvk.com/
Commentaire #6
Rédiger un commentaire

Code de sécurité

* champs obligatoires