我有一个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] =>
)
有没有人对如何扩展属性或以合理的方式解决问题有任何建议?
谢谢
答案 0 :(得分:0)
在后端,当您创建属性时,会有一个是/否选择标记为“在前端的产品视图页面上可见”。
转到管理员>目录>属性>管理属性>选择你的属性“display_on_frontend”>前端属性>将“在前端的产品视图页面上可见”更改为“是”。
然后,要访问该属性的值,您只需调用:
$_product->getData("display_on_frontend");
或者只使用驼峰式的getter:
$_product->getDisplayOnFrontend();