Moduł Export Import Categories dla Magento 2
Moduły Magento na jasnych zasadach
Kupujesz moduł raz, bez ograniczeń domenowych
Darmowa instalacja i aktualizacje przez Composer
Program Afiliacyjny
Wsparcie techniczne dla Magento
Jasne zasady licencjonowania modułów Magento
Bezpieczeństwo kodu Modułów Magento
Kowal_ExportImportCategories to moduł Magento 2 umożliwiający eksport i import atrybutów kategorii w formacie CSV z uwzględnieniem wybranego store view. Rozszerzenie zostało przygotowane z myślą o sklepach, które pracują na wielu wersjach językowych, wielu widokach sklepu albo potrzebują masowo aktualizować dane kategorii bez ręcznej edycji każdej kategorii w panelu administracyjnym.
Moduł pozwala wyeksportować kategorie do pliku CSV, zmodyfikować wybrane atrybuty poza Magento, a następnie zaimportować dane z powrotem w trybie aktualizacji istniejących kategorii albo tworzenia nowych kategorii. Import działa na wskazanym store view, dzięki czemu można wygodnie przygotowywać tłumaczenia nazw, opisów, meta tagów, URL-i oraz innych atrybutów kategorii.
Dla kogo jest ten moduł
Moduł jest przeznaczony dla:
- sklepów Magento 2 z wieloma wersjami językowymi,
- zespołów contentowych pracujących na arkuszach CSV,
- agencji wdrażających katalogi kategorii między środowiskami,
- administratorów, którzy muszą masowo aktualizować nazwy, opisy, meta dane i URL-e kategorii,
- sklepów, które mają własne atrybuty kategorii i chcą nimi zarządzać zbiorczo,
- projektów, w których dane kategorii są przygotowywane poza Magento, np. przez tłumaczy, dział SEO albo system PIM.
Najważniejsze możliwości
- Eksport kategorii do CSV dla wybranego
store view. - Import kategorii z CSV dla wybranego
store view. - Tryb aktualizacji istniejących kategorii:
update. - Tryb tworzenia nowych kategorii:
insert. - Wybór atrybutów eksportowanych do CSV.
- Wybór atrybutów importowanych z CSV.
- Automatyczne kolumny systemowe potrzebne do identyfikacji kategorii.
- Walidacja nagłówków CSV przed importem.
- Walidacja nazw kolumn względem rzeczywistych atrybutów kategorii Magento.
- Obsługa własnych atrybutów kategorii dodanych w Magento.
- Obsługa wartości tekstowych dla wszystkich atrybutów.
- Obsługa atrybutów
selectimultiselectpo labelach opcji. - Możliwość pracy na wartościach widocznych w store view albo tylko na nadpisaniach store view.
- Tryb
dry-run, czyli pełna walidacja importu bez zapisu danych. - Polityka pustych wartości.
- Strategie obsługi
url_key. - Opcjonalne tworzenie permanent redirect przy zmianie URL kategorii.
- Obsługa ścieżek do obrazków kategorii.
- Batch processing dla większych plików.
- Polityki obsługi błędów.
- Raport importu w CSV.
- Historia importów w panelu administracyjnym.
Eksport kategorii
Eksport pozwala wygenerować plik CSV z kategoriami dla wybranego store view. Administrator wybiera widok sklepu oraz atrybuty kategorii, które mają znaleźć się w pliku. Moduł automatycznie dodaje kolumny systemowe potrzebne do identyfikacji kategorii i zachowania struktury drzewa.
Eksport można wykorzystać do:
- przygotowania tłumaczeń kategorii,
- audytu danych kategorii,
- masowej korekty meta danych SEO,
- porównania wartości między store view,
- przygotowania pliku do importu na tym samym lub innym środowisku,
- archiwizacji aktualnych danych kategorii przed zmianami.
Zakres eksportu
Eksport obejmuje atrybuty kategorii. Moduł nie eksportuje produktów przypisanych do kategorii. Nie wykonuje również operacji usuwania kategorii.
Administrator może wybrać:
Store View,- kategorię startową,
- atrybuty do eksportu,
- separator CSV,
- tryb wartości store view.
Tryby wartości store view przy eksporcie
Moduł obsługuje dwa tryby eksportu wartości:
resolved_value- eksportowana jest wartość widoczna w danymstore view, czyli po uwzględnieniu fallbacku Magento do wartości domyślnej.store_override_only- eksportowana jest tylko wartość nadpisana bezpośrednio dla danegostore view; jeśli wartość jest dziedziczona, komórka CSV pozostaje pusta.
Tryb resolved_value jest wygodny do pracy redakcyjnej, ponieważ pokazuje realną wartość widoczną w sklepie. Tryb store_override_only jest przydatny, gdy trzeba kontrolować wyłącznie tłumaczenia albo nadpisania specyficzne dla danego widoku sklepu.
Import kategorii
Import pozwala wczytać plik CSV i zapisać wybrane atrybuty kategorii dla wskazanego store view. Store view wybierany w formularzu importu jest nadrzędny, a kolumna store_view_code z CSV jest używana do walidacji, czy plik jest zgodny z wybranym widokiem sklepu.
Import można wykorzystać do:
- tłumaczenia kategorii,
- aktualizacji nazw kategorii,
- aktualizacji opisów kategorii,
- aktualizacji meta tagów,
- aktualizacji
url_key, - tworzenia nowych kategorii,
- importu własnych atrybutów kategorii,
- aktualizacji atrybutów menu i widoczności,
- importu ścieżek obrazków kategorii.
Tryb update
Tryb update aktualizuje istniejące kategorie. Moduł nie tworzy nowych kategorii w tym trybie.
Kategoria jest wyszukiwana przede wszystkim po entity_id. Jeżeli entity_id nie jest dostępne, moduł może użyć category_path, o ile ścieżka jednoznacznie wskazuje jedną kategorię.
Tryb update jest rekomendowany dla:
- tłumaczeń kategorii między store view,
- korekt SEO,
- aktualizacji opisów,
- aktualizacji nazw,
- zmiany wartości własnych atrybutów kategorii.
Przykładowy scenariusz tłumaczenia:
- Eksport kategorii z bazowego store view.
- Zmiana
store_view_codew CSV na kod docelowego store view. - Zachowanie tych samych
entity_id. - Uzupełnienie tłumaczeń w kolumnach
name,description,meta_title,meta_description. - Import w trybie
updatedla docelowego store view.
W takim wariancie moduł zapisuje wybrane atrybuty w kontekście numerycznego store_id wybranego w formularzu importu.
Tryb insert
Tryb insert tworzy nowe kategorie. W tym trybie entity_id nie jest wymagane, ponieważ Magento nadaje je automatycznie.
Nowa kategoria musi mieć wskazanego rodzica przez:
parent_entity_id,- albo
parent_path.
Tryb insert jest rekomendowany dla:
- tworzenia nowych struktur kategorii,
- przenoszenia drzewa kategorii między środowiskami,
- przygotowywania kategorii w arkuszu CSV,
- tworzenia kategorii na podstawie zewnętrznych danych.
Jeżeli import zawiera zarówno rodzica, jak i dziecko, dane powinny być ułożone w kolejności od kategorii wyższego poziomu do kategorii niższego poziomu.
Format CSV
Pierwszy wiersz pliku CSV musi zawierać nagłówki kolumn. Kolumny dzielą się na:
- kolumny systemowe,
- kolumny atrybutów kategorii.
Kolumny atrybutów muszą odpowiadać kodom atrybutów Magento, np.:
name,url_key,description,meta_title,meta_description,is_active,include_in_menu.
Kolumny systemowe
Moduł korzysta z następujących kolumn systemowych:
store_view_code,entity_id,parent_entity_id,category_path,parent_path,level,position,attribute_set_id.
Kolumny systemowe nie są traktowane jako atrybuty EAV. Służą do identyfikacji kategorii, walidacji store view oraz odtworzenia struktury drzewa.
Przykład CSV dla aktualizacji
store_view_code,entity_id,category_path,name,url_key,is_active,include_in_menu,meta_title
pl,13,Default Category/Gear/Bags,Torby,torby,1,1,Torby
pl,14,Default Category/Gear/Fitness Equipment,Sprzet fitness,sprzet-fitness,1,1,Sprzet fitness
Przykład CSV dla tworzenia kategorii
store_view_code,parent_entity_id,parent_path,category_path,name,url_key,is_active,include_in_menu
default,12,Default Category/Gear,Default Category/Gear/Helmets,Helmets,helmets,1,1
default,12,Default Category/Gear,Default Category/Gear/Gloves,Gloves,gloves,1,1
Praca na atrybutach tekstowych
Moduł zapisuje wartości w CSV jako tekst. Dzięki temu plik można edytować w arkuszu kalkulacyjnym, przekazać tłumaczowi albo przygotować automatycznie w zewnętrznym systemie.
Dla atrybutów typu select i multiselect moduł pracuje po labelach opcji, a nie po technicznych ID opcji. To oznacza, że w CSV widoczne są czytelne wartości, takie jak Products only, Position albo Price.
Dla multiselect wiele wartości jest rozdzielanych separatorem |.
Przykład:
store_view_code,entity_id,category_path,display_mode,available_sort_by,default_sort_by
default,13,Default Category/Gear/Bags,Products only,Position|Product Name|Price,Position
Jeżeli label opcji nie istnieje albo nie jest jednoznaczny, import zgłosi błąd walidacji.
Polityka pustych wartości
Podczas importu administrator wybiera sposób interpretacji pustych komórek CSV:
skip_empty- pusta komórka nie zmienia istniejącej wartości.clear_value- pusta komórka czyści wartość atrybutu dla wybranego store view.use_default- pusta komórka usuwa nadpisanie store view i pozwala Magento użyć wartości domyślnej.
Domyślnie rekomendowanym wariantem dla aktualizacji jest skip_empty, ponieważ ogranicza ryzyko przypadkowego wyczyszczenia danych.
Obsługa URL kategorii
Moduł pozwala skonfigurować strategię obsługi url_key:
use_csv_value- używa wartości z CSV.generate_from_name- generujeurl_keyna podstawie atrybutuname.keep_existing- w trybieupdatezachowuje obecnyurl_key.magento_default- pozostawia obsługę URL standardowemu mechanizmowi Magento.
Administrator może również zdecydować, czy przy zmianie url_key mają zostać utworzone permanent redirects.
Ta konfiguracja jest szczególnie istotna przy tłumaczeniach, ponieważ różne sklepy mogą stosować różne strategie:
- tłumaczone URL-e dla każdego języka,
- wspólne URL-e między wersjami językowymi,
- URL-e generowane automatycznie z nazw kategorii,
- ręcznie zarządzane URL-e SEO.
Obrazki kategorii
Moduł może importować atrybuty obrazków kategorii, jeżeli odpowiednie kolumny zostaną wybrane do importu.
Domyślny katalog źródłowy:
pub/media/import/categories
W CSV podawana jest ścieżka tekstowa względem tego katalogu, np.:
gear/bags.jpg
Moduł waliduje istnienie pliku oraz rozszerzenie. Obsługiwane są bezpieczne formaty graficzne, takie jak:
jpg,jpeg,png,webp,gif.
Tryb dry-run
Tryb dry-run pozwala uruchomić walidację importu bez zapisywania danych w Magento.
W tym trybie moduł:
- odczytuje CSV,
- waliduje nagłówki,
- waliduje store view,
- sprawdza istnienie kategorii albo rodziców,
- sprawdza atrybuty,
- mapuje wartości
selectimultiselect, - sprawdza obrazki,
- generuje raport błędów i ostrzeżeń,
- nie zapisuje kategorii.
To rekomendowany pierwszy krok przed każdym większym importem.
Batch processing
Import działa partiami. Rozmiar batcha można skonfigurować w formularzu importu.
Domyślna wartość:
100 wierszy
Batch processing ogranicza ryzyko timeoutów i nadmiernego zużycia pamięci przy większych plikach.
Polityka błędów
Moduł obsługuje trzy warianty zachowania przy błędach:
skip_invalid_rows- błędne wiersze są pomijane, poprawne są importowane dalej.stop_on_first_error- import zatrzymuje się po pierwszym błędzie.all_or_nothing- jeżeli którykolwiek wiersz ma błąd, dane nie są zapisywane.
Rekomendowanym wariantem dla dużych importów jest skip_invalid_rows, ponieważ pozwala przetworzyć poprawne dane i otrzymać raport problemów dla pozostałych wierszy.
Raporty i historia importów
Po imporcie moduł generuje raport CSV zawierający:
- numer wiersza,
- identyfikator kategorii,
- status,
- komunikat,
- listę zmienionych atrybutów.
Historia importów jest dostępna w panelu administracyjnym. Administrator może sprawdzić:
- datę importu,
- użytkownika admina,
- store view,
- tryb importu,
- nazwę pliku,
- liczbę wierszy,
- liczbę sukcesów,
- liczbę błędów,
- informację, czy import był wykonany jako
dry-run, - pobrać raport importu.
Bezpieczeństwo
Moduł korzysta z ACL Magento i dodaje osobne uprawnienia dla eksportu, importu oraz historii importów.
Import jest zabezpieczony przez:
- walidację nagłówków,
- walidację kodów atrybutów,
- walidację store view,
- walidację wymaganych kolumn,
- walidację typów wartości,
- walidację labeli opcji,
- walidację plików obrazków,
- raportowanie błędów per wiersz.
Moduł nie usuwa kategorii i nie importuje produktów przypisanych do kategorii.
Typowe zastosowania
Tłumaczenia kategorii
Eksportujesz kategorie z bazowego store view, uzupełniasz tłumaczenia w CSV, zmieniasz store_view_code na kod docelowego store view i importujesz dane w trybie update.
Masowa aktualizacja SEO
Eksportujesz atrybuty meta_title, meta_description, url_key, edytujesz je w CSV i importujesz tylko wybrane kolumny.
Tworzenie nowej struktury kategorii
Przygotowujesz plik CSV z category_path, parent_path, name i innymi wymaganymi atrybutami, a następnie importujesz go w trybie insert.
Aktualizacja własnych atrybutów kategorii
Jeżeli sklep ma własne atrybuty kategorii, moduł pobiera je dynamicznie z EAV i pozwala wybrać je przy eksporcie oraz imporcie.
Lokalizacja w panelu Magento
Po instalacji moduł jest dostępny w:
System > Data Transfer > Export/Import Categories
Dostępne widoki:
Export Categories,Import Categories,Import History.
Instrukcja instalacji i konfiguracji modułu Kowal_ExportImportCategories
Ten dokument opisuje instalację, konfigurację oraz korzystanie z modułu Kowal_ExportImportCategories dla Magento 2. Instrukcja uwzględnia informacje z pliku README.md oraz funkcje zaimplementowane w module.
Wymagania
- Magento 2.
- PHP zgodny z instalacją Magento, rekomendowane PHP
8.1lub nowsze. - Dostęp do CLI Magento.
- Dostęp do Composer.
- Uprawnienia administratora Magento.
- Dostęp do repozytorium modułu.
- Dla importu obrazków: możliwość umieszczania plików w katalogu
pub/media/import/categories.
Instalacja przez Composer
Moduł jest dostępny przez repozytorium Composer.
1. Dodaj repozytorium Composer
composer config repositories.export.import.categories vcs https://github.com/kowalco/export-import-categories
2. Dodaj token dostępu do prywatnego repozytorium GitHub
Jeżeli repozytorium jest prywatne, skonfiguruj token GitHub:
composer config --global --auth github-oauth.github.com <YOUR_TOKEN>
Zastąp <YOUR_TOKEN> własnym tokenem dostępu.
3. Zainstaluj moduł
composer require kowal/module-export-import-categories
4. Włącz moduł w Magento
bin/magento module:enable Kowal_ExportImportCategories
5. Uruchom aktualizację Magento
bin/magento setup:upgrade
6. Wyczyść cache
bin/magento cache:flush
7. Opcjonalnie uruchom kompilację DI
Na środowiskach produkcyjnych albo w trybie production:
bin/magento setup:di:compile
8. Opcjonalnie wdróż statyczne zasoby
Jeżeli środowisko tego wymaga:
bin/magento setup:static-content:deploy
bin/magento cache:flush
Instalacja ręczna w app/code
Alternatywnie moduł można umieścić ręcznie w katalogu:
app/code/Kowal/ExportImportCategories
Po skopiowaniu plików uruchom:
bin/magento module:enable Kowal_ExportImportCategories
bin/magento setup:upgrade
bin/magento cache:flush
W trybie production uruchom również:
bin/magento setup:di:compile
Sprawdzenie instalacji
Po instalacji sprawdź, czy moduł jest aktywny:
bin/magento module:status Kowal_ExportImportCategories
Moduł powinien znajdować się na liście aktywnych modułów.
W panelu administracyjnym przejdź do:
System > Data Transfer > Export/Import Categories
Powinny być widoczne trzy pozycje:
Export Categories,Import Categories,Import History.
Uprawnienia ACL
Moduł dodaje osobne uprawnienia administracyjne:
- dostęp do głównej sekcji
Export/Import Categories, - eksport kategorii,
- import kategorii,
- historia importów.
Jeżeli użytkownik admina nie widzi menu modułu, sprawdź rolę użytkownika w:
System > Permissions > User Roles
Następnie nadaj odpowiednie uprawnienia dla zasobów modułu.
Lokalizacja modułu w panelu
Moduł jest dostępny pod:
System > Data Transfer > Export/Import Categories
Widoki:
Export Categories- eksport kategorii do CSV.Import Categories- import kategorii z CSV.Import History- historia importów i raporty.
Konfiguracja eksportu
Widok eksportu pozwala wygenerować plik CSV z kategoriami.
Pola eksportu
Store View
Wybiera store view, z którego zostaną odczytane wartości atrybutów kategorii.
Jeżeli wybierzesz store view językowy, eksport może zawierać wartości specyficzne dla tego store view albo wartości odziedziczone z domyślnego scope, zależnie od trybu wartości.
Start Category ID
Opcjonalne pole pozwalające ograniczyć eksport do wybranej kategorii i jej poddrzewa.
Jeżeli pole zostanie puste, moduł eksportuje kategorie od root category wybranego store view.
Store View Value Mode
Określa, jak eksportować wartości zależne od store view.
Dostępne warianty:
resolved_value,store_override_only.
resolved_value eksportuje wartość widoczną w wybranym store view po uwzględnieniu fallbacku Magento.
store_override_only eksportuje tylko wartość nadpisaną dla wybranego store view. Jeżeli wartość jest dziedziczona z default scope, komórka CSV będzie pusta.
CSV Delimiter
Separator CSV. Domyślnie:
,
Można użyć innego separatora, jeżeli plik będzie edytowany w narzędziu wymagającym np. średnika.
Attributes
Lista atrybutów kategorii dostępnych w Magento.
Moduł pobiera atrybuty dynamicznie z EAV, dlatego na liście mogą pojawić się również własne atrybuty kategorii dodane w projekcie.
Kolumny systemowe są dodawane automatycznie i nie trzeba ich wybierać.
Kolumny systemowe w eksporcie
Eksport zawsze powinien zawierać kolumny systemowe:
store_view_code,entity_id,parent_entity_id,category_path,parent_path,level,position,attribute_set_id.
Kolumny te służą do identyfikacji kategorii, walidacji store view oraz obsługi struktury drzewa.
Konfiguracja importu
Widok importu pozwala wczytać CSV i zapisać dane kategorii.
Pola importu
Store View
Wybiera store view, do którego zostaną zapisane wartości.
To pole decyduje o numerycznym store_id używanym przy zapisie w tabelach Magento.
Kolumna store_view_code z CSV nie jest bezpośrednio zamieniana na store_id. Jest używana do walidacji, czy plik pasuje do wybranego store view.
Przykład:
- w formularzu wybierasz store view o
store_id = 1, - w CSV musi być
store_view_codeodpowiadający temu store view, - moduł zapisuje dane z użyciem
store_id = 1.
Import Mode
Dostępne tryby:
update,insert.
update aktualizuje istniejące kategorie.
insert tworzy nowe kategorie.
CSV File
Plik CSV z nagłówkami w pierwszym wierszu.
Plik powinien być zakodowany w UTF-8.
CSV Delimiter
Separator CSV. Musi odpowiadać separatorowi użytemu w pliku.
Unknown Columns Policy
Określa zachowanie dla kolumn, które nie są ani kolumnami systemowymi, ani znanymi atrybutami kategorii.
Dostępne warianty:
error- import zgłasza błąd dla nieznanych kolumn.ignore- nieznane kolumny są ignorowane.
Rekomendowany wariant:
error
Empty Values Policy
Określa, jak moduł interpretuje puste komórki CSV.
Dostępne warianty:
skip_empty,clear_value,use_default.
skip_empty oznacza, że pusta komórka nie zmieni obecnej wartości.
clear_value oznacza, że pusta komórka wyczyści wartość atrybutu.
use_default oznacza, że pusta komórka usunie nadpisanie store view i pozwoli Magento użyć wartości domyślnej.
Rekomendowany wariant dla importu aktualizacyjnego:
skip_empty
URL Key Strategy
Określa sposób obsługi atrybutu url_key.
Dostępne warianty:
use_csv_value,generate_from_name,keep_existing,magento_default.
use_csv_value zapisuje url_key z CSV.
generate_from_name generuje url_key na podstawie wartości name.
keep_existing zachowuje istniejący url_key w trybie update.
magento_default zostawia obsługę URL standardowemu mechanizmowi Magento.
Create permanent redirect for URL key changes
Opcja określa, czy Magento ma utworzyć permanent redirect przy zmianie url_key.
Warto ją włączyć, gdy zmiana URL kategorii ma zachować przekierowania SEO ze starych adresów.
Images Base Directory
Katalog bazowy dla importu obrazków kategorii względem pub/media.
Domyślnie:
import/categories
Pełna ścieżka w Magento:
pub/media/import/categories
Jeżeli w CSV podasz:
gear/bags.jpg
moduł będzie szukał pliku:
pub/media/import/categories/gear/bags.jpg
Error Policy
Określa zachowanie importu przy błędach.
Dostępne warianty:
skip_invalid_rows,stop_on_first_error,all_or_nothing.
skip_invalid_rows pomija błędne wiersze i kontynuuje import.
stop_on_first_error zatrzymuje import po pierwszym błędzie.
all_or_nothing wymaga poprawności całego pliku; jeżeli wystąpi błąd, import nie powinien zapisać danych.
Rekomendowany wariant dla dużych plików:
skip_invalid_rows
Batch Size
Liczba wierszy przetwarzanych w jednej partii.
Domyślnie:
100
Niższa wartość ogranicza zużycie pamięci. Wyższa wartość może przyspieszyć import na mocniejszych środowiskach.
Attributes to Import
Lista atrybutów, które mają zostać zaimportowane.
Import aktualizuje tylko wybrane atrybuty. Jeżeli kolumna istnieje w CSV, ale atrybut nie zostanie zaznaczony w formularzu, moduł nie powinien go zapisać.
Dry Run
Tryb walidacji bez zapisu danych.
Rekomendowane jest uruchomienie dry-run przed właściwym importem, szczególnie dla dużych plików albo zmian SEO.
Tryb import/update
Tryb update służy do aktualizacji istniejących kategorii.
Wymagane dane
CSV musi zawierać:
store_view_code,entity_idalbocategory_path,- co najmniej jedną kolumnę wybranego atrybutu.
Jak działa identyfikacja kategorii
Moduł próbuje znaleźć kategorię po:
entity_id,category_path, jeżelientity_idjest puste.
entity_id jest najlepszym identyfikatorem, gdy import odbywa się na tym samym środowisku Magento.
category_path jest bardziej przenośny między środowiskami, ale musi być jednoznaczny.
Przykład aktualizacji tłumaczeń
store_view_code,entity_id,category_path,name,url_key,meta_title,meta_description
pl,13,Default Category/Gear/Bags,Torby,torby,Torby,Torby i akcesoria
pl,14,Default Category/Gear/Gloves,Rekawiczki,rekawiczki,Rekawiczki,Rekawiczki sportowe
Ustawienia importu:
Store View: polski store view,Import Mode:update,Attributes to Import:name,url_key,meta_title,meta_description,URL Key Strategy:use_csv_value,Empty Values Policy:skip_empty,- najpierw
Dry Run, potem właściwy import.
Tryb import/insert
Tryb insert służy do tworzenia nowych kategorii.
Wymagane dane
CSV musi zawierać:
store_view_code,category_path,parent_entity_idalboparent_path,name,- co najmniej jedną kolumnę wybranego atrybutu.
entity_id nie jest wymagane, ponieważ Magento nadaje je automatycznie.
Przykład tworzenia kategorii
store_view_code,parent_entity_id,parent_path,category_path,name,url_key,is_active,include_in_menu
default,12,Default Category/Gear,Default Category/Gear/Helmets,Helmets,helmets,1,1
default,12,Default Category/Gear,Default Category/Gear/Gloves,Gloves,gloves,1,1
Ustawienia importu:
Store View: default store view,Import Mode:insert,Attributes to Import:name,url_key,is_active,include_in_menu,URL Key Strategy:use_csv_valuealbogenerate_from_name,Error Policy:skip_invalid_rows,- najpierw
Dry Run.
Praca z select i multiselect
Moduł obsługuje select i multiselect po labelach opcji.
Nie trzeba podawać technicznych ID opcji.
Przykład:
store_view_code,entity_id,category_path,display_mode,available_sort_by,default_sort_by
default,13,Default Category/Gear/Bags,Products only,Position|Product Name|Price,Position
Dla multiselect wiele wartości rozdziela się separatorem:
|
Jeżeli label nie istnieje albo jest niejednoznaczny, import zgłosi błąd.
Import obrazków kategorii
Przed importem obrazków umieść pliki w katalogu:
pub/media/import/categories
Przykład CSV:
store_view_code,entity_id,category_path,image,thumbnail
default,13,Default Category/Gear/Bags,gear/bags.jpg,gear/bags-thumb.jpg
Ustawienia importu:
Images Base Directory:import/categories,- zaznaczone atrybuty:
image,thumbnail.
Moduł sprawdzi, czy pliki istnieją i mają obsługiwane rozszerzenia.
Raport importu
Po imporcie moduł generuje raport CSV.
Raport zawiera:
- numer wiersza,
- identyfikator kategorii,
- status,
- komunikat,
- zmienione atrybuty.
Statusy mogą obejmować:
success,error,skipped_no_change,skipped_existing.
Historia importów
Historia importów jest dostępna w:
System > Data Transfer > Export/Import Categories > Import History
Historia zawiera:
- datę importu,
- użytkownika admina,
- store view,
- tryb importu,
- nazwę pliku,
- liczbę wierszy,
- liczbę sukcesów,
- liczbę błędów,
- informację o
dry-run, - link do pobrania raportu.
Zalecany proces pracy
Bezpieczny import aktualizacyjny
- Wykonaj eksport aktualnych kategorii.
- Zachowaj oryginalny plik jako backup.
- Przygotuj zmiany w kopii CSV.
- Upewnij się, że
store_view_codeodpowiada docelowemu store view. - Wybierz import
update. - Wybierz tylko atrybuty, które chcesz zmienić.
- Ustaw
Empty Values Policynaskip_empty. - Uruchom
Dry Run. - Sprawdź raport.
- Uruchom właściwy import.
- Wyczyść cache, jeżeli zmiany nie są widoczne od razu.
Bezpieczny import nowych kategorii
- Przygotuj CSV z
category_path,parent_pathalboparent_entity_id. - Upewnij się, że rodzice istnieją albo występują wcześniej w pliku.
- Wybierz import
insert. - Zaznacz minimum
nameoraz inne wymagane atrybuty. - Uruchom
Dry Run. - Popraw błędy z raportu.
- Uruchom właściwy import.
Cache i indeksy
Po imporcie zmian w kategoriach warto odświeżyć cache Magento:
bin/magento cache:clean
Jeżeli sklep wymaga ręcznej reindeksacji po większych zmianach katalogu:
bin/magento indexer:reindex
W typowych instalacjach Magento zapis kategorii przez standardowe mechanizmy Magento powinien uruchamiać właściwe procesy powiązane z modelem kategorii, ale po dużych importach zalecana jest kontrola cache i indeksów.
Najczęstsze problemy
Import zgłasza niezgodny store_view_code
Sprawdź, czy kod w kolumnie store_view_code odpowiada store view wybranemu w formularzu importu.
Import nie zmienia wartości
Sprawdź:
- czy atrybut został zaznaczony w
Attributes to Import, - czy komórka CSV nie jest pusta,
- czy
Empty Values Policynie jest ustawione naskip_empty, - czy import nie był uruchomiony jako
Dry Run.
Select albo multiselect zgłasza błąd
Sprawdź, czy label opcji w CSV dokładnie odpowiada labelowi opcji w Magento dla wybranego store view.
Obrazek nie importuje się
Sprawdź:
- czy plik istnieje w
pub/media/import/categories, - czy ścieżka w CSV jest poprawna,
- czy rozszerzenie pliku jest obsługiwane,
- czy atrybut obrazka został zaznaczony do importu.
Insert zgłasza brak rodzica
Sprawdź parent_entity_id albo parent_path. Rodzic musi istnieć w Magento albo znajdować się wcześniej w pliku importu.
Odinstalowanie modułu
Jeżeli moduł był instalowany przez Composer:
composer remove kowal/module-export-import-categories
bin/magento setup:upgrade
bin/magento cache:flush
Przed odinstalowaniem upewnij się, czy historia importów może zostać usunięta. Moduł tworzy tabelę:
kowal_export_import_categories_history
Klient
tandembaits.com to sklep internetowy działający w branży wędkarskiej. Oferta sklepu jest oparta na specjalistycznym asortymencie, w którym poprawne nazwy kategorii, precyzyjne opisy oraz dobrze przygotowane adresy URL mają bezpośrednie znaczenie dla użyteczności sklepu, SEO i komunikacji z klientami w różnych krajach.
Wyzwanie
W ramach rozbudowy sklepu o nowe wersje językowe klient potrzebował skutecznego sposobu zarządzania kategoriami w Magento 2.
Największym problemem była specyfika branży wędkarskiej. Nazwy kategorii nie są prostymi, uniwersalnymi etykietami. Często odnoszą się do konkretnych technik łowienia, typów przynęt, akcesoriów, serii produktowych albo pojęć używanych tylko przez zaawansowanych wędkarzy.
Przy 10 wersjach językowych ręczne zarządzanie kategoriami w panelu Magento było zbyt czasochłonne i podatne na błędy. Klient potrzebował mieć pełną kontrolę nad:
- nazwami kategorii,
- adresami URL kategorii,
- opisami kategorii,
- meta danymi SEO,
- wartościami specyficznymi dla każdego store view,
- spójnością struktury kategorii między wersjami językowymi.
Skala pracy obejmowała kilkadziesiąt kategorii w 10 wersjach językowych. Oznaczało to setki wartości tekstowych do przygotowania, sprawdzenia, poprawienia i zaimportowania.
Problem biznesowy
Standardowa praca w panelu Magento wymagałaby edycji każdej kategorii osobno dla każdego store view. Przy kilkudziesięciu kategoriach i 10 językach taki proces byłby powolny i trudny do kontrolowania.
Najważniejsze ryzyka przy ręcznej pracy:
- pomyłki w wyborze store view,
- niespójne tłumaczenia nazw kategorii,
- przypadkowe nadpisanie wartości domyślnych,
- błędne albo zduplikowane adresy URL,
- brak wygodnego przeglądu wszystkich kategorii w jednym miejscu,
- trudność w przekazaniu danych tłumaczom lub osobom odpowiedzialnym za SEO,
- brak prostego sposobu walidacji zmian przed zapisem.
Klient potrzebował procesu, który pozwoli przygotować dane zbiorczo, sprawdzić je przed importem i bezpiecznie zapisać tylko wybrane atrybuty dla konkretnego store view.
Rozwiązanie
Dla tego scenariusza zastosowano moduł Export Import Categories dla Magento 2.
Moduł umożliwił eksport kategorii do pliku CSV, przygotowanie danych językowych poza panelem Magento oraz ponowny import wartości do wybranego store view.
Proces został oparty na trybie update, ponieważ struktura kategorii już istniała w sklepie. Celem nie było tworzenie nowego drzewa kategorii, ale uzupełnienie i poprawienie danych dla kolejnych wersji językowych.
Zakres użycia modułu
W projekcie kluczowe były następujące funkcje modułu:
- eksport kategorii z bazowego store view,
- zachowanie
entity_idjako stabilnego identyfikatora kategorii, - zmiana
store_view_codena kod docelowej wersji językowej, - import w trybie
update, - wybór konkretnych atrybutów do importu,
- zarządzanie nazwami kategorii,
- zarządzanie
url_key, - zarządzanie opisami kategorii,
- kontrola pustych wartości,
- walidacja pliku przed właściwym importem,
- raport importu.
Proces wdrożony w projekcie
1. Eksport kategorii
Najpierw wykonano eksport kategorii z bazowego store view. Plik CSV zawierał kolumny systemowe oraz wybrane atrybuty wymagane do przygotowania wersji językowych.
Najważniejsze kolumny systemowe:
store_view_code,entity_id,category_path,parent_path.
Najważniejsze atrybuty robocze:
name,url_key,description,meta_title,meta_description.
2. Przygotowanie danych językowych
Na podstawie wyeksportowanego CSV przygotowano osobne dane dla poszczególnych wersji językowych.
Dzięki temu osoby odpowiedzialne za treści mogły pracować w arkuszu, widząc wiele kategorii jednocześnie. Było to szczególnie ważne w branży wędkarskiej, gdzie nazwy kategorii muszą być zgodne z lokalną terminologią i realnym sposobem wyszukiwania produktów przez klientów.
3. Zachowanie identyfikatorów kategorii
W plikach importowych zachowano entity_id, aby moduł mógł jednoznacznie dopasować wiersze CSV do istniejących kategorii Magento.
To pozwoliło importować tłumaczenia bez ryzyka utworzenia duplikatów kategorii.
4. Zmiana store view
Dla każdej wersji językowej ustawiano odpowiedni store_view_code w CSV oraz wybierano ten sam store view w formularzu importu.
Moduł walidował zgodność tych danych. Dzięki temu ograniczono ryzyko przypadkowego importu tłumaczeń do niewłaściwego widoku sklepu.
5. Import w trybie update
Import wykonywano w trybie update, wybierając tylko te atrybuty, które miały zostać zmienione dla danej wersji językowej.
Dzięki temu moduł nie ingerował w pozostałe dane kategorii.
6. Walidacja i dry-run
Przed właściwym importem można było uruchomić walidację bez zapisu danych.
Tryb dry-run pozwalał sprawdzić:
- czy plik CSV ma poprawne kolumny,
- czy
store_view_codepasuje do wybranego store view, - czy
entity_idwskazuje istniejące kategorie, - czy wybrane atrybuty istnieją w Magento,
- czy import nie zawiera błędów blokujących zapis.
7. Raport po imporcie
Po imporcie moduł generował raport, który pozwalał sprawdzić status poszczególnych wierszy.
Raport był szczególnie przydatny przy pracy na wielu językach, ponieważ pozwalał szybko wykryć ewentualne błędy w konkretnym pliku albo konkretnej kategorii.
Dlaczego CSV było właściwym formatem
CSV był praktycznym formatem dla tego projektu, ponieważ:
- można go łatwo edytować w arkuszu kalkulacyjnym,
- można przekazać go tłumaczom,
- można porównać wartości między językami,
- można przygotować wiele wersji językowych na bazie jednego eksportu,
- można pracować na konkretnych kolumnach bez ręcznego klikania w panelu Magento,
- można zachować kontrolę nad
entity_idistore_view_code.
Efekt
Moduł umożliwił klientowi zarządzanie kategoriami w 10 wersjach językowych w sposób uporządkowany i powtarzalny.
Zamiast ręcznej edycji każdej kategorii w panelu Magento, zespół mógł pracować na plikach CSV, przygotowywać tłumaczenia zbiorczo i importować tylko wybrane atrybuty dla konkretnego store view.
Najważniejsze korzyści:
- szybsze przygotowanie nowych wersji językowych,
- większa kontrola nad nazwami kategorii,
- pełna kontrola nad adresami URL,
- łatwiejsze zarządzanie opisami kategorii,
- możliwość pracy poza panelem Magento,
- mniejsze ryzyko błędów przy wielu store view,
- walidacja danych przed zapisem,
- raportowanie wyników importu.
Znaczenie dla SEO
W projekcie szczególne znaczenie miała możliwość kontrolowania url_key, nazw kategorii oraz opisów.
Dla sklepu działającego w wielu językach automatyczne tłumaczenie lub przypadkowe kopiowanie nazw kategorii nie jest wystarczające. Każdy rynek może używać innych określeń branżowych, a w wędkarstwie różnice terminologiczne są szczególnie istotne.
Moduł pozwolił przygotować wartości SEO świadomie dla każdej wersji językowej:
- lokalne nazwy kategorii,
- lokalne adresy URL,
- opisy dopasowane do języka,
- meta tytuły,
- meta opisy.
Podsumowanie
Rozbudowa tandembaits.com o 10 wersji językowych wymagała narzędzia, które pozwoli sprawnie zarządzać kategoriami Magento 2 na poziomie store view.
Export Import Categories rozwiązał ten problem, przenosząc pracę z ręcznej edycji w panelu Magento do kontrolowanego procesu opartego o CSV, walidację i import wybranych atrybutów.
W efekcie klient otrzymał możliwość wygodnego zarządzania specjalistycznymi nazwami kategorii, adresami URL i opisami dla wielu języków bez ryzyka przypadkowego nadpisania całej struktury kategorii.








