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()
标题几乎说明了一切。我试图输出一个与属性值具有相同 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()