Installation d'une extension, ce qu'il faut contrôler en cas de dysfonctionnement

  • De le 22 décembre 2009
  • Difficulté : 2/4

Installation d'une extension, ce qu'il faut contrôler en cas de dysfonctionnement Lors de l'installation d'une nouvelle extension, il y a quelques points auxquels il faut prendre garde pour éviter les mauvaises surprises. Si l'extension semble ne pas fonctionner, le mieux reste de la décortiquer.

Je reçois régulièrement sur mon Twitter des messages concernant des problématiques liées à des extensions récupérées depuis Magentix ou tout autre site. Les extensions que je publie (hors celles disponibles sous licence OSL sur Magento Connect) le sont généralement à titre d'exemple : elles offrent des pistes de développement, un guide sur la conception d'un module ou une inspiration pour vos futurs extensions.

Les problèmes liées à une extension peuvent être multiples. Cela peut dépendre de la version de Magento utilisée, des modules préalablement installés, des modifications apportées de manière général sur l'ensemble du site.

Voici quelques points qu'il est nécessaire de contrôler avant toute chose lorsqu'un module rebelle refuse de fonctionner ou fait planter certaines fonctionnalités. Bien souvent, le dysfonctionnement d'un module provient d'une particularité présente sur votre e-commerce.

A la recherche de l'overload

Lors du développement d'une extension les développeurs prennent généralement la précaution d'éviter au maximum les surcharges (modification du comportement naturel du core). Parfois il n'est malheureusement pas possible d'y couper et 2 extensions peuvent alors entrer en conflit. Pour détecter une surcharge, partez en quête des rewrite dans les fichiers de configuration des modules (config.xml) :

app/code/local/Aze/MonModule/etc/config.xml

<blocks>
        <page>
                <rewrite>
                        <html>Aze_MonModule_Block_Html</html>
                </rewrite>
        </page>
</blocks>

Lorsque 2 modules ou plus surchargent la même classe (ici Mage_Page_Block_Html) il y a alors une forte probabilité pour que le dysfonctionnement vienne de là.

Fichier du template écrasé

Un module ne devrait jamais écraser un fichier phtml du template par défaut. J'ai cependant déjà rencontré ce cas de figure via des extensions commerciales qui, plutôt que de spécifier les quelques lignes à modifier, prennent la liberté d'inclure des phtml déjà existant dans leur module, simplement pour venir y insérer l'appel d'un nouveau bloc. Lorsque vous "copiez / collez" un module téléchargé pour le placer sur votre serveur, refusez le remplacement de tout fichier déjà existant, notez les puis analysez les pour comparer les différences. Un module "propre" se compose juste de fichiers supplémentaires.

Zend debug

Une extension peut ne pas planter mais souvent juste ne pas fonctionner. Il va alors falloir comprendre pourquoi et parcourir les classes qui la composent (vous avez peut être ajouté des fonctionnalités spécifiques à votre e-commerce que personne ne pouvait envisager). On s'arme alors de notre Zend_debug::dump($variable) que l'on utilise un peu partout pour analyser ce qui peut se passer :

app/code/local/Aze/Module/Model/Model.php

public function maFonction() {
     $variable = Mage::Helper('checkout/cart')->getCart()->getQuote()->getTotals();
     Zend_debug::dump($variable);
     die;
     return $variable;
}

Et le cache ?

Sans doute la première chose à faire après l'installation d'un nouveau module, rafraîchir le cache, ou mieux, le vider complètement. Une méthode simple et efficace pour s'assurer qu'un module est correctement implémenté : inclure une erreur dans un des fichiers du module (virer un point virgule ou une parenthèse), si une notice PHP est générée l'extension est bien prise en compte ;)

Le module fonctionne une fois sur deux, c'est aléatoire

Oui, ce type de problème m'a déjà été soumis, et je répond à çà : "en développement, il n'y a JAMAIS de hasard, çà fonctionne ou alors pas du tout". Il y a forcement une action entreprise sur le site qui provoque un dysfonctionnement, quelque chose de spécifique à votre site que le développeur du module ne pouvait prévoir, des attributs exotiques, des fichiers du core modifiés ou ce genre de choses que l'on aime. Dans ce cas, le mieux reste d'établir la liste de ce que vous avez pu modifier sur le site et qui pourrait provoquer une anomalie.

Nouvel environnement

Si vous êtes persuadé que le dysfonctionnement provient de l'extension installé et non des modifications que vous avez apporté, que vous en avez absolument besoin pour éviter les réprimandes de votre chef de projet ou d'un client, le mieux reste de la tester sur un environnement vierge, dépourvu d'extensions. Une petite installation d'un Magento en local prend 30 secondes environ et permet d'être immédiatement fixé.

commentaires

Commentez cet article : Installation d'une extension, ce qu'il faut contrôler en cas de dysfonctionnement