A maneira mais limpa é criar um observador que adicione a classe ao corpo.
Para isso, você pode criar um novo módulo (ou usar um existente. Para o caso, aqui está como você pode criar um. Vamos chamá-lo Easylife_AdminClass
).
Você precisará dos seguintes arquivos:
app/etc/modules/Easylife_AdminClass.xml
- o arquivo de declaração
<?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
- o arquivo de configuração
<?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
- o 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;
}
}
Eu recomendo adicionar um prefixo à classe que você adiciona ao corpo.
Quero dizer substituir $block->addBodyClass($admin->getUsername());
por $block->addBodyClass('some-prefix-'.$admin->getUsername());
uma vez que o nome de usuário pode ser quase tudo. Por exemplo, você terá uma surpresa se tiver um administrador chamado 'root'. Aqui está como a root
classe fica no padrão admin css
.root{
position: relative;
height: 260px;
margin: 0;
width: 1px;
}
var/cache
. Se o erro ainda estiver lá, verifique a pastavar/report
. Em um dos arquivos, você deve encontrar mais detalhes sobre o erro. Eu realmente recomendo pedir ajuda de um programador sobre isso.A solução mais simples é criar um método auxiliar que retorne o nome de usuário atualmente conectado.
Em seguida, no layout XML:
fonte
Mage_Adminhtml_Block_Page
. Claro que você pode substituí-lo por outro tipo de bloco, mas não vejo o ponto. E mesmo que você o substitua, substitua-o por uma classe filho deMage_Adminhtml_Block_Page
(o que está ok) ou você corre o risco de não ter um métodoaddBodyClass()
. De qualquer maneira, existe o risco de minha extensão não funcionar, mas acho que é bastante seguro aceitá-la.Em um módulo personalizado, você deseja observar o préDispatch para a ação do controlador administrativo na qual você está tentando adicionar classes de corpo e usar o seguinte código:
fonte