何の製品のMagentoのを持たないカテゴリを非表示にします
-
22-08-2019 - |
質問
私は主サイトの同じルートカテゴリを使用する多くのサイトがあります。追加された各製品は、それは(WOW)ともメインのサイトに追加されたサイトに追加されます。しかし、私はそのサイト上の製品がある場合にのみ表示されるように、サイトごとにカテゴリをしたいと思います。
私が持っている場合:
Category1
Category2
Category3
しかし、サイト2とSite3はカテゴリ2とカテゴリー3の製品を持っているのに対し、サイト1は、カテゴリ1とカテゴリ2の製品を持っています。私はカテゴリ1/2のみがサイト2とSite3に表示されるまでサイト1のみカテゴリ2/3に表示する。
ただし、サイト1/2/3のすべての製品は、メインのサイトに追加されているので、主なサイトは、カテゴリ1/2/3をリストします。
いいえ製品がメインのサイトに直接追加されません。それは単に他のサイトのためのリポジトリとして機能します。
さて、(私は確信しているとして)これを有効にするには、何も本当に簡単な方法が存在しない場合、それが唯一のテンプレートが上に表示されていることをサイト上の製品を持っているカテゴリを示します私自身のテーマを書くのと同じくらい簡単になります?
私は、Magentoのは、使用する技術の初心者ではないです。そのカスタムコードを書くことは問題ありません。私は、しかし、私のコードベースをアップグレードするMagentoのそれ以降のバージョンで将来的にはより簡単になるように、それほどそれを編集したくない。
おかげで、
-nelson
解決
さて、あなたは、製品の数に基づいてコレクションを(モデルによる)のコレクションを使用して独自のヘルパーを作成し、フィルタリングされて何ができるか。
Magentoの製品によって:唯一の草稿は、私は別のMagentoの関連問題のいくつかのコードを掲載しましたカテゴリは
を。あなたはそれが製品は数える追加したときにこれが行われたとき、私は再びフィルタリングしたいどのようにして見ることができます。私は、これはパフォーマンスの面で非常に「偉大」だとは思わないので、代わりに自分のモデルクラスを使用するには、<全角> のあなた自身を書くことができ、それを拡張し、デフォルトのフィルタを追加する、または直接shortcuttingデータベースへ。
限り、あなたはあなたの肌/テンプレートにとどまるよう、更新とは大きな問題はありません。
他のヒント
これはあなたを助けるかもしれないカテゴリを非表示にするには、シンプルなソリューションです。
top.phtmlファイルの元の内容は、以下のようになります。
<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
<div>
<ul id="nav">
<?php echo $_menu ?>
</ul>
</div>
<?php endif ?>
以下のコードと上記のコードを置き換えます。
<?php $_menu = ''?>
<?php $excludeCat = array(); ?>
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php if($_category->getProductCount() <=0) {
$excludeCat[] = $_category->getId();
}
?>
<?php $_menu .= $this->drawItem($_category) ?>
<?php endforeach ?>
<?php if ($_menu): ?>
<div>
<ul id="nav">
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php if (!in_array($_category->getId(), $excludeCat)) : ?> <?php echo $this->drawItem($_category) ?>
<?php endif; ?>
<?php endforeach ?>
</ul>
</div>
<?php endif; ?>