cancel
Showing results for 
Search instead for 
Did you mean: 

Make a custom product attribute automatically visible in the back-end product catalog grid

Make a custom product attribute automatically visible in the back-end product catalog grid

Hi

 

I created some custom product attributes programatically via the InstallData.

 

I managed to get them filterable and "displayable" in the product grid in the back-office catalog. However, is there a way to make them visible directly in the grid, without to have to select them in the column list?

 

Regards

2 REPLIES

Re: Make a custom product attribute automatically visible in the back-end product catalog grid

If you created your custom attribute using the Magento\Eav\Setup\EavSetup::addAttribute() function, then you can add 'is_used_in_grid' => true in the $attr parameter.

Here is an example for the url_key attribute from the CatalogUrlRewrite module.

$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'url_key',
[
'type' => 'varchar',
'label' => 'URL Key',
'input' => 'text',
'required' => false,
'sort_order' => 10,
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
'used_in_product_listing' => true,
'group' => 'Search Engine Optimization',
'is_used_in_grid' => true,
'is_visible_in_grid' => false,
'is_filterable_in_grid' => true,
]
);

 You may notice that 'is_visible_in_grid' is set to false for all product attributes. This value sounds like it would make your attribute visible in the grid, but it appears this may be a bug in Magento, because it does seem to work for the customers grid.

Re: Make a custom product attribute automatically visible in the back-end product catalog grid

I check in the database, the status or the column is_visible_in_grid has no effect.

Below is my code:

 

$eavSetup->addAttribute(
                    \Magento\Catalog\Model\Product::ENTITY,
                    'discount_percentage',
                    [
                        'type' => 'decimal',
                        'label' => 'Discount percentage',
                        'input' => 'text',
                        'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                        'visible' => true,
                        'required' => false,
                        'user_defined' => true,
                        'default' => 0,
                        'searchable' => false,
                        'filterable' => false,
                        'comparable' => false,
                        'visible_on_front' => false,
                        'used_in_product_listing' => true,
                        'is_used_in_grid' => true,
                        'is_filterable_in_grid' => true,
                        'unique' => false,
                        'apply_to' => '',
                        'group' => 'General',
                        'system' => true
                    ]
                );