2017-07-25 76 views
0

我想为我的条件语句添加一个类别列表,我该如何添加多个类别ID? 使用像123,124,125或123 || 124有条件的语句

我有类别的大名单,所以我在寻找最干净的方式来实现这一

感谢

<?php 
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product'); 
$categories = $product->getCategoryIds(); /*will return category ids array*/ 
foreach($categories as $category){ 
    $cat = $objectManager->create('Magento\Catalog\Model\Category')->load($category); 
    echo $cat->getId(); 
    } 

?> 

    <?php if($cat->getId()==123): ?> 
    <?php echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('myblockid')->toHtml();?> 
    <?php endif; ?> 
+0

使用'in_array()的' – ArtOsi

+1

可能的复制[在\ _array - ? '在\ _object' 等效](https://stackoverflow.com/questions/5041533/in-array-in-object-等效) – RJParikh

+0

@RJParikh如果您将其标记为重复,请正确执行此操作。这是关于搜索对象的主题,而不是数组。这里提供了'in_array'作为它应该如何工作的例子。 – Yupik

回答

5

使用in_array PHP函数:

<?php if(in_array($cat->getId(), [123, 124, 125])): ?> 
+0

实际上它不适合我,请检查我之前刚刚添加的完整代码。我得到一个空白页面“in_array” – user1551106

+0

但是你在哪里持有应该符合'if'语句中的标准的类别? – Yupik

+0

我想手动添加一堆类别标识,如果某个产品属于该类别,该块显示为 – user1551106

0

的最佳解决方案是使用in_array功能

<?php 
    if(in_array($cat->getId(), $your_array){ 
     $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('myblockid')->toHtml(); 
    } 
?> 
0

使用in_array():这将检查数组中是否存在值。如果存在,则返回true。

<?php 
    if(in_array($cat->getId(), $categories): 
     echo $block->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('myblockid')->toHtml(); 
    endif; 
?>