Quel est la différence entre getAllVisibleItems() et getAllItems() ?

septembre 12th, 2015 | by | magento

Sep
12

Avant de voir les résultats obtenus en appelant ces 2 fonctions, voyons déjà ce qu'elles ont dans le ventre.

Ces fonctions sont utilisées pour récupérer tous les produits d'une commande :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Charger une commande spécifique
$order_id = 100000123;
$order = Mage::getModel("sales/order")->load($order_id);
 
$items = $order->getAllItems(); 
// Ou
$items = $order->getAllVisibleItems();
 
foreach ($items as $itemId => $item)
{
    echo "SKU : ".$item->getSku()."<br />";
    /* d'autres infos :
    $item->getName();
    $item->getPrice();
    $item->getProductId();
    $item->getQtyOrdered();*/
}

Avec le code ci-dessus, on récupère une commande et affiche les infos des produits.

Voyons maintenant le code de chacune des deux fonctions qui nous intéressent :

1
2
3
4
5
6
7
8
9
10
public function getAllItems()
{
    $items = array();
    foreach ($this->getItemsCollection() as $item) {
       if (!$item->isDeleted()) {
          $items[] = $item;
       }
    }
    return $items;
}
1
2
3
4
5
6
7
8
9
10
public function getAllVisibleItems()
{
    $items = array();
    foreach ($this->getItemsCollection() as $item) {
       if (!$item->isDeleted() && !$item->getParentItemId()) {
          $items[] = $item;
      }
    }
    return $items;
}

Comme on peut le voir la seule différence se situe dans la condition avec l'ajout de && !$item->getParentItemId()

Qui ne récupèrent les produits, que s'ils sont parents. Cela signifie que si vous avez un produit configurable dans votre commande/panier getAllVisibleItems ne récupèrera que le produit parent alors que
getAllItems récupèrera les 2 produits (parent ET enfant)

Avec getAllItems() :

SKU : TsIbiza
Nom : Tshirt Ibiza
Prix : 24.9200
ID : 17212
quantité : 1.0000
SKU : TsIbizaFit
Nom : Tshirt Ibiza Fitness
Prix : 0.0000
ID : 17213
quantité : 1.0000

Avec getAllVisibleItems()

SKU : TsIbiza
Nom : Tshirt Ibiza
Prix : 24.9200
ID : 17212
quantité : 1.0000

Pour conclure, il est préférable d'utiliser getAllVisibleItems pour avoir la quantité exacte de produits.

No Comments »

Réorganiser les blocks dans les fichiers xml des layout

septembre 12th, 2015 | by | magento

Sep
12

Pour afficher les blocks dans les différentes positions de votre template (exemple : left, right, content…) Magento utilise les fichiers xml qui se trouvent dans le dossier "app\design\frontend\default\VOTRE_THEME\layout". Pour changer la façon, l'endroit ou même l'ordre d'affichage, cela est très simple.

Magento met à disposition des outils pour pouvoir attribuer des blocs de contenu à des blocs structurels.
Exemple : un bloc cms d'un encart promos dans la colonne droite du template.
Pour cela, il va falloir modifier les fichiers layout correspondant à la page où l'on veut afficher notre bloc de contenu. On va pouvoir les déplacer et les ordonner comme l'on souhaite.

Pour changer l'ordre, commencez par trouver le block que vous voulez déplacer.
Exemple pour déplacer le bloc pour comparer les produits :

1
2
3
4
5
6
7
<reference name="right">
            <block type="catalog/product_compare_sidebar" before="cart_sidebar" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
        </reference>
 
        <reference name="left">
            <block type="catalog/product_compare_sidebar" before="-" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
        </reference>

Pour afficher le bloc en premier :

1
before="-"

Pour afficher le bloc en dernier :

1
after="-"

Pour afficher un bloc avant un autre bloc :

1
before="block_name"

Pour afficher un bloc après un autre bloc :

1
after="block_name"

No Comments »

Désactiver la redirection automatique lors de l’ajout d’un produit au panier

mars 26th, 2015 | by | magento

Mar
26

Il y a 2 cas d'école lorsque l'on ajoute un produit à son panier : rediriger le client vers le panier récapitulatif ou bien laisser la personne sur la page (AJAX ou redirection vers la page originale).
Par défaut magento envoie le client vers le panier.

Désactiver la redirection automatique lors de l'ajout d'un produit au panier

Pour choisir la seconde option, point besoin de mettre les mains dans le cambouis c'est simplement une option :
Système -> Configuration -> Ventes -> Commander -> Panier -> "Rediriger vers le panier après l'ajout d'un produit"
Nous parlerons peut-être bientôt d'une version AJAX sans module...

 

