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>
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...
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é.
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.
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 !
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.
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.
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.
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/