MAGexpert : les experts en développement Magento
7oct/100

Supprimer les balises html des adresses d’envoi de chèques dans les mails et les commandes

Si vous intégrez du code html dans la boite d'information des adresses d'envoi de chèques, il est correctement interprété dans le tunnel de commande mais dans le mail, les balises sont affichées en texte.

Pour résoudre ce problème, éditez le fichier : app/design/frontend/votre_interface/votre_thème/template/payment/info/checkmo.phtml et remplacez :

<address>
<?php echo nl2br($this->htmlEscape($this->getMailingAddress())) ?>
</address>

par :

<address>
<?php echo nl2br(strip_tags($this->getMailingAddress())) ?>
</address>
2sept/100

Supprimer les htmls entities dans le Wysiwyg de magento

Dans l'éditeur Wysiwyg de magento qui est tinyMCE, lorsque vous éditez du texte, une fois l'éditeur désactivé, vous obtenez des caractères html : é, etc...

Si votre boutique est entièrement en UTF 8, vous pouvez les désactiver en éditant la configuration de tinyMCE.

Le fichier se trouve ici : js\mage\adminhtml\wysiwyg\tiny_mce\setup.js

On y trouve :

tinyMCE.init(this.getSettings(mode));

puis dans getSettings

        var settings = {
            mode : (mode != undefined ? mode : 'none'),
            elements : this.id,
            theme : 'advanced',
            plugins : plugins,

Il suffit de rajouter cette ligne pour désactiver les html entities :

entity_encoding : "raw"

Et vous obtiendrez un texte lisible pour tous lors de l'édition d'un produit, d'une page cms, etc...

1sept/100

Erreur : An error occurred while saving the URL rewrite

Si vous rencontrez cette erreur "An error occurred while saving the URL rewrite", vous pouvez la résoudre en réalisant ces opérations :

1. Créer une sauvegarde de votre base de donnée. (Système -> Outils -> Sauvegardes, Créer une sauvegarde)
2. Connecter vous à un phpmyadmin pour gérer votre base de donnée.
3. Trouver la table core_url_rewrite et vider cette table.
4. Supprimer le contenu du dossier var/cache
5. Puis ré indexer tous les indexes (Système -> Gestion des indexes, Tout sélectionner puis Actions : Reindex Data : Valider)

Et voila une boutique avec des URLs correctement ré-indexé.

21mai/100

Changer l’adresse de livraison par défaut

Au moment d'entrer ses informations de livraison la case cochée par défaut est "Livrer à une autre adresse", voici comment la changer :

  • Surcharger le Core de Magento en copiant le fichier app/code/core/Mage/Checkout/Block/Onepage/Billing.php dans app/code/local/Mage/Checkout/Block/Onepage/Billing.php
  • Remplacer la fonction isUseBillingAddressForShipping() par celle-ci :
public function isUseBillingAddressForShipping() {
    if (($this->getQuote()->getIsVirtual()) || (!$this->getQuote()->getShippingAddress()->getSameAsBilling())) {
        return true;
    }
    else {
        return false;
    }
}

Et c'est tout.

10mai/100

Changer le numéro d’une commande éditée (100001827-1)

Dans certain cas, le numéro d'une commande éditée peut poser problème (notamment lors d'une synchronisation des commandes avec un logiciel externe)

Pour changer la manière dont est créé le numéro de commande il suffit de vous rendre dans le Model : Mage_Adminhtml_Model_Sales_Order_Create

Pour la 1.3, ligne : 1192

$order->setIncrementId($originalId.'-'.$order->getEditIncrement());

Pour la 1.4, ligne 1174

'increment_id'              => $originalId.'-'.($oldOrder->getEditIncrement()+1)

Il vous suffit de personnaliser le code pour le reste c'est à vous de voir !

24mar/101

Récuperer la valeur du groupe de client par défault sur Magento

Voici la manière pour récupérer la valeur du groupe par défaut des nouveaux clients en fonction du store dans Magento :

Mage::getStoreConfig(Mage_Customer_Model_Group::XML_PATH_DEFAULT_ID, $storeId)

Ceci est une petite astuce, mais pourrait bien vous servir dans certain cas ! Cela vous permet de personnaliser votre magento en fonction des groupes de clients.

Notamment pour les promotions des professionnels en fonction de leur groupe de client.

22mar/100

Utiliser le cache de Magento pour vos fonctions trop gourmandes !

Voici une astuce permettant la mise en cache dans Magento de vos résultats de fonction.

Vous venez de développer une super fonction qui fait le café ?

Mais le seul hic, son temps d'exécution plombe les performances du serveur !

Ou pire encore elle augmente le temps de chargement de la page d'un temps non acceptable ?

La solution : Placer le résultat de celle ci dans le cache de Magento !

Vous avez 2 méthodes à connaitre : saveCache et loadCache.

Dans nôtre cas, nous chargions des promotions sur des options de magento. L'opération ce répète X fois le nombre d'option du produit et nous obtenions des générations de page dépassant 12s juste pour le html.

Avec cette solution, nous sommes redescendu sous la barre des 1s.

$optionpreselectprice = unserialize(Mage::app()->loadCache('identifiant-de-mon-cache'));		// Chargement de mon cache
	if( empty($optionpreselectprice) ){					// Si il est vide je passe dans ma fonction
		$optionpreselectprice = Mage::helper('salesrule')->getPromotion($_option->getProduct()->getId(),$optionpreselect.'-'.$_value->getSku());		// Ma fonction gourmande
		Mage::app()->saveCache(serialize($optionpreselectprice), 'identifiant-de-mon-cache', array('identifiant-de-mon-cache'), 21600 );		// Mise en cache du résultat
	}

Pour saveCache le dernier attribut est le cache life time qui permet de définir l'expiration de votre cache. (dans notre cas 6h)

Si vous vider le cache dans Magento cela vide également celui que vous venez de mettre en place dans le code.

19mar/101

Mauvaise génération des images de produits dans Magento

Une petite astuce :
Si jamais, tout à coup, vos images de produits ne sont plus générées correctement sur votre boutique (affichage de l'image par défaut), regardez votre .htaccess :

Si la variable memory_limit est en giga octets (ex : memory_limit = 2G) : la génération d'images plante !

La faute incombe à la fonction _getMemoryLimit de la classe Mage_Catalog_Model_Product_Image qui fait des calculs spécifiques s'il n'y a pas de M dans la variable php.

10fév/100

BaseUrl, SkinUrl, JsUrl, comment récupérer les URLs de Magento ?

Voici la liste des fonctions permettant de récupérer les urls de Magento :

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);

http://www.maboutique.com/js/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);

http://www.maboutique.com/index.php/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);

http://www.maboutique.com/media/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);

http://www.maboutique.com/skin/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);

http://www.maboutique.com/