No Comments »

Récupérer le chemin de la photo en cache d’un produit Magento

janvier 22nd, 2015 | by | magento

Jan
22

 

Vous pouvez récupérer le chemin de la photo en cache d'un produit ainsi que de la vignette avec ce petit bout de code :

1
2
3
4
$productId = 23; // ID produit
$product = Mage::getModel('catalog/product')->load($productId); // chargement du produit
$imageUrl = $product->getImageUrl(); // chemin de l'image
$imageThumbnailUrl = $product->getThumbnailUrl(); // chemin de la vignette

Le résultat ressemblera à :

1
2
http://www.mon-site.com/media/catalog/product/cache/1/image/265x/9df78eab33525d08d6e5fb8d27136e95/p/r/produit_15_cm_1.jpg
http://www.mon-site.com/media/catalog/product/cache/1/thumbnail/75x75/9df78eab33525d08d6e5fb8d27136e95/p/r/produit_15_cm_1.jpg

Les images des produits en cache se trouvent dans le dossier /media/catalog/product/cache/X/
avec X qui correspond à l'identifiant de votre magasin.
Ensuite ici dans notre exemple pour /p/r/, c'est les 2 premières lettres du nom du fichier pour ranger les images dans des dossiers.

Pour tout savoir de la création des URL des images produits voilà un petit lien : Deconstructing the cache image path on Magento

 

No Comments »

Tutoriel : Règles de prix panier + bonus promotions avancées

janvier 22nd, 2015 | by | magento

Jan
22

Les règles de prix catalogue ou panier pour gérer des promotions peuvent devenir rapidement très compliquées et entrainer des erreurs ou des oublis. Nous allons voir précisemment dans cet article comment créer ces règles, avec les conditions à mettre, les actions à faire et toutes les options disponibles. Nous verrons également des exemples précis sur lesquels vous pourrez vous appuyer pour des règles plus complexes.

Les règles de prix panier ont 4 options :

  • Remise en pourcentage du prix du produit
  • Remise d'une valeur fixe
  • Remise d'une valeur fixe pour l'ensemble du panier
  • X achetés, Y gratuits (la valeur de la remise est Y)

Pour créer une nouvelle règle, nous avons à renseigner des champs obligatoires indiqués par une petite étoile rouge.

 

Règles de prix panier

 

Remise en pourcentage du prix du produit

Produit en promotion par rapport au prix original. Par exemple : Lorsque l'on renseigne une valeur de 15 dans le champ "Remise" cela veut dire que le prix final du produit sera le prix original avec une réduction de 15%.
Il y a plusieurs options à notre disposition, voici les 4 sections :

  • X% pour tout
  • X% pour une catégorie particulière
  • X% pour des produits spécifiques
  • X% pour des produits spécifiques lorsque vous en commandez plus de Y

Pour paramétrer l'option "Remise en pourcentage du prix du produit" vous devez suivre les étapes suivantes

Depuis le tableau de bord, aller dans "Promotions" -> "Règles de prix panier". Cette page affiche toutes les promotions de votre boutique, vous pouvez les modifier ou les supprimer. Pour ajouter une nouvelle réduction, cliquez sur "Ajouter une nouvelle règle" en haut à droite de l'écran. Remplissez l'onglet "Informations générales" comme indiqué précédemment.

Pour paramétrer le "X% pour tout" vous devez suivre les étapes suivantes :Voici un exemple avec 15% de réduction.

Onglet Conditions : Pas besoin de cet onglet pour ce paramétrage.

Onglet Actions : Suivre les indications sur la capture d'écran ci-dessous. Une fois celles-ci faites, cliquez sur "Sauvegarder".

 

Remise en pourcentage du prix du produit

 

Pour paramétrer l'option "X% pour une catégorie particulière" vous devez suivre les étapes suivantes : Voici un exemple avec 15% de réduction sur une seule catégorie.

Onglet Conditions : Pas besoin de cet onglet pour ce paramétrage.

Onglet Actions : Suivre les indications sur la capture d'écran ci-dessous. Une fois celles-ci faites, cliquez sur "Sauvegarder".

 

X% pour une catégorie particulière

 

Pour paramétrer l'option "X% pour des produits spécifiques" vous devez suivre les étapes suivantes : Voici un exemple avec 15% de réduction sur les 3 produits ayant ces SKU.

Onglet Conditions : Pas besoin de cet onglet pour ce paramétrage.

Onglet Actions : Suivre les indications sur la capture d'écran ci-dessous. Une fois celles-ci faites, cliquez sur "Sauvegarder".

 

X% pour des produits spécifiques

 

