编程的方式来添加分类属性

本文的主题是通过编程来添加分类属性,列举了带有 PHP 脚本的具体步骤。如果有安装脚本的权限,当你没有编程经验时,都不用浪费时间去学习或者修改任何代码,只需要复制粘贴接下来的代码片段就可以。

概览

  • 第一步,创建 InstallData.php

  • 第二步,定义 install() 方法

  • 第三步,创建分类属性

  • 第四步,展示分类属性

第一步,创建文件 InstallData.php

从 InstallData 类开始,app/code/Mageplaza/HelloWorld/Setup/InstallData.php 内容如下:

<?php
namespace Mageplaza\HelloWorld\Setup;

use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface
{
	private $eavSetupFactory;

	public function __construct(EavSetupFactory $eavSetupFactory)
	{
		$this->eavSetupFactory = $eavSetupFactory;
	}
	
}

第二步,定义 install() 方法

<?php
	
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
	
}

第三步,编程的方式来创建分类属性

<?php
namespace Mageplaza\HelloWorld\Setup;

use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Eav\Setup\EavSetupFactory;

class InstallData implements InstallDataInterface
{

	private $eavSetupFactory;

	public function __construct(EavSetupFactory $eavSetupFactory)
	{
		$this->eavSetupFactory = $eavSetupFactory;
	}

	public function install(
		ModuleDataSetupInterface $setup,
		ModuleContextInterface $context
	)
	{
		$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

		$eavSetup->addAttribute(
			\Magento\Catalog\Model\Category::ENTITY,
			'mp_new_attribute',
			[
				'type'         => 'varchar',
				'label'        => 'Mageplaza Attribute',
				'input'        => 'text',
				'sort_order'   => 100,
				'source'       => '',
				'global'       => 1,
				'visible'      => true,
				'required'     => false,
				'user_defined' => false,
				'default'      => null,
				'group'        => '',
				'backend'      => ''
			]
		);
	}
}

第四步,展示分类属性

分类 UI 组件通过 categroy_form.xml 文件的配置来渲染的,所有这个名字的文件会被合并到一起。所以我们在目录 app/code/Mageplaza/HelloWorld/view/adminhtml/ui_component/ 下通过创建文件 category_form.xml 来添加一个字段。

这时在 “general” 下添加一个字段的完整的例子。需要注意的是 mp_new_attribute 应该和创建的属性 ID 一致。

<?xml version="1.0" ?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="general">
        <field name="mp_new_attribute">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="required" xsi:type="boolean">false</item>
                    <item name="validation" xsi:type="array">
                        <item name="required-entry" xsi:type="boolean">false</item>
                    </item>
                    <item name="sortOrder" xsi:type="number">333</item>
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="formElement" xsi:type="string">input</item>
                    <item name="label" translate="true" xsi:type="string">Mageplaza new attribute</item>
                </item>
            </argument>
        </field>
    </fieldset>
</form>

以上完成后,执行升级,清缓存并且检查结果。

从后台管理中去到 Product > Catagories 中检查结果,如下图所示:

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: