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; ?>

これは、エラー/成功メッセージをページの上部に変更するために使用されるコードの 1 つです。

メッセージのデザインを変更する必要があります。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

プラソフト まずは、エラーメッセージの位置とデザインを変更する必要があると理解しています。

I. デザインを変更するには: Css を編集してそれを行うことができますが、HTML 構造も変更する場合は、ファイルを参照してください。

マジェント/アプリ/デザイン/フロントエンド/ベース/デフォルト/テンプレート/コア/messages.phtml

もちろん、テーマの変更を行う必要があります。

Ⅱ.メッセージの位置を変更するには、ファイルを参照する必要があります。

マジェント/アプリ/デザイン/フロントエンド/ベース/デフォルト/テンプレート/ページ/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 に答える