4

我需要找到一种方法来显示自定义属性的值,而不是下图中显示的“产品名称”。

分组产品表
(来源:magentocommerce.com

我正在使用 /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

下面的代码不起作用(自定义属性是 yearmade):

<?php if (count($_associatedProducts)): ?>  
<?php foreach ($_associatedProducts as $_item): ?>  
    <tr>  
        <td><?php echo $this->htmlEscape($_item->getYearmade()) ?></td>

任何帮助,将不胜感激。

编辑:所以答案很简单。你看我上面没有提到的确实有输出......但它只是一个数字(例如:52)。原来这是该自定义属性值的 ID(它是自定义属性的下拉类型)。

所以总而言之,
这适用于文本类型的自定义属性:

echo $this->htmlEscape($_item->getYearmade())

但是对于所有其他类型的自定义属性(我认为),应该使用以下内容:

echo $this->htmlEscape($_item->getAttributeText('yearmade'))

如果没有下面 Alan Storm 提供的最出色的答案,我不会发现这一点。谢谢你,先生。

4

4 回答 4

3

所有 Magento 模型都有一个可用的“getData”方法,它将返回一个键/值对的 php 数组。在您的 grouped.phtml 文件顶部尝试此操作(在定义 $_product 之后)

print('<pre>');print_r($_product->getData());print('</pre>');

您应该会看到类似于以下内容的输出。

Array
(
    [store_id] => 1
    [entity_id] => 3437
    [entity_type_id] => 4
    [attribute_set_id] => 27
    [type_id] => grouped
    [sku] => 
    [category_ids] => 
    [created_at] => 2009-04-16 03:37:51
...     

因此,您可以获取一组属性,然后将钥匙拔出。您还可以使用 Magento 的便捷/神奇的 getX 和 setX 方法。在所有 Magento 模型上,您可以通过调用基于名称的驼峰式版本的方法来访问数据数组中的任何属性,

$created_at = $_product->getCreatedAt();
$_product->setCreatedAt($date);

因此,无论您的自定义属性名称是什么,您都应该能够使用上面的方法来获取它,如果您不确定只是 print_r 或 var_dump,则可以使用 getData() 返回的数组的内容。

最后,如果自定义属性位于相关产品简单产品之一上,您将需要更像

$_associatedProducts[0]->getCreatedAt();
于 2009-06-17T06:58:21.597 回答
1

我有同样的问题。

  1. 您必须找到 grouped.phtml app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml

  2. 获取项目,示例 $_item[units]

  3. 在表格中添加一个单元格并粘贴 echo$_item['units'];

  4. 就这样 :)

于 2012-02-06T16:50:46.240 回答
0

从版本。1.3. 在 1.4 中你也必须使用$_item而不是$_product,对我来说这在可分组表中也可以正常工作。

例子:

<?php echo $_item->getAttributeText('your attribute'); ?>
于 2010-06-07T11:11:18.870 回答
0

有些插件可以非常轻松地解决您的解决方案。您可以在此处找到采用产品选项并将其显示在网格中的插件:http: //www.magemechanics.com/product-grid-options.html

于 2011-05-18T10:03:49.197 回答