1

我希望前端的错误、警告、通知消息扩展一点。所以,

我需要覆盖

Mage_Core_Block_Messages

班级的

    public function getGroupedHtml()
{
    $types = array(
        Mage_Core_Model_Message::ERROR,
        Mage_Core_Model_Message::WARNING,
        Mage_Core_Model_Message::NOTICE,
        Mage_Core_Model_Message::SUCCESS
    );
    $html = '';
    foreach ($types as $type) {
        if ( $messages = $this->getMessages($type) ) {
            if ( !$html ) {
                $html .= '<' . $this->_messagesFirstLevelTagName . ' class="messages">';
            }
            $html .= '<' . $this->_messagesSecondLevelTagName . ' class="' . $type . '-msg">';
            $html .= '<' . $this->_messagesFirstLevelTagName . '>';

            foreach ( $messages as $message ) {
                $html.= '<' . $this->_messagesSecondLevelTagName . '>';
                $html.= '<' . $this->_messagesContentWrapperTagName . '>';
                $html.= ($this->_escapeMessageFlag) ? $this->htmlEscape($message->getText()) : $message->getText();
                $html.= '</' . $this->_messagesContentWrapperTagName . '>';
                $html.= '</' . $this->_messagesSecondLevelTagName . '>';
            }
            $html .= '</' . $this->_messagesFirstLevelTagName . '>';
            $html .= '</' . $this->_messagesSecondLevelTagName . '>';
        }
    }
    if ( $html) {
        $html .= '</' . $this->_messagesFirstLevelTagName . '>';
    }
    return $html;
}

扩展html并在消息框中打叉并实现Jquery。逻辑:点击关闭隐藏错误框。所以客户可以点击隐藏框。

我相信这个类没有任何模板文件和它从这个块类本身呈现的 html,正如我在 getGroupedHtml() 方法中看到的那样。

因此,我将覆盖此方法并添加更多 html。

另外,我只想为一个主题而不是在管理员中执行此操作

实现这一目标的更好方法是什么?

请给我一些建议。谢谢

4

1 回答 1

3

您可以在不覆盖任何内容的情况下完成此操作,只需使用 JavaScript (jQuery)。

这是一个应该完成这项工作的简单脚本。

var messages = jQuery("ul.messages li[class$='-msg']");

messages.each(function(){
    var message = jQuery(this);
    message.find('span').append('<span class="close">X</span>');
});

messages.on('click', function(){
    var message = jQuery(this).closest("li[class$='-msg']");
    message.hide();
});

该脚本在每条消息的末尾添加一个“X”,并在单击该消息时删除(隐藏)该消息。

剩下要做的就是给十字架(跨度X)一些样式。您可以将其放置在您的页脚模板中以获得正确的主题。

于 2013-05-13T07:33:01.187 回答