PHP foreach 仅返回产品页面上 Magento 多选的第一个属性值

PHP foreach only returning 1st attribute value of Magento multiselect on product page

标题几乎说明了一切。我试图输出一个与属性值具有相同 ID 的静态块,但是我的代码只输出第一个属性值。

以下代码在 view.phtml 中,输出所选 5 个多选值的第一个静态块。

非常感谢任何帮助!!!

<?php
   $cmsstatic = $_product->getResource()->getAttribute('collection1')->getFrontend()->getValue($_product);
   $blockids = explode(",", $cmsstatic);
   foreach($blockids as $kry=>$value)
   {
  echo $this->getLayout()->createBlock('cms/block')->setBlockID($value)->tohtml();

   }
?>

这里的问题是您的 $value 块 ID 是错误的。看一下 $_product->getResource()->getAttribute('collection1')->getFrontend()->getValue($_product) 的输出,您可能会注意到它实际上看起来像这样:collection3, collection6。注意逗号后面的空格。当您 运行 explode(",", $cmsstatic) 时,您将获得结果数组中的空格。由于第一个块 ID 不包含额外的空格,因此它是有效的,但以下的 none 将是。

解决方案 1

explode(", ", $cmsstatic)

解决方案 2

$this->getLayout()->createBlock('cms/block')->setBlockId(trim($value))->toHtml()