1

我想在 magento 中更改消息(成功/错误)的位置。我得到了那个代码。

这是布局:

<layout>
    <default>
        <reference name="after_body_start">
            <block type="core/template" name="top.messages" template="core/messages/top.phtml" before="-" />
        </reference>
    </default>
</layout>

这是一个模板文件:

<?php $_messageCollection = $this->getMessagesBlock()->getMessageCollection() ?>

<?php if ($_messageCollection->count()): ?>
<div>
<?php
    echo $this->getMessagesBlock()->getGroupedHtml();
    $_messageCollection->clear();
?>
</div>
<?php endif; ?>

这是用于将错误/成功消息更改到页面顶部的代码之一。

我需要更改消息的设计。哪个文件包含messages.phtml?我使用了这个路径文件app/design/frontend/your_package/your_theme/template/core/

但它不起作用。任何人都可以帮助为此更改设计。

谢谢

4

2 回答 2

5

html 不是在模板文件中生成的,而是在块中生成的 - Mage_Core_Block_Messages

因此,如果您想自定义它,那么:

  1. 重写Mage_Core_Block_Messages,以便您可以提供自己的版本getGroupedHtml()
  2. 自定义您的模板,以便它使用getMessages()而不是getGroupedHtml()

如果您使用方法 2,那么您可以查看 core/messages.phtml 以获得灵感。您的模板可能类似于:

<?php  

$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->getMessagesBlock()->getMessages($type) ) {
        if ( !$html ) {
            $html .= '<ul class="messages">';
        }
        $html .= '<li class="' . $type . '-msg">';
        $html .= '<ul>';

        foreach ( $messages as $message ) {
            $html.= '<li>';
            $html.= $message->getText();
            $html.= '</li>';
        }
        $html .= '</ul>';
        $html .= '</li>';
    }
}
if ( $html) {
    $html .= '</ul>';
}
echo $html;
?>
<?php $_messageCollection = $this->getMessagesBlock()->getMessageCollection()->clear() ?>

虽然不是最好的模板代码,所以您需要考虑重构并将一些逻辑移到一个块中,这将涉及创建您自己的模块。

于 2012-09-27T11:33:49.330 回答
-1

Prasoft 首先我了解您需要更改错误消息的位置和设计。

I. 更改设计:您可以编辑 Css 来做到这一点,但如果您想更改 HTML 结构,请参考文件

magento/app/design/frontend/base/default/template/core/messages.phtml

当然,您需要在主题中进行更改。

二、要更改消息的位置,您需要参考该文件。

magento/app/design/frontend/base/default/template/page/1column.phtml

参考代码。

<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div class="wrapper">
   <?php echo $this->getChildHtml('global_notices') ?>
    <div class="page"> 
    <?php echo $this->getChildHtml('header') ?>
    <div class="main-container col1-layout">
        <div class="main">
            <?php echo $this->getChildHtml('breadcrumbs') ?>
            <div class="col-main">
                <?php echo $this->getChildHtml('global_messages') ?>
                <?php echo $this->getChildHtml('content') ?>
            </div>
        </div>
    </div>
    <?php echo $this->getChildHtml('footer') ?>
    <?php echo $this->getChildHtml('before_body_end') ?>
</div>
</div>
<?php echo $this->getAbsoluteFooter() ?>
</body>

当您谈论总是出现在该部分下的错误消息时,要更改位置,请根据您的 HTML 结构global_messages重新定位此行。<?php echo $this->getChildHtml('global_messages') ?>

于 2012-09-27T10:31:33.917 回答