Как изменить шаблон входа администратора в Magento 1.5 или 1.6


В magento 1.7.x и выше шаблон входа устанавливается в XML-файле макета, поэтому изменить шаблон очень легко.

Как добиться этого в 1.5.x или 1.6.x, где нет xml-макета, а блок и шаблон создаются на лету в контроллере?

См.

class Mage_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action
{
    protected function _outTemplate($tplName, $data=array())
    {
        $this->_initLayoutMessages('adminhtml/session');
        $block = $this->getLayout()->createBlock('adminhtml/template')->setTemplate("$tplName.phtml");
        foreach ($data as $index=>$value) {
            $block->assign($index, $value);
        }
        $html = $block->toHtml();
        Mage::getSingleton('core/translate_inline')->processResponseBody($html);
        $this->getResponse()->setBody($html);
    }

    public function loginAction()
    {
        if (Mage::getSingleton('admin/session')->isLoggedIn()) {
            $this->_redirect('*');
            return;
        }
        $loginData = $this->getRequest()->getParam('login');
        $data = array();

        if( is_array($loginData) && array_key_exists('username', $loginData) ) {
            $data['username'] = $loginData['username'];
        } else {
            $data['username'] = null;
        }

        $this->_outTemplate('login', $data);
    }
Author: Php4u, 2014-07-10

2 answers

Ну, ты мало что можешь сделать. Очевидной вещью было бы создать пользовательскую тему администратора и просто переписать шаблон. Но если вы планируете выпустить модуль сообщества, то это явно плохая идея.

Жаль, что они даже не дают имени этому блоку в методе _outTemplate(). Может быть, стоило бы проверить, можете ли вы использовать событие adminhtml_block_html_before

 1
Author: Ventus, 2014-07-11 08:33:39

В конце перешел к решению, в котором я перечислил, чтобы предварительно заблокировать событие HTML и заменить шаблон на лету.

Спасибо

 0
Author: Php4u, 2014-07-13 20:00:41