在 list.phtml 中显示产品属性 - Magento

Posted

技术标签:

【中文标题】在 list.phtml 中显示产品属性 - Magento【英文标题】:Show product attributes in list.phtml - Magento 【发布时间】:2012-01-26 02:45:40 【问题描述】:

您好,我已经阅读了很多关于此的帖子,虽然它有效但并不完整。

例如;属性 1 = 鞋码,属性 2 = 鞋颜色。 两者都在下拉列表中,我想在类别页面中列出每个产品的所有可能属性颜色。

问题:当我测试代码时,它只会显示第一个鞋子颜色,而不是所有可能的颜色。我在这里做错了什么?

以下是我所拥有的 3 个示例。所有代码都有效,但只显示第一个属性颜色。 示例 1:

<!-- Find the following loop -->
<?php foreach ($_productCollection as $_product): ?>
<!-- Inside it insert one of the following codes as needed -->
<!-- Use this for regular text attributes -->
<?php echo $_product->getMyAttribute() ?>
<?php echo $_product->getAnotherCustomAttribute() ?>

<!-- Use this for dropdown attributes -->
<?php echo $_product->getAttributeText('shoecolor') ?>
<?php endforeach?>
<!-- ... --> 

示例 2

<?php echo $_product->getResource()->getAttribute('shoecolor')->getFrontend()->getValue($_product) ?>

示例 3

<?php $type = "simple"; $p = "0" ?> 
<?php foreach ($_productCollection as $_product): ?> 
<?php $custom = Mage::getModel('catalog/product_type_configurable')->setProduct($_product); ?> 
<?php $col = $custom->getUsedProductCollection()->addAttributeToSelect('shoecolor')->addFilterByRequiredOptions(); ?> 
<?php foreach($col as $simple_product)  $p=$simple_product->getId(); $type="configurable";  ?> 

<?php if($type == "configurable"): ?> 
<h5><?php echo $_product->load($p)->getAttributeText('shoecolor'); ?><?php $type="simple" ?></h5> 
 <?php endif; ?> 

【问题讨论】:

我不明白你的问题。你的意思是“列出所有可能的属性颜色”?您应该看到您在产品页面中设置了可能的值。 【参考方案1】:

这是获取不属于任何产品的属性名称和值的代码

$attributeCode = 'YOUR_ATTRIBUTE_CODE';

$product = Mage::getModel('catalog/product');

$productCollection = Mage::getResourceModel('eav/entity_attribute_collection')
   ->setEntityTypeFilter($product->getResource()->getTypeId())
   ->addFieldToFilter('attribute_code', $attributeCode);

$attribute = $productCollection->getFirstItem()->setEntity($product->getResource());
print_r($attribute->getData()); // print out the available attributes

$options = $attribute->getSource()->getAllOptions(false);
print_r($options); // print out attribute options

【讨论】:

【参考方案2】:

另一种方式

$_product = Mage::getModel('catalog/product')->load($this->getProduct()->getId());

如果你创建一个像你的“shoesize”这样的属性,那么你可以通过以下代码访问。

如果您的属性类型为文本字段(应加载 $_product):

<?php
  echo $_product->getShoesize();
  // if your arribute was shoe_size then
  echo $_product->getShoeSize();
?>

如果您的属性类型为 Multiple Select 或 Dropdown,获取所有属性值:

<?php
   echo $_product->getAttributeText('shoesize');
?>

【讨论】:

【参考方案3】:

你可以在属性编辑页面配置它

用于产品列表 -> 是

【讨论】:

最佳答案!由于该属性包含在 $_product 中,我们不会启动另一个查询!太好了!【参考方案4】:

试试这个:

$_pp2 = Mage::getModel('catalog/product')->load(    $_product->getId()    );
echo $_pp2->getdm();

在:

 <?php $i=0; foreach ($_productCollection as $_product): ?>
        <?php if ($i++%$_columnCount==0): ?>

属性代码:dm

Type: Text area

在view.phtml

echo $_product->get>getdm(); ?>

【讨论】:

以上是关于在 list.phtml 中显示产品属性 - Magento的主要内容,如果未能解决你的问题,请参考以下文章

Magento 2在愿望清单中仅显示5个产品

将寻呼机放在顶部和底部

Magento 产品列表未显示在移动主页上

Magento 产品图片未调整大小

搜索页面上 list.phtml 中非对象的 getId()

产品列表中的 Magento 寻呼机