我想在magento中更改消息(成功/错误)的位置.我得到了代码.
这个是布局:
<layout>
<default>
<reference name="after_body_start">
<block type="core/template" name="top.messages" template="core/messages/top.phtml" before="-" />
</reference>
</default>
</layout>
Run Code Online (Sandbox Code Playgroud)
这个是模板文件:
<?php $_messageCollection = $this->getMessagesBlock()->getMessageCollection() ?>
<?php if ($_messageCollection->count()): ?>
<div>
<?php
echo $this->getMessagesBlock()->getGroupedHtml();
$_messageCollection->clear();
?>
</div>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
这是用于将错误/成功消息更改为页面顶部的代码之一.
我需要改变消息的设计.哪个文件包含messages.phtml?我用过这个路径文件app/design/frontend/your_package/your_theme/template/core/.
但它不起作用.任何人都可以帮助改变设计.
谢谢
html不是在模板文件中生成,而是在块中生成 - Mage_Core_Block_Messages
因此,如果要自定义此选项,则:
Mage_Core_Block_Messages以便您可以提供自己的版本getGroupedHtml()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() ?>
Run Code Online (Sandbox Code Playgroud)
虽然不是最好的模板代码,所以你需要考虑重新分解并将一些逻辑移出到一个块,这将涉及创建自己的模块.