Surcharger le thème par défaut de l'admin

  • De le 09 avril 2014
  • Difficulté : 1/4

Surcharger le thème par défaut de l'admin Ce module permet la surcharge du template de l'administration. Souvent utile pour apporter quelques modifications aux phtml ou modifier certaines traductions...

J'utilise généralement la surcharge du thème admin de Magento pour corriger les imperfections de traduction de Magento EE (en ajoutant un fichier translate.csv), ou parfois pour la modification de certains fichiers phtml. 2 façons de procéder.

Méthode 1

Méthode rapide. Nous renseignons le nom du thème directement dans le fichier de configuration.

Architecture du module

  • app/code/local/Magentix/AdminTheme/etc/
  • config.xml
  • app/etc/modules/
  • Magentix_AdminTheme.xml
  • app/design/adminhtml/default/yourtheme/layout/
  • app/design/adminhtml/default/yourtheme/locale/
  • app/design/adminhtml/default/yourtheme/template/

Développement du module

Depuis le fichier de configuration du module, nous spécifions simplement le nom du thème à utiliser :

app/code/local/Magentix/AdminTheme/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Magentix_AdminTheme>
            <version>0.1.0</version>
        </Magentix_AdminTheme>
    </modules>
    <stores>
        <admin>
            <design>
                <theme>
                    <default>yourtheme</default>
                </theme>
            </design>
        </admin>
    </stores>
</config>

Il ne reste plus qu'à déclarer le module :

app/etc/modules/Magentix_AdminTheme.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Magentix_AdminTheme>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Adminhtml />
            </depends>
        </Magentix_AdminTheme>
    </modules>
</config>

Méthode 2

Cette fois-ci nous proposons de modifier le nom du thème depuis l'administration.

Modifier le thème de l'admin

Architecture du module

  • app/code/local/Magentix/AdminTheme/Model/
  • Observer.php
  • app/code/local/Magentix/AdminTheme/etc/
  • config.xml
  • system.xml
  • app/etc/modules/
  • Magentix_AdminTheme.xml
  • app/design/adminhtml/default/yourtheme/layout/
  • app/design/adminhtml/default/yourtheme/locale/
  • app/design/adminhtml/default/yourtheme/template/

Développement du module

Le module ne contient qu'un simple observer.

Nous observons l'événement adminhtml_controller_action_predispatch_start. Il nous permettra de modifier le nom du thème renseigné par la valeur du noeud stores/admin/design/theme/default, déclaré dans le fichier de configuration du module Adminhtml (default).

app/code/local/Magentix/AdminTheme/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Magentix_AdminTheme>
            <version>0.1.0</version>
        </Magentix_AdminTheme>
    </modules>
    <global>
        <models>
            <admintheme>
                <class>Magentix_AdminTheme_Model</class>
            </admintheme>
        </models>
        <events>
            <adminhtml_controller_action_predispatch_start>
                <observers>
                    <admin_theme_override>
                        <type>singleton</type>
                        <class>admintheme/observer</class>
                        <method>overrideTheme</method>
                    </admin_theme_override>
                </observers>
            </adminhtml_controller_action_predispatch_start>
        </events>
    </global>
</config>

Nous proposons maintenant de modifier du nom du thème depuis la config système de l'admin :

app/code/local/Magentix/AdminTheme/etc/system.xml

<?xml version="1.0"?>
<config>
    <sections>
        <design>
            <groups>
                <admin translate="label">
                    <label>Admin Theme</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>1</sort_order>
                    <show_in_default>1</show_in_default>
                    <fields>
                        <theme translate="label comment">
                            <label>Admin theme name</label>
                            <comment>Override default admin theme</comment>
                            <frontend_type>text</frontend_type>
                            <sort_order>1</sort_order>
                            <show_in_default>1</show_in_default>
                        </theme>
                    </fields>
                </admin>
            </groups>
        </design>
    </sections>
</config>

Il nous suffit enfin de récupérer la valeur associée au path design/admin/theme pour définir le nouveau thème à utiliser. Cela se passe dans notre méthode overrideTheme :

app/code/local/Magentix/AdminTheme/Model/Observer.php

<?php

class Magentix_AdminTheme_Model_Observer
{

    public function overrideTheme()
    {
        if(Mage::getStoreConfig('design/admin/theme')) {
            Mage::getDesign()->setArea('adminhtml')->setTheme(
                (string)Mage::getStoreConfig('design/admin/theme')
            );
        }
    }

}

Reste à déclarer le module :

app/etc/modules/Magentix_AdminTheme.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Magentix_AdminTheme>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Adminhtml />
            </depends>
        </Magentix_AdminTheme>
    </modules>
</config>

Exemples

Traductions

Pour modifier une traduction, nous ajoutons un fichier translate.csv pour notre langue. Nous souhaitons modifier la traduction proposée par Magento EE de "Attib. Nom de la Série" (grille produit).

app/design/adminhtml/default/yourtheme/locale/fr_FR/translate.csv

"Attrib. Set Name","Groupe d'attributs"

Template

Nous modifions le template associé au login pour ajouter une validation JS validate-no-html-tags au champ nom d'utilisateur.

app/design/adminhtml/default/yourtheme/template/login.phtml

<!-- ... -->
<input type="text" id="username" name="login[username]" value="" class="required-entry validate-no-html-tags input-text" />
<!-- ... -->
commentaires

Commentez cet article : Surcharger le thème par défaut de l'admin