Php Magento:列出产品类别,但选择的几个除外

Php Magento:列出产品类别,但选择的几个除外,php,magento,Php,Magento,我希望在产品页面上列出特定产品所属的类别;不过,我想说的是,不要列出一些具体类别 一位stackoverflow用户在这里发布了一个输出产品所属类别列表的解决方案:输出结果非常有效。如何修改上述代码以获得我们想要的内容 举个例子来说明我的意思: 假设产品a是类别ID的成员:4,7,9,14,92 在产品页面上,我想输出上述类别的名称减去类别ID:7,92 因此,输出将仅为:4、9、14的类别ID名称 我们想要豁免的类别将适用于所有产品。所以在上面的例子中,看看产品B,它也会输出类别ID名称,除了

我希望在产品页面上列出特定产品所属的类别;不过,我想说的是,不要列出一些具体类别

一位stackoverflow用户在这里发布了一个输出产品所属类别列表的解决方案:输出结果非常有效。如何修改上述代码以获得我们想要的内容

举个例子来说明我的意思:

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

在产品页面上,我想输出上述类别的名称减去类别ID:7,92 因此,输出将仅为:4、9、14的类别ID名称

我们想要豁免的类别将适用于所有产品。所以在上面的例子中,看看产品B,它也会输出类别ID名称,除了我们不想要的(即7,92)

下面是来自上述线程的有问题的代码(感谢用户“Sarath Tomy”):


我们将如何修改它以检查我们不希望输出的类别ID列表?
非常感谢。

您可以进行
系统配置
设置,其中包含所有类别的多选

所选类别将是排除在外的类别

现在,最好的做法是扩展
Mage\u Catalog\u Model\u Product
,并添加另一种方法
getVisibleCategoryIds()

下面是它的外观(未经测试):

或者您可以直接扩展
getCategoryIds()
,省去了通过模板修改的麻烦。这看起来像这样:

public function getCategoryIds() {
    return array_diff(parent::getCategoryIds(), Mage::getStoreConfig('section_name/group/field'));
}

这里有一个有效的解决方案(不知道这是否是最有效的方法),但它是:

  <?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

public function getCategoryIds() {
    return array_diff(parent::getCategoryIds(), Mage::getStoreConfig('section_name/group/field'));
}
  <?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; ?>