We sacrifice by not doing any other technology, so that you get the best of Magento.

We sacrifice by not doing any other technology, so that you get the best of Magento.

Here, we will discuss about how to add custom attribute in Magento 2 Category section.

I have created a custom module to add boolean type custom attribute.

Here, I have used MageMonkey as vendor and CustomCategorySettings as the module name.

Please follow below steps:

1. Create MageMonkey/CustomCategorySettings directories in app/code

2. Create registration.php file at app/code/MageMonkey/CustomCategorySettings/ and add following code:

<?php
MagentoFrameworkComponentComponentRegistrar::register(
    MagentoFrameworkComponentComponentRegistrar::MODULE,
    'MageMonkey_CustomCategorySettings',
    __DIR__
);

3. Create module.xml file at app/code/MageMonkey/CustomCategorySettings/etc/ and add following code:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="MageMonkey_CustomCategorySettings" setup_version="1.0.0">
        <sequence>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>

4. Create InstallData.php file at app/code/MageMonkey/CustomCategorySettings/Setup/ and add following code:

<?php
namespace MageMonkeyCustomCategorySettingsSetup;
use MagentoFrameworkModuleSetupMigration;
use MagentoFrameworkSetupInstallDataInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoCatalogSetupCategorySetupFactory;
 
class InstallData implements InstallDataInterface
{
    /**
     * Category setup factory
     *
     * @var CategorySetupFactory
     */
    private $categorySetupFactory;
 
    /**
     * Init
     *
     * @param CategorySetupFactory $categorySetupFactory
     */
    public function __construct(CategorySetupFactory $categorySetupFactory)
    {
        $this->categorySetupFactory = $categorySetupFactory;
    }
    /**
     * {@inheritdoc}
     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
     */
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $installer = $setup;
        $installer->startSetup();
 
        $categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
        $entityTypeId = $categorySetup->getEntityTypeId(MagentoCatalogModelCategory::ENTITY);
        $attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId);
        $categorySetup->removeAttribute(
        MagentoCatalogModelCategory::ENTITY, 'CUSTOM_ATTRIBUTE' );
        $categorySetup->addAttribute(
        MagentoCatalogModelCategory::ENTITY, 'CUSTOM_ATTRIBUTE', [
             'type' => 'int',
             'label' => 'CUSTOM ATTRIBUTE LABEL',
             'input' => 'boolean',
             'source' => 'MagentoEavModelEntityAttributeSourceBoolean',
             'required' => false,
             'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_STORE,
             'group' => 'Custom Settings',
            ]
        );
$installer->endSetup();
    }
}

5. Create category_form.xml file at app/code/MageMonkey/CustomCategorySettings/view/adminhtml/ui_component/ and add following code:

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="custom_settings">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="label" xsi:type="string">Custom Settings</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="sortOrder" xsi:type="number">99</item>
            </item>
        </argument>
        <field name="CUSTOM_ATTRIBUTE">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">boolean</item>
                    <item name="formElement" xsi:type="string">checkbox</item>
                    <item name="label" xsi:type="string" translate="true">CUSTOM ATTRIBUTE LABEL</item>
                    <item name="prefer" xsi:type="string">toggle</item>
                    <item name="valueMap" xsi:type="array">
                        <item name="true" xsi:type="string">1</item>
                        <item name="false" xsi:type="string">0</item>
                    </item>
                    <item name="default" xsi:type="number">0</item>
                </item>
            </argument>
        </field>    
    </fieldset>
</form>

6. Run following commands to enable this custom module.

php bin/magento setup:upgrade
php bin/magento cache:clean
php bin/magento cache:flush

Now, you can see in Magento 2 Admin > Catalog > Category

There will be a tab group “Custom Settings” in admin category as shown below.

Fill the below form if you need any Magento relate help/advise/consulting.

With Only Agency that provides a 24/7 emergency support.

    Recent Articles
    Get a Free Quote

      Let’s initiate a discussion!!

      With Only Agency that provides a 24/7 emergency support.