Pour paramétrer l'option "X% pour des produits spécifiques lorsque vous en commandez plus de Y" vous devez suivre les étapes suivante

Pour faire une réduction en pourcentage sur des produits spécifiques de votre boutique seulement si un client commande un certains nombre de ces produits, suivez ces étapes. Dans l'exemple nous ferons 15% sur 3 SKU différents si le client commande 5 produits ou plus de ces 3 SKU.

Onglet Conditions : Sélectionnez "Sous-sélection de produits" en cliquant sur le petit + vert et créez la condition si le panier contient 5 produits ou plus sur une combinaison de 3 produits.

 

X% pour des produits spécifiques lorsque vous en commandez plus de Y

 

Onglet Actions : Appliquer la promotion seulement pour les 2 produits avec les SKU définis et pas sur les autres produits du panier. Une fois que vous renseignez les éléments, cliquez sur sauvegarder.

 

X% pour des produits spécifiques lorsque vous en commandez plus de Y

 

Remise d'une valeur fixe

Cette option est pour faire une remise fixe du prix original de chaque produit dans votre panier. Par exemple : En mettant 5 dans "Remise" cela signifie que le prix final du produit aura 5€ de réduction.

Pour paramétrer "Remise d'une valeur fixe" vous devez suivre les étapes suivantes :

Onglet Conditions : Pas besoin de cet onglet pour ce paramétrage.

Onglet Actions : Sélectionnez simplement "Remise d'une valeur fixe" dans "Appliquer" puis mettez 5 dans "Remise". Même si c'est très simple, testez quand même sur votre site.

 

Remise d'une valeur fixe

 

Remise d'un montant fixe pour l'ensemble du panier

C'est exactement le même paramétrage que "Remise d'une valeur fixe" sauf qu'au lieu d'imputer la remise à chaque produit dans le panier, cela ne se fera qu'une seule fois sur le montant total.

X achetés, Y gratuits (la valeur de la remise est Y)

Pour paramétrer "X achetés, Y gratuit" vous devez suivre les étapes suivantes :

Onglet Conditions : Pas besoin de cet onglet pour ce paramétrage.

Onglet Actions : Dans notre exemple nous allons offrir 1 produit pour l'achat de 5 produits identiques. Dans le champ remise cela va être le nombre de produits offerts, donc 1. Dans le champ "Quantité pour obtenir la remise (Achetez-en X)" mettre 5. Vous pouvez n'appliquer cette offre qu'à certains produits en utilisant la partie en dessous "Appliquer la règle seulement aux articles du panier qui remplissent les conditions suivantes" comme nous l'avons vu précédemment.

 

X achetés, Y gratuit

 

Nous avons vu toutes les options ou presque disponible sous Magento.
En revanche il arrive qu'il faille aller plus loin dans les règles de promotion et pour cela je vous conseille le module Special Promotions d'Amasty qui permet bien plus de choses :

- Avoir une réduction si le montant total du panier est supérieur à un prix fixe. Acheter des produits pour 500€ et avoir une remise sur le produit le moins cher (ou le plus cher) sélectionné dans certaines catégories.
- Paramétrer n'importe quelle combinaison de réduction avec les produits les moins chers ou les plus chers. Acheter 5 produits et avoir le plus cher avec 60% de réduction.
- Chaque n-ième produit pour un prix fixe. Acheter une télévision et en avoir une autre pour seulement 200€.
- Chaque n-ième produit avec une réduction. Chaque 2ème t-shirt (3ème, 4ème…) avec 20%, 30%, 40% ou même gratuit.
- Acheter X et avoir Y avec une réduction. Acheter 2 téléphones et obtenir 50% de réduction sur les écouteurs.
- Acheter X et avoir Y à un prix fixe. Acheter un ordinateur portable et obtenir un sac pour seulement 50€
- Tous les produits après N à un prix fixe. Acheter 3 produits au tarif normal (60€) et payer seulement 50€ pour les suivants.
- Tous les produits après N avec une réduction. Acheter 4 produits et avoir 20% de réduction sur les suivants.
- Afficher les différentes remises séparemment. "30€ de reduction sur chaque ordinateur : Lenovo G580 - 135€"
- Et bien d'autre choses...

Vous avez également une version Pro : Lien vers la version Pro qui permet en plus :

- Créer des remises suivant le nombre de commande que les clients ont passées. 20% pour tous les clients qui ont fait plus de 10 commandes.
- Créer des remises suivant le nombre de jours depuis l'inscription du client. 10% de réduction pour les clients qui sont membre de la boutique depuis déjà un an.
- Et bien d'autre choses...

Le support est réactif et vous avez une FAQ très complète pour pouvoir paramétrer le module comme vous le souhaitez.

No Comments »