Cara terbersih adalah dengan membuat pengamat yang menambahkan kelas ke tubuh.
Untuk ini, Anda dapat membuat modul baru (atau menggunakan yang sudah ada. Untuk berjaga-jaga, berikut adalah bagaimana Anda dapat membuatnya. Mari kita menyebutnya Easylife_AdminClass
).
Anda memerlukan file-file berikut:
app/etc/modules/Easylife_AdminClass.xml
- file deklarasi
<?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
- file konfigurasi
<?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
- pengamat.
<?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;
}
}
Saya sarankan menambahkan awalan ke kelas yang Anda tambahkan ke tubuh.
Maksud saya ganti $block->addBodyClass($admin->getUsername());
dengan $block->addBodyClass('some-prefix-'.$admin->getUsername());
karena nama pengguna bisa hampir apa saja. Misalnya Anda akan memiliki kejutan jika Anda memiliki admin bernama 'root'. Inilah tampilan root
kelas di admin css default
.root{
position: relative;
height: 260px;
margin: 0;
width: 1px;
}
var/cache
. Jika kesalahan masih ada, periksa foldervar/report
. Pada salah satu file di sana Anda harus menemukan rincian lebih lanjut tentang kesalahan. Saya sangat merekomendasikan meminta bantuan dari seorang programmer mengenai hal ini.Solusi paling sederhana adalah membuat metode pembantu yang mengembalikan nama pengguna yang saat ini masuk.
Kemudian dalam tata letak XML:
sumber
Mage_Adminhtml_Block_Page
. Tentu saja Anda dapat menggantinya dengan jenis blok lain tetapi saya tidak mengerti intinya. Dan bahkan jika Anda menggantinya, baik Anda menggantinya dengan kelas anakMage_Adminhtml_Block_Page
(yang tidak masalah), atau Anda memiliki risiko tidak memiliki metodeaddBodyClass()
. Either way risiko ekstensi saya tidak berfungsi ada tapi saya pikir cukup aman untuk mengambilnya.Dalam modul khusus, Anda ingin mengamati preDispatch untuk tindakan pengontrol admin yang Anda coba tambahkan kelas tubuh ke dan menggunakan kode berikut:
sumber