0

特定の製品が属するカテゴリを製品ページにリストしたいと考えています。ただし、特定のカテゴリをリストしないでください。

製品が属するカテゴリのリストを出力するソリューションは、仲間のスタックオーバーフロー ユーザーによってここに投稿されました: https://stackoverflow.com/a/9720480/99112 で、結果を出力するのに最適です。上記のコードを変更して、探しているものを取得するにはどうすればよいでしょうか?

私が言いたいことの例を作成するだけです:

製品 A がカテゴリ ID 4、7、9、14、92 のメンバーであるとします。

製品ページで、上記のカテゴリの名前を出力したい MINUS カテゴリ ID: 7, 92 したがって、出力は次のカテゴリ ID名のみになります: 4, 9, 14

除外したいカテゴリは、すべての製品に適用されます。したがって、上記の例で製品 B を見ると、必要のないもの (つまり 7、92) を除いて、カテゴリ ID 名も出力されます。

上記のスレッドから問題のコードを次に示します (ユーザー「Sarath Tomy」に感謝します)。

<?php $categories = $_product->getCategoryIds(); ?>
       <?php foreach($categories as $k => $_category_id): ?>
       <?php $_category = Mage::getModel('catalog/category')->load($_category_id) ?> 
        <a href="<?php echo $_category->getUrl() ?>"><?php echo $_category->getName() ?></a>
       <?php endforeach; ?>

出力したくないカテゴリ ID のリストをチェックするには、これをどのように変更すればよいでしょうか? どうもありがとう。

4

2 に答える 2

1

これがうまくいった解決策です(それが最も効率的な方法であるかどうかはわかりません)が、ここにあります:

  <?php $categories = $_product->getCategoryIds(); ?>
  <?php foreach($categories as $k => $_category_id): ?>
  <?php $_category = Mage::getModel('catalog/category')->load($_category_id) ?>
  <?php if (!in_array($_category->getId(), array(XX,YY))) : ?>
    <a href="<?php echo $_category->getUrl() ?>"><?php echo $_category->getName() ?></a>
  <?php endif; ?>
  <?php endforeach; ?>

上記のXX,YYの代わりに、除外したいカテゴリ IDを入力します。

于 2013-09-06T17:39:51.840 に答える
0

System - Configurationすべてのカテゴリで複数選択を含む設定を行うことができます。

選択されたカテゴリは除外されます。

ここで、ベスト プラクティスは を拡張Mage_Catalog_Model_Productし、別のメソッドを追加することですgetVisibleCategoryIds()

これがどのように見えるかです(テストされていません):

public function getVisibleCategoryIds() {
    return array_diff($this->getCategoryIds(), Mage::getStoreConfig('section_name/group/field'));
}

または、直接拡張getCategoryIds()して、テンプレートを使用して変更する手間を省くことができます。これは次のようになります。

public function getCategoryIds() {
    return array_diff(parent::getCategoryIds(), Mage::getStoreConfig('section_name/group/field'));
}
于 2013-09-06T11:58:43.470 に答える