You can add a new category attribute with the help of InstallData.php.
Create InstallData.php
File : app/code/PHPCodez/First/Setup/InstallData.php
<?php
namespace PHPCodez\First\Module\Setup;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
class InstallData implements InstallDataInterface {
protected $_pageFactory;
public function __construct(\Magento\Cms\Model\PageFactory $pageFactory) {
$this->_pageFactory = $pageFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) {
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Category::ENTITY,
'phpcodez_category',
[
'type' => 'varchar',
'label' => 'PHPCodez Category',
'input' => 'text',
'sort_order' => 100,
'source' => '',
'global' => 1,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => null,
'group' => '',
'backend' => ''
]
);
}
}
Display the category attribute
The category UI Component is rendered with configuration from the category_form.xml file. All files with that name are merged together. As a result, We will add a field by creating a category_form.xml file in the app/code/Mageplaza/HelloWorld/view/adminhtml/ui_component/ directory.
<?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="phpcodez_category"> <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">PHPCodez Category</item> </item> </argument> </field> </fieldset> </form>
Issue the following comnands and go to admin section and the new attribute will be vailable in category add/edit section.
php bin/magento setup:upgrade php bin/magento setup:static-content:deploy -f php bin/magento cache:clean