Oprava chybného přesouvání kategorií v administraci Magento 2

V administraci Magento je možné pomocí drag-and-drop přesouvat kategorie v rámci stromu a měnit tak jejich pořadí. Bohužel, občas se stane, že přesun neproběhne tak, jak má a po znovunačtení stránky jsou kategorie jinak (v lepším případě tak, jak byly před úpravou).

Na vině je sloupec position v tabulce catalog_category_entity, kde jsou různé kategorie na stejné pozici. Například tak pro pozici 5 ve stromu máte v databázi 10 kategorií a Magento je pak v administraci zobrazuje dle sekunárního řazení. Výsledkem je výše zmíněý fenomén, který je pro koncové uživatele frustrující.

Příčiny tohoto problému mohou být různé: import kategorií skriptem, chybný index atd. Náprava naštěstí není komplikovaná.

Vzhledem k jednorázové povaze zásahu nepokládám za nezbytné vytvářet modul, bohatě si vystačíme s konzolí MySQL/MariaDB. Doporučuji pro tento zákrok použít transakce (umí rollback):

start transaction;

Následně si připravíme proměnnou, do které budeme ukládat jednotlivé inkrementy:

@i:=@i+1

Poté je již možné přistoupit k samotnému updatu tabulky:

update catalog_category_entity where parent_id = 2 order by position asc set position = @i:=@i+1;

Výše uvedené nahradí hodnotu position hodnotou navýšenou o 1. V tomto konkrétním případě budou ovlivněny pouze kategorie spadající pod defaultní kategorii Vašeho shopu (parent_id = 2). Možno dle libosti a potřeby měnit. Výsledkem tak je posloupná řada pozic u jednotlivých kategorií.

Pokud je vše v pořádku:

commit;

Pokud nikoli:

rollback;

Pro více informací klidně napište nebo napište.

Zpět na přehled článků