Magento-在分组产品表中显示自定义属性 [英] Magento - Show Custom Attributes in Grouped Product table

查看:49
本文介绍了Magento-在分组产品表中显示自定义属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要找到一种方法来显示自定义属性的值,以代替下图所示的产品名称".


(来源: 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)提供的最出色的答案,我将不会发现这一点.谢谢你先生.

解决方案

所有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()返回的数组的内容.

最后,如果custom属性位于相关产品之一简单产品上,您将需要更多类似的东西

$_associatedProducts[0]->getCreatedAt();

I need to find a way to show the value of a custom attribute in place of the "Product Name" shown in the image below.


(source: magentocommerce.com)

I'm working with /app/design/frontend/default/defaultx/template/catalog/product/view/type/grouped.php

The code below doesn't work(the custom attribute is yearmade):

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

Any help would be appreciated.

EDIT: So the answer turned out to be quite simple. You see what I failed to mention above was that there was indeed output... but that it was just a number (eg: 52). Turns out this was the ID for that custom attribute value (It was a Dropdown type of custom attribute).

So in summary
This works for custom attributes of type text:

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

But for all other types of custom attribute (I think), the following should be used:

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

I would not have discovered this without the most excellent answer provided by Alan Storm, below. Thank you sir.

解决方案

All Magento models have a "getData" method available, which will return an php-array of key/value pairs. Try this at the top of your grouped.phtml file (after $_product is defined)

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

You should see output that looks something like the following.

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
...     

So, you can grab an array of properties and just pull the key out. You could also use Magento's convenience/magic getX and setX methods. On all Magento models, you can access any property in the data array by calling a method based on the camel case version of the name,

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

So, whatever your custom attribute name is, you should be able to get at it using the above, and if you're not sure just print_r or var_dump the contents of the array returned by getData().

Finally, if the custom attribute is on one of the related products simple product, you'll wants something more like

$_associatedProducts[0]->getCreatedAt();

这篇关于Magento-在分组产品表中显示自定义属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