0

我希望在产品页面上列出特定产品所属的类别;但是,我想说不要列出某些特定类别。

一位 stackoverflow 用户在此处发布了输出产品所属类别列表的解决方案: https ://stackoverflow.com/a/9720480/99112 ,它可以很好地输出结果。如何修改上面的代码以获得我们正在寻找的东西?

只是为了举例说明我的意思:

假设产品 A 是类别 ID 的成员: 4、7、9、14、92

在产品页面上,我想输出上述类别的名称减去类别 ID:7、92 所以,输出只会是类别 ID名称:4、9、14

我们希望豁免的类别将适用于所有产品。因此,在上面的示例中并查看产品 B,它还会输出类别 ID 名称,除了我们不想要的名称(即 7、92)。

这是来自上述线程的代码(感谢用户“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; ?>

您在其中输入要排除的任何类别 ID来代替上面的XX,YY

于 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 回答