Magento 1.9目录/分类自定义属性添加及特定店铺可见设置方法
Magento 1.9 分类自定义属性添加全指南
嗨,我来一步步帮你搞定Magento 1.9里分类自定义属性的两个需求:
1. 给目录/分类添加基础自定义属性
要给分类加自定义属性,最稳妥的方式是用安装脚本(别直接改数据库,不然升级容易出问题)。具体步骤如下:
第一步:创建安装脚本
在你的自定义模块的sql/[你的命名空间]_[你的模块名]_setup目录下,新建一个安装脚本(比如mysql4-install-0.1.0.php),把下面的代码放进去:
<?php $installer = $this; $installer->startSetup(); // 添加分类自定义属性 $installer->addAttribute(Mage_Catalog_Model_Category::ENTITY, 'banner_img1', array( 'group' => 'General', // 把属性放到「常规」标签组里 'type' => 'text', // 属性类型,这里是文本(如果是图片可以用media_image,但text也能存图片路径) 'label' => 'Door Banner Image1', // 后台显示的属性名称 'visible' => true, // 后台是否可见 'required' => false, // 是否必填 'visible_on_front' => false, // 是否在前端显示这个属性 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, // 作用域:全局所有店铺共用 )); $installer->endSetup(); ?>
第二步:配置模块的Setup资源
打开你模块的config.xml,确保在<global>标签里配置正确的Setup类:
<global> <resources> <[你的命名空间]_[你的模块名]_setup> <setup> <module>[你的命名空间]_[你的模块名]</module> <class>Mage_Catalog_Model_Resource_Setup</class> <!-- 必须用Catalog的Setup类,不然没法操作分类属性 --> </setup> </[你的命名空间]_[你的模块名]_setup> </resources> </global>
第三步:验证效果
- 登录Magento后台,刷新所有缓存
- 进入「目录 > 管理分类」,随便编辑一个分类,切换到「常规」标签,就能看到你加的
Door Banner Image1属性啦!
2. 添加仅特定店铺显示的分类自定义属性
要让属性只在指定店铺显示,核心就是把属性的作用域改成「店铺级别」,这样不同店铺可以单独设置,而且只有选中对应店铺时才会看到这个属性。
完整代码示例
修改安装脚本里的属性配置,重点改global参数,再补一些店铺级属性的设置:
<?php $installer = $this; $installer->startSetup(); // 添加店铺专属的分类自定义属性 $installer->addAttribute(Mage_Catalog_Model_Category::ENTITY, 'store_specific_banner', array( 'group' => 'General', 'type' => 'text', 'label' => '店铺专属横幅图片', 'visible' => true, 'required' => false, 'visible_on_front' => false, // 关键!把作用域设为STORE,这样每个店铺可以单独设置 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE, 'user_defined' => true, // 允许用户自定义这个属性 'default' => '', // 默认值为空 'note' => '这个设置仅对当前选中的店铺生效', // 后台给管理员的提示 )); $installer->endSetup(); ?>
关键参数解释
SCOPE_STORE:设置后,在后台编辑分类时,必须先在页面顶部的「店铺视图」下拉框选中目标店铺,才能看到并编辑这个属性,不同店铺的设置互不干扰- 如果想让属性在网站级别生效(同一网站下的所有店铺共用),可以改成
SCOPE_WEBSITE
验证效果
- 执行完安装脚本后,刷新后台缓存
- 进入分类编辑页面,切换不同的「店铺视图」
- 看「常规」标签,只有选中对应的店铺时,才会出现这个店铺专属的属性哦
小提醒:执行安装脚本前记得备份数据库!如果是已经存在的属性,要改用
updateAttribute方法修改作用域,别重复添加。
内容的提问来源于stack exchange,提问作者maiItsyuj
相关产品推荐
相关产品推荐

