La forma más limpia es crear un observador que agregue la clase al cuerpo.
Para esto, puede crear un nuevo módulo (o usar uno existente. Por si acaso, así es como puede crear uno. Llamémoslo Easylife_AdminClass
).
Necesitará los siguientes archivos:
app/etc/modules/Easylife_AdminClass.xml
- el archivo de declaración
<?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
- el archivo de configuración
<?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
- el observador.
<?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;
}
}
Recomiendo agregar un prefijo a la clase que agregue al cuerpo.
Quiero decir reemplazar $block->addBodyClass($admin->getUsername());
con $block->addBodyClass('some-prefix-'.$admin->getUsername());
ya que el nombre de usuario puede ser casi cualquier cosa. Por ejemplo, tendrá una sorpresa si tiene un administrador llamado 'root'. Así es como se root
ve la clase en el administrador predeterminado CSS
.root{
position: relative;
height: 260px;
margin: 0;
width: 1px;
}
var/cache
. Si el error sigue ahí, verifique la carpetavar/report
. En uno de los archivos allí debe encontrar más detalles sobre el error. Realmente recomiendo pedir ayuda a un programador sobre esto.La solución más simple es crear un método auxiliar que devuelva el nombre de usuario actualmente conectado.
Luego, en el diseño XML:
fuente
Mage_Adminhtml_Block_Page
. Por supuesto, puede reemplazar eso con otro tipo de bloque, pero no veo el punto. E incluso si lo reemplaza, o lo reemplaza con una clase secundaria deMage_Adminhtml_Block_Page
(que está bien), o corre el riesgo de no tener un métodoaddBodyClass()
. De cualquier manera, existe el riesgo de que mi extensión no funcione, pero creo que es bastante seguro tomarlo.En un módulo personalizado, desea observar el preDispatch para la acción del controlador de administrador al que está tratando de agregar clases de cuerpo y usar el siguiente código:
fuente