0

カットアンドペーストの空白のテンプレートを使用して、レイアウトに合わせてcssを編集するのではなく、Magentoで新しいテンプレートを作成しようとしています。メインナビゲーションとしてカテゴリとページのtopMenuを追加したいと思います。インターネットで見つけた指示に従いましたが、どのような状況でもメニューが表示されません。

私のpage.xmlにあるコードは、topMenu用です。

        <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
            <label>Navigation Bar</label>
            <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
        </block> 

これを呼び出すためにヘッドファイルにあるコードは

<div id="utilities">  
<?php echo $this->getChildHtml('topMenu') ?>
</div> 

topmenu.phtmlはテーマの/page/ html /フォルダーにあり、キャッシュをクリアしてインデックスを再作成しました。何も表示されません。

不思議なことに、コードをデフォルトとして設定したときにコピーしたテーマは、実際にはカテゴリとページを含むtopMenuナビゲーションを示しています。誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

0

page/html/header.phtml で呼び出すと<?php echo $this->getChildHtml('topMenu') ?>、次の理由で header.phtml がレンダリングされます。

アプリ/コード/メイジ/ページ/ブロック/Html/Header.php

38行目:

$this->setTemplate('page/html/header.phtml');

このヘッダー ブロックの子として topMenu ブロックを取得しようとしています。これは、ヘッダー ブロックの子ブロックとして page.xml にそのブロックを追加する必要があることを意味します。

<block type="page/html_header" name="header" as="header">
    <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
            <label>Navigation Bar</label>
                <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
    </block>    
</block>

これがすべてのページで呼び出されるようにするには(オーバーライドされていない場合)、デフォルトのハンドルに配置する必要があります。

これは次のようになります。

<default translate="label" module="page">
    <block type="page/html_header" name="header" as="header">
        <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
                <label>Navigation Bar</label>
                    <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
        </block>    
    </block>
</default>

ヘッダー ファイルのテンプレートを次のように変更することもできます。

<block type="page/html_header" name="header" as="header" template="page/html/custom_header.phtml">
</block>

それが役に立てば幸い !

于 2013-01-22T21:07:53.690 に答える