Am saubersten ist es, einen Beobachter zu erstellen, der dem Körper die Klasse hinzufügt.
Dazu können Sie ein neues Modul erstellen (oder ein vorhandenes verwenden. Nur für den Fall, hier ist, wie Sie eines erstellen können. Nennen wir es Easylife_AdminClass
).
Sie benötigen folgende Dateien:
app/etc/modules/Easylife_AdminClass.xml
- die Deklarationsdatei
<?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
- die Konfigurationsdatei
<?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
- der Beobachter.
<?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;
}
}
Ich empfehle, der Klasse, die Sie dem Body hinzufügen, ein Präfix hinzuzufügen.
Ich meine ersetzen $block->addBodyClass($admin->getUsername());
mit , $block->addBodyClass('some-prefix-'.$admin->getUsername());
da der Benutzername fast alles sein kann. Zum Beispiel werden Sie eine Überraschung haben, wenn Sie einen Administrator namens 'root' haben. So sieht die root
Klasse im Standard-Admin-CSS aus
.root{
position: relative;
height: 260px;
margin: 0;
width: 1px;
}
var/cache
. Wenn der Fehler immer noch vorhanden ist, überprüfen Sie den Ordnervar/report
. In einer der Dateien dort sollten Sie weitere Details zu dem Fehler finden. Ich empfehle wirklich, einen Programmierer um Hilfe zu bitten.Die einfachste Lösung besteht darin, eine Hilfsmethode zu erstellen, die den aktuell angemeldeten Benutzernamen zurückgibt.
Dann im Layout XML:
quelle
Mage_Adminhtml_Block_Page
. Natürlich können Sie das durch einen anderen Blocktyp ersetzen, aber ich verstehe den Punkt nicht. Und selbst wenn Sie es ersetzen, ersetzen Sie es entweder durch eine untergeordnete Klasse vonMage_Adminhtml_Block_Page
(was in Ordnung ist), oder Sie haben das Risiko, keine Methode zu habenaddBodyClass()
. In beiden Fällen besteht das Risiko, dass meine Erweiterung nicht funktioniert, aber ich denke, es ist ziemlich sicher, sie zu übernehmen.In einem benutzerdefinierten Modul möchten Sie den PreDispatch für die Admin-Controller-Aktion beobachten, zu der Sie Körperklassen hinzufügen möchten, und den folgenden Code verwenden:
quelle