我已经开始使用magento作为我的电子商务cms,我知道这是一个非常强大的平台。最近我遇到了它的功能,帮助开发人员扩展核心,我已经设法添加自定义类别选项。有没有机会达到同样的结果对一个属性?我想添加一个文本描述的属性标签,并显示在前端?
dba5bblo1#
这可以通过编写自定义模块来实现。我这样做是为了给属性添加一个工具提示选项。您可以使用adminhtml_catalog_product_attribute_edit_prepare_form-事件添加一个带有观察者的字段:
adminhtml_catalog_product_attribute_edit_prepare_form
$fieldset = $observer->getForm()->getElement('base_fieldset'); $fieldset->addField('tooltip', 'text', array( 'name' => 'tooltip', 'label' => Mage::helper('catalog')->__('Tooltip'), 'title' => Mage::helper('catalog')->__('Tooltip') ));
这会在属性编辑屏幕中添加额外的字段。下一步是确保在编辑属性时保存属性。这可以在安装程序脚本中通过以下命令来完成:
$installer->getConnection()->addColumn( $installer->getTable('catalog/eav_attribute'), 'tooltip', array( 'type' => Varien_Db_Ddl_Table::TYPE_TEXT, 'nullable' => true, 'comment' => 'Tooltip' ) );
您还必须确保您的Model/Resource/Setup-类扩展Mage_Eav_Model_Entity_Setup而不是Mage_Core_Model_Resource_Setup。现在,你可以保存你的自定义属性了。下一步是在前端显示它。这可以很容易地完成,只需要简单的Magento模板101:例如,在foreach()-循环中的catalog/product/view/type/options/configurable.phtml中,放置如下内容,以显示工具提示:
Model/Resource/Setup
Mage_Eav_Model_Entity_Setup
Mage_Core_Model_Resource_Setup
foreach()
catalog/product/view/type/options/configurable.phtml
echo $_attribute->getProductAttribute()->getTooltip();
那很好...
**更新:**由于我通过电子邮件收到了一些关于这个主题的问题,我决定写一篇关于这个主题的更详细的博客文章。你可以在这里阅读:http://gielberkers.com/add-custom-properties-magento-attributes/
dphi5xsq2#
对于Magento 2(为产品属性添加简单的是/否属性)。可使用ui_component“product_attribute_add_form.xml”(示例可在供应商模块中找到)
1.创建一个新的模块Vendor_ModuleName。扩展“catalog_eav_attribute”并在Vendor/ModuleName/etc/db_schema.xml中添加新列(不要忘记生成db_schema_whitelist. json)
<?xml version="1.0"?> <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd"> <table name="catalog_eav_attribute"> <column xsi:type="smallint" name="new_column" padding="6" unsigned="false" nullable="false" identity="false" default="0" comment="Comment for new_column"/> </table> </schema>
1.订阅供应商/模块名称/etc/adminhtml/events.xml中的事件“product_attribute_form_build_main_tab”-如果要将新属性放在主选项卡(base_fieldset)中“product_attribute_form_build”-如果要将新属性放在高级选项卡(advanced_fieldset)中
<?xml version="1.0" ?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="product_attribute_form_build"> <observer name="vendor_modulename_observer_backend_product_attributeformbuild" instance="Vendor\ModuleName\Observer\Backend\Product\AttributeFormBuild"/> </event> </config>
1.创建一个观察器供应商/模块名称/观察器/后端/产品/AttributeFormBuild. php
<?php declare(strict_types=1); namespace Vendor\ModuleName\Observer\Backend\Product; use Magento\Framework\Module\Manager; use Magento\Config\Model\Config\Source\Yesno; class AttributeFormBuild implements \Magento\Framework\Event\ObserverInterface { protected Yesno $yesNo; protected $moduleManager; /** * @param Manager $moduleManager * @param Yesno $yesNo */ public function __construct( Manager $moduleManager, Yesno $yesNo ) { $this->moduleManager = $moduleManager; $this->yesNo = $yesNo; } /** * @param \Magento\Framework\Event\Observer $observer * @return void */ public function execute( \Magento\Framework\Event\Observer $observer ) { if (!$this->moduleManager->isEnabled('Vendor_ModuleName')) { return; } $form = $observer->getForm(); // $fieldset = $form->getElement('base_fieldset'); $fieldset = $form->getElement('advanced_fieldset'); $yesnoSource = $this->yesNo->toOptionArray(); $fieldset->addField( 'new_column', 'select', [ 'name' => 'new_column', 'label' => __('New column label'), 'title' => __('New column title'), 'note' => __('Use this attribute for something'), 'values' => $yesnoSource, 'required' => false, ], 'is_filterable' ); } }
2条答案
按热度按时间dba5bblo1#
这可以通过编写自定义模块来实现。我这样做是为了给属性添加一个工具提示选项。
您可以使用
adminhtml_catalog_product_attribute_edit_prepare_form
-事件添加一个带有观察者的字段:这会在属性编辑屏幕中添加额外的字段。下一步是确保在编辑属性时保存属性。这可以在安装程序脚本中通过以下命令来完成:
您还必须确保您的
Model/Resource/Setup
-类扩展Mage_Eav_Model_Entity_Setup
而不是Mage_Core_Model_Resource_Setup
。现在,你可以保存你的自定义属性了。下一步是在前端显示它。这可以很容易地完成,只需要简单的Magento模板101:
例如,在
foreach()
-循环中的catalog/product/view/type/options/configurable.phtml
中,放置如下内容,以显示工具提示:那很好...
**更新:**由于我通过电子邮件收到了一些关于这个主题的问题,我决定写一篇关于这个主题的更详细的博客文章。你可以在这里阅读:http://gielberkers.com/add-custom-properties-magento-attributes/
dphi5xsq2#
对于Magento 2(为产品属性添加简单的是/否属性)。
可使用ui_component“product_attribute_add_form.xml”(示例可在供应商模块中找到)
1.创建一个新的模块Vendor_ModuleName。扩展“catalog_eav_attribute”并在Vendor/ModuleName/etc/db_schema.xml中添加新列(不要忘记生成db_schema_whitelist. json)
1.订阅供应商/模块名称/etc/adminhtml/events.xml中的事件“product_attribute_form_build_main_tab”-如果要将新属性放在主选项卡(base_fieldset)中“product_attribute_form_build”-如果要将新属性放在高级选项卡(advanced_fieldset)中
1.创建一个观察器供应商/模块名称/观察器/后端/产品/AttributeFormBuild. php