通过添加属性来扩展属性

时间:2012-03-28 08:56:50

标签: magento

我有一个Magento网站,其中包含许多属性和属性集。每个类别都有自己的集合,客户希望类别和产品视图根据其所在的类别显示不同的属性。

这在switch / if语句中很容易,但如果可能的话我不想硬编码。

我的想法是为所调用的属性添加一个新属性。 'display_on_frontend'然后我可以在循环中使用它来查看是否应该显示一个属性。这有可能吗?

在我最初想要使用的产品视图页面上有一个名为Visible的属性,但是当我获得该属性时,它在数据中不可用。

以下是我用于获取产品视图属性的代码

$_attributes = Mage::getModel('catalog/product_attribute_api')->items($_product->getAttributeSetId());

foreach ($_attributes as $_attribute) :
    $attributeFull = Mage::getResourceModel('eav/entity_attribute_collection')
                                                ->setCodeFilter($_attribute['code'])
                                                ->getFirstItem();
endforeach;

返回内容的示例响应是

[_data:protected] => Array
    (
        [attribute_id] => 139
        [entity_type_id] => 4
        [attribute_code] => safe_working_load_range_tonnes
        [attribute_model] => 
        [backend_model] => 
        [backend_type] => int
        [backend_table] => 
        [frontend_model] => 
        [frontend_input] => select
        [frontend_label] => Safe Working Load (Tonnes)
        [frontend_class] => 
        [source_model] => eav/entity_attribute_source_table
        [is_required] => 0
        [is_user_defined] => 1
        [default_value] => 
        [is_unique] => 0
        [note] => 
    )

有没有人对如何扩展属性或以合理的方式解决问题有任何建议?

谢谢

1 个答案:

答案 0 :(得分:0)

在后端,当您创建属性时,会有一个是/否选择标记为“在前端的产品视图页面上可见”。

转到管理员>目录>属性>管理属性>选择你的属性“display_on_frontend”>前端属性>将“在前端的产品视图页面上可见”更改为“是”。

然后,要访问该属性的值,您只需调用:

$_product->getData("display_on_frontend");

或者只使用驼峰式的getter:

$_product->getDisplayOnFrontend();