[Magento 2] Adding custom category attribute (with scopes)

Creating a new category attribute should be easy in Magento 2. It is, more or less. Follow these steps and you will get to it: Files you will need to create A quick screenshot of how your module will look once you create it: YourCompany/YourModule/registration.php YourCompany/YourModule/etc/module.xml YourCompany/YourModule/Setup/InstallData.php YourCompany/YourModule/view/adminhtml/ui_component/category_form.xml This code should be enough to create the category attribute. However, even though we have created the attribute passing the parameter ‘global’ = \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE, you’ll see that Read more…

Default Magento 2 modules you should disable

Magento 2 includes many default modules that you probably won’t ever use. This is my proposed list and you can disable it directly using the following command: Magento_*Analytics Requires a subscription Magento_Marketplace If you’re a developer installing modules via composer, this is not necessary Magento_AuthorizeMagento_Braintree Not necessary if you don’t use Authorize.net/Braintree payment service provider Magento_Weee Related to particular product taxes. Read the doc to see if you need it… but I don’t think so Read more…

Redsys Test Cards

If you use Redsys (payment platform used by Spanish banking like CaixaBank, Banco Santander, Banco Sabadell and many others), you may want to have different test cards for your test platform. I want to share with you the ones provided by the official documentation: Type PAN 3DSecure v.2 3DSMethod Authorization Type Authorization 4548812049400004 No No CIP Authorization 5101332200023012 No No – Authorization 374245455400001 No No – Authorization 4918019160034602 Yes Yes Frictionless Authorization 4548814479727229 Yes No Read more…

Apache redirections when switching Magento from Single Store to Multistore

Recently we converted a 10 years old Magento single store to a Magento Multi Store. We wanted to add English language (original language was Spanish). We did this by creating a new store, asigning the code /es/ to the Spanish store and /en/ to the English store. To avoid SEO issues, we had to create some redirection rules: Everything that was on the root path / had to be moved to /es, except for some Read more…

Setting up a LXC / LXD machine for development on Ubuntu/Debian

One of my favourite things I learned working at Smile was using LXC for development. It’s different from Docker in the sense that you don’t configure services and things like that: you just create a exact copy of the environment you’re going to have in production, with all its services included. You can do that with Docker, but it’s not the same. Above all when I’m already used to LXC and don’t see the need Read more…

[Magento 2] Delete All Categories Programmatically

There are a lot of articles on Internet proposing the deletion of all categories using a sql query. I’ve tested one of them and I’ve run into several problems due to this (url keys not deleted correctly, deletion of the Default category…). There is a safer way, using Magento tools. Things you need to know: You’ll need to inject the classes CategoryFactory and Registry Before deleting a category, it’s necessary to use the Registry to Read more…

[Magento 2] Adding product attributes to quote items getProduct function

When calling the function $block->getProduct() in a quote item in the cart page, Magento 2 will return the product and its basic attributes. The attributes that can be retrieved from the product when calling this function in a quote_item page can be found in the file vendor/magento/module-sales/etc/catalog_attributes.xml. From your own module, you can create the file Vendor/Module/etc/catalog_attributes.xml and add the attributes you need:

Press Ctrl+C to copy the following code.
"