Magento:在不使用else的情况下,在多个特定类别中显示某些元素的正确方法

时间:2014-07-22 21:50:50

标签: php magento

我目前正在使用此循环来显示特定类别中的某些元素

 <?php if(Mage::registry('current_category')->getId() == 3):?>

添加更多类别的正确方法是什么?因为我试过这个

 <?php if(Mage::registry('current_category')->getId() == 3,4,5,6,7):?>

这个

 <?php if(Mage::registry('current_category')->getId() == 3 || 4 || 5:?>

但是我遇到了致命的错误。

我能想到的唯一方法是使用elseif:

 <?php if(Mage::registry('current_category')->getId() == 3):?>
 <?php elseif(Mage::registry('current_category')->getId() == 4) { ?>
 blah blah blah
 <? } then another elseif if I want to show it in more categories ?>

但是有更短的版本吗?就像在一行中包含所有类别ID一样。我只想展示&#34;等等等等等等等。如果类别是3或4或5或6,但只有一行,不使用elseif。

2 个答案:

答案 0 :(得分:2)

使用in_array()将整理您的代码。但是,我不会将类别ID硬编码到模板中。这将使维护变得非常困难。 (考虑您要添加更多类别的情况)。 为此,我将在模板中添加:

echo $this->getChildHtml('block.name');

在内容块中 然后Admin =&gt;目录=&gt;管理类别,选择自定义设计选项卡,然后在自定义布局更新下添加:

<reference name='content'>
  <block type='core/template' name='block.name' template='[yourthemepath]/your-block.phtml'> </block>
</reference>

将来,如果您改变主意,可以直接转到Magento管理员,无需更改代码。

答案 1 :(得分:0)

尝试in_array():

<?php

$acceptable_categories = array(3, 4, 5, 6, 7);
$current_category_id = Mage::registry('current_category')->getId();

if(in_array($current_category_id, $acceptable_categories)) {
    // do stuff
}

以下是此功能的官方文档:PHP function in_array()