La façon la plus propre est de créer un observateur qui ajoute la classe au corps.
Pour cela, vous pouvez créer un nouveau module (ou utiliser un module existant. Juste au cas où, voici comment vous pouvez en créer un. Appelons-le Easylife_AdminClass
).
Vous aurez besoin des fichiers suivants:
app/etc/modules/Easylife_AdminClass.xml
- le fichier de déclaration
<?xml version="1.0"?>
<config>
<modules>
<Easylife_AdminClass>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Adminhtml />
</depends>
</Easylife_AdminClass>
</modules>
</config>
app/code/local/Easylife/AdminClass/etc/config.xml
- le fichier de configuration
<?xml version="1.0"?>
<config>
<modules>
<Easylife_AdminClass>
<version>0.0.1</version>
</Easylife_AdminClass>
</modules>
<global>
<models>
<adminclass>
<class>Easylife_AdminClass_Model</class>
</adminclass>
</models>
</global>
<adminhtml>
<events><!-- event used for adding a class to the body-->
<core_block_abstract_to_html_before>
<observers>
<adminclass>
<type>singleton</type>
<class>adminclass/adminhtml_observer</class>
<method>addBodyClass</method>
</adminclass>
</observers>
</core_block_abstract_to_html_before>
</events>
</adminhtml>
</config>
app/code/local/Easylife/AdminClass/Model/Observer.php
- l'observateur.
<?php
class Easylife_AdminClass_Model_Adminhtml_Observer{
public function addBodyClass($observer){
$block = $observer->getEvent()->getBlock();
if ($block instanceof Mage_Adminhtml_Block_Page){ //check if the block is the root block,
$admin = Mage::getSingleton('admin/session')->getUser();
if ($admin->getId()){//check if the admin is logged in
$block->addBodyClass($admin->getUsername());//add the class to the body.
}
}
return $this;
}
}
Je recommande d'ajouter un préfixe à la classe que vous ajoutez au corps.
Je veux dire remplacer $block->addBodyClass($admin->getUsername());
par $block->addBodyClass('some-prefix-'.$admin->getUsername());
puisque le nom d'utilisateur peut être presque n'importe quoi. Par exemple, vous aurez une surprise si vous avez un administrateur nommé «root». Voici à quoi root
ressemble la classe dans le CSS d'administration par défaut
.root{
position: relative;
height: 260px;
margin: 0;
width: 1px;
}
var/cache
. Si l'erreur est toujours là, vérifiez le dossiervar/report
. Sur l'un des fichiers, vous devriez trouver plus de détails sur l'erreur. Je recommande vraiment de demander l'aide d'un programmeur à ce sujet.La solution la plus simple consiste à créer une méthode d'assistance qui renvoie le nom d'utilisateur actuellement connecté.
Puis dans la mise en page XML:
la source
Mage_Adminhtml_Block_Page
. Bien sûr, vous pouvez remplacer cela par un autre type de bloc, mais je ne vois pas l'intérêt. Et même si vous le remplacez, soit vous le remplacez par une classe enfant deMage_Adminhtml_Block_Page
(ce qui est ok), soit vous risquez de ne pas avoir de méthodeaddBodyClass()
. Quoi qu'il en soit, le risque que mon extension ne fonctionne pas existe, mais je pense qu'il est assez sûr de le prendre.Dans un module personnalisé, vous souhaitez observer la pré-répartition de l'action du contrôleur d'administration à laquelle vous essayez d'ajouter des classes de corps et utiliser le code suivant:
la source