0

Magento サイト内には、ショップのルート カテゴリがあります (これは単なる「デフォルト カテゴリ」です)。この下に、いくつかのトップレベルのカテゴリ (たとえば、これらを「電子機器」と「家具」と呼びましょう) と、多数のサブカテゴリを設定しました。

例として、カテゴリ構造は次のようになります

  • エレクトロニクス
    • DVDプレーヤー
    • MP3プレーヤー
    • コンピュータ
  • 家具
    • 3個
    • アームチェア
    • テーブル
    • ソファベッド

「DVDプレーヤー」などの「サブカテゴリ」のレイアウト/テンプレートを編集して、カスタム製品リストビューを表示することができました.

ここでやりたいことは、トップ レベルのカテゴリ (ルート カテゴリの下の最初のカテゴリ) に対して、製品リストではなく、すべてのサブカテゴリと関連するサムネイル画像のカスタム グリッドを表示することです!

これらの最上位カテゴリだけにまったく異なるテンプレートを割り当てるにはどうすればよいですか?

誰かがこれを行う方法と必要な手順についての洞察を提供できれば(コード自体は問題ないはずです。カスタムモジュールやテンプレートなどの実装方法だけです)

ありがとう

4

2 に答える 2

4

最上位のカテゴリに適用できるカスタム ページ レイアウトが必要なようですね。ページ レイアウトは基本的に、ドロップダウンで選択して製品またはカテゴリに適用できる名前付きのページ テンプレートです。

レイアウトを定義するには、次のようglobal/page/layoutsにモジュールの のノードに追加します。config.xml

<global>
    <page>
        <layouts>
            <my_custom_layout_name translate="label">
                <label>My Custom Layout</label>
                <template>page/my-custom-layout.phtml</template>
                <layout_handle>my_custom_layout</layout_handle>
            </my_custom_layout_name>
        <layouts>
    <page>
<global>

page/my-custom-layout.phtml次に、アプリ/デザイン テンプレート フォールバック チェーンのどこかにテンプレート ファイルを作成する必要があります。

ノードは、このレイアウトを使用するすべてのページに追加される新しいレイアウト ハンドルの名前を指定し、layout_handleノードを使用してレイアウト XML ファイルで対象にすることができます<my_custom_layout>

参照している.phtmlファイルは HTML ページ全体のテンプレートになるため、<html><head><body>タグ、およびデフォルトのpage/*.phtmlテンプレートの 1 つにあるその他のもの (1 列、空、2 列左など) を含める必要があります。これとターゲット レイアウト XML の間で、このページをゼロから完全にカスタマイズできます。

最後のステップは、[カタログ] -> [カテゴリの管理] で各親カテゴリを編集するときに、[カスタム デザイン] タブでこの新しいレイアウトを選択することです。ドロップダウンにレイアウトが表示されない場合は、XML が適切に構成されていることを確認し (参照app/code/core/Mage/Page/etc/config.xml用に を参照)、キャッシュを更新してください。

于 2013-01-03T23:28:17.307 に答える
1

これを行う1つの方法は、カテゴリグリッドとなる新しいテンプレートを作成し、そのテンプレートを、CMSを介して選択する選択したカテゴリの静的ブロックとして呼び出すことです。下記参照。

カテゴリグリッドテンプレートを作成します

  1. 「app/design / frontend / default / TEMPLATE / catalog/navigation」に移動します</li>
  2. このパスで、category_listing.phtmlというファイルを作成します
  3. このファイルには次のコードが含まれます。

    <?php $_maincategorylisting=$this->getCurrentCategory()?>
    <?php $_categories=$this->getCurrentChildCategories()?>
    <h2><?php echo $this->__('Browse Products') ?> </h2>
    <div class="subcat-listing">
    <ul class="subcat-products">
    <? foreach ($_categories as $_category):?>
    <? if($_category->getIsActive()): ?>
    <?php $cur_category=Mage::getModel('catalog/category')->load($_category->getId()); ?>
    <?php $layer = Mage::getSingleton('catalog/layer'); ?>
    <?php $layer->setCurrentCategory($cur_category); ?>
    <? if($_imageUrl=$this->getCurrentCategory()->getImageUrl()):?>
    <li> <a href="<?php echo $this->getCategoryUrl($_category) ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>">
    <img src="<?php echo $_imageUrl ?>" width="auto" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" />
    </a>
    <h3><?php echo $this->htmlEscape($_category->getName()) ?></h3>
    <? if($_description=$this->getCurrentCategory()->getDescription()):?>
    <p class="category-description">
    <?php echo $_description ?></</p>
    <?php endif; ?>
    <? endif; ?>
    <? endif; ?>
    <?php endforeach; ?>
    </ul>
    </div>
    <?php $layer->setCurrentCategory($_maincategorylisting); ?>
    

このテンプレートを静的ブロックで呼び出す

  1. メニュー「CMS/静的ブロック」に移動し、新しいブロックを作成します。

  2. これをCMSブロックのコンテンツセクションに追加します
    {{block type="catalog/navigation" name="catalog.categories" template="catalog/navigation/category_listing.phtml"}}。次に、ブロックを保存します。

カテゴリページでこの静的ブロックを使用します。

  1. メニューカタログ/カテゴリの管理に移動します

  2. 次に、新しいグリッドを表示するカテゴリを見つける必要があります

  3. 必要なカテゴリを選択し、[設定の表示]タブで次の情報を設定します。

    表示モード:静的ブロックCMSブロック:カテゴリリスト(以前に作成したブロック)はアンカー:いいえ

  4. [保存]をクリックします。[カスタムデザイン]タブで、テンプレートを選択する必要がある場合があることに注意してください。カテゴリには多くの画像が割り当てられていることも忘れないでください。

于 2013-01-03T23:13:01.837 に答える