-

Jak zaimportować dane o produktach czy blog postach do Drupala z plików CSV?

W tym artykule pokażę Ci, jak zaimportować dane do Drupala z plików CSV, ponieważ jest to często etap tworzenia nowej strony, a pokazane tutaj rozwiązania przydadzą się przy przenoszeniu danych ze starego systemu do nowego. Zaprezentuję również, jak poradzić sobie z taką sytuacją, wykorzystując moduł Feeds oraz jego rozszerzenie Feeds Tamper i  przeprowadzę Cię przez import danych na przykładzie trzech typów danych: produktów, użytkowników i postów na blogu.

Zobaczysz, jak w prosty sposób można przenieść treści do Drupala, mapując odpowiednio dane, a także jak manipulować danymi za pomocą dostępnych modułów, tak aby łatwo dostosować je do swoich potrzeb. Zachęcam do przeczytania artykułu lub obejrzenia odcinka z cyklu Nowoczesny Drupal, w którym po kolei pokazuję wszystkie czynności.

Moduł Feeds – co to jest i jak działa?

Moduł Feeds pozwala importować dane z różnych formatów, takich jak CSV, JSON, XML i RSS. Dzięki niemu możemy łatwo przenosić duże ilości danych do Drupala, co jest szczególnie przydatne podczas migracji ze starszych systemów lub przy integracji Drupala z zewnętrznymi źródłami danych.

W tym wpisie użyjemy także modułu Feeds Tamper, który rozszerza możliwości Feeds, umożliwiając manipulowanie danymi, które będziemy importować do Drupala. Możemy np. dzielić pola, usuwać zbędne znaki, a także modyfikować struktury danych, co zapewnia  pełną kontrolę nad tym, jak dane trafią do systemu. Feeds Tamper to kluczowe narzędzie, kiedy dane są niejednolite lub wymagają dodatkowej obróbki, zanim zostaną zaimportowane.

Te dwa moduły — Feeds i Feeds Tamper — razem tworzą bardzo elastyczne i potężne rozwiązanie, które ułatwia pracę z danymi w Drupalu.

Moduł Feeds umożliwia importowanie danych do Drupala z różnych formatów, np. z pliku CSV czy JSON.


Moduły te zostały już zainstalowane w moim systemie, więc przejdźmy do pokazania krok po kroku, jak wygląda proces importu i jak z nich korzystać.

Importowanie produktów z pliku CSV

Mamy nasz przykładowy plik CSV, który zawiera kolumny z następującymi danymi:

  • Tytuł – nazwa produktu,
  • Kategoria – kategoria produktu,
  • Opis – opis produktu,
  • Tagi – tagi związane z produktem,
  • Zdjęcia – ID zdjęć, które wcześniej zaimportowaliśmy do mediów Drupal
Przykład prostego pliku CSV z przygotowanymi produktami do importu do systemu Drupal.


Przejdźmy teraz do Drupala. Będę pokazywał przykłady na dystrybucji Droopler (posiada ona już takie rodzaje zawartości jak “Produkt”, który ma tytuł, zdjęcie, zawartość, kategorie i tagi).

Jeśli mamy zainstalowany moduł Feeds, to w menu w strukturze mamy Feeds Type i dodajemy sobie nowy Feeds.

Konfiguracja modułu Feeds

  1. Wchodzimy w zakładkę “Struktura” i wybieramy “Feeds Type”.
  2. Dodajemy nowy typ “Feeds” i nazywamy go “Produkty”.
  3. Ustawiamy Fetcher, gdzie wybieramy “Źródło danych” – “CSV” i określamy typ danych, które chcemy importować, czyli “Węzeł” (Node) i rodzaj zawartości “Produkt”.
  4. Konfigurujemy Parseraby dane były oddzielane przecinkiem.
  5. Ustawiamy Processor, który będzie aktualizował istniejące dane przy kolejnym imporcie pliku.
Dodawanie rodzaju kanału w trakcie konfiguracji modułu Feeds w Drupalu.


Zapisujemy zmiany i przechodzimy do mapowania.

Mapowanie pól dla produktów

Kluczowym elementem importu jest mapowanie pól z pliku CSV na odpowiednie pola w Drupalu. Proces ten polega na przypisaniu danych z kolumn CSV do konkretnych pól w typie zawartości, jak np. tytuł, kategoria, treść, tagi czy zdjęcia.

Mapowanie pól dla produktów importowanych z pliku CSV do systemu Drupal to prosta czynność.


Mamy tutaj domyślnie listę pól, którą moduł nam dostarcza, z danego rodzaju zawartości, czyli dla produktu. Wybierzmy “Tytuł”.

W mapowaniu pól, aby importować dane o produktach do Drupala należy uwzględnić pole z tytułem.


Dalej wybieramy źródło, czyli kolumnę z CSV, która ma nazwę "tytuł”. Zaznaczamy, że jest ona unikalna, żeby po niej rozpoznawać i aktualizować później produkty (w przyszłości możemy to zmienić na ID lub product ID).

Jednym z elementów mapowania pól w imporcie produktów jest wybór źródła z pliku CSV.


Następnie wybieramy pole “Kategoria” i przypisujemy kolumnę z nazwą kategorii. Możemy od razu użyć pola z referencją. Tutaj pokażę na przykładzie “nazwy”.

Formularz w systemie Drupal widoczny w trakcie mapowania pól zgodnie z plikiem CSV.


Dalej możemy zaznaczyć opcję Autocreate, aby Drupal automatycznie tworzył nowe kategorie, jeśli nie istnieją w systemie.

Kolejne kroki to ustawienie tagów, mediów i opisów:

  1. Tagi: Przypisujemy pole “Tagi” do kolumny z tagami w pliku CSV.

Jeśli tagi są oddzielone średnikiem, możemy użyć modułu Feeds Tamper, aby podzielić je na osobne wpisy.

  1. Zdjęcia: Przypisujemy pole “Zdjęcia” do odpowiednich ID mediów w systemie Drupal.

Ważne jest, aby wcześniej zaimportować zdjęcia do systemu, ponieważ Feeds przypisuje zdjęcia na podstawie ich ID.

  1. Opis: Przypisujemy pole “Opis” do odpowiedniej kolumny zawierającej treść opisu produktu.
Ustawianie tagów, mediów i opisów w systemie Drupal, aby były zgodne z danymi w pliku CSV.


Importowanie danych

Po zakończeniu mapowania pól możemy przejść do importu danych.

  1. Przechodzimy do zakładki “Zawartość” -> “Feeds”.
  2. Klikamy “Dodaj nowy kanał” i wybieramy typ Feeds „Produkty”.
  3. Wybieramy plik CSV z danymi produktów i klikamy “Importuj”.
  4. Po zakończeniu procesu Drupal poinformuje nas o liczbie importowanych produktów. W tym przykładzie otrzymaliśmy informację, że zostały zaimportowane dwa produkty.
Komunikat w Drupalu informujący o poprawnym utworzeniu dwóch produktów z importu danych z CSV.


Jeżeli tagi lub inne dane zostały zaimportowane niepoprawnie, możemy użyć modułu Feeds Tamper do manipulowania danymi – np. do rozdzielania tagów na podstawie separatora.

Feeds Tamper - kiedy warto go użyć?

W niektórych przypadkach, importowane dane wymagają dodatkowej obróbki, aby poprawnie zaimportować je do Drupala. Właśnie tutaj z pomocą przychodzi moduł Feeds Tamper, który pozwala na manipulację danymi przed ich zaimportowaniem.

Aby użyć Feeds Tamper, przechodzimy do zakładki “Struktura”, następnie wybieramy nasz typ Feeds, na przykład “Produkty”. W tym miejscu możemy dodać różne opcje manipulowania danymi dla poszczególnych pól. Feeds Tamper oferuje wiele narzędzi, takich jak użycie wyrażeń regularnych (regex) czy funkcji explode, która pozwala rozdzielać dane na podstawie określonego separatora.

Przykładowo, dla pola “Tagi”, które w pliku CSV są rozdzielone średnikiem, możemy dodać operację explode, aby rozdzielić tagi na osobne wpisy. Dla pola “Zdjęcia”, gdzie zdjęcia są rozdzielone przecinkiem, ustawiamy odpowiednie manipulowanie danymi, aby Drupal mógł prawidłowo rozpoznać każde zdjęcie. Po zastosowaniu tych operacji wracamy do procesu importu i kontynuujemy go, mając pewność, że dane zostaną poprawnie zaimportowane i przypisane do odpowiednich pól.

Manipulowanie danymi w ten sposób jest niezwykle przydatne, gdy dane są złożone lub wymagają przekształcenia, aby pasowały do struktury Drupala.

Import użytkowników z pliku CSV

Przejdźmy teraz do importu użytkowników. Nasz plik CSV zawiera dane takie jak:

  • E-mail – adres e-mail użytkownika,
  • Nazwa użytkownika – login użytkownika,
  • Rola – rola przypisana użytkownikowi,
  • Status – czy użytkownik jest aktywny, czy nie w CMS-ie.

Idziemy jeszcze raz do zakładki “Struktura” - > “Feeds Type” i dodajemy nowy typ importu o nazwie „Użytkownicy”. Wybieramy “Źródło danych – CSV” i typ danych “Użytkownik”. W ustawieniach procesora wybieramy opcję “Aktualizuj istniejących użytkowników”, aby unikać duplikatów.

Etap importowania użytkowników z pliku CSV do Drupala przy użyciu modułu Feeds.


Będziemy aktualizować istniejących użytkowników, więc przechodzimy do mapowania.

Mapowanie pól dla użytkowników

W przypadku importu użytkowników mamy mniej pól do zmapowania:

  1. E-mail: przypisujemy kolumnę e-mail do pola “E-mail” w Drupalu. To pole musi być unikalne, ponieważ każdy użytkownik musi mieć unikalny adres e-mail.
  2. Nazwa użytkownika: przypisujemy nazwę użytkownika do odpowiedniej kolumny.
  3. Rola: przypisujemy rolę do kolumny z rolą użytkownika. Możemy wybrać, czy chcemy przypisywać rolę na podstawie etykiety (label) czy ID.
  4. Status: przypisujemy status, który określa, czy użytkownik jest aktywny, czy zablokowany.
Proces mapowania pól dla użytkowników podczas importu z pliku CSV do systemu Drupal.


W tym momencie mamy dwa “Feed Types”: “produkt” i “użytkownicy”. Zajmiemy się importem użytkowników.

Importowanie użytkowników

Przechodzimy do zakładki ”Zawartość” -> “Feeds”. Dodajemy nowy kanał dla użytkowników, wybieramy plik CSV i klikamy “Importuj”.

Dodawanie nowego kanału dla użytkowników w Drupalu z użyciem modułu Feeds na potrzeby importu.


Po zakończeniu procesu sprawdzamy, czy użytkownicy zostali poprawnie dodani z odpowiednimi rolami i statusami.

Weryfikacja, czy dane o użytkownikach zostały poprawnie dodane do systemu Drupal z CSV.

Jak widzisz, import użytkowników do systemu CMS jest prosty i można go zrobić szybko.

Import blog postów z pliku CSV

Ostatnim przykładem jest importowanie treści bloga. Podobnie jak w przypadku produktów i użytkowników, używamy pliku CSV zawierającego pola:

  • Tytuł – przypisujemy tytuł bloga,
  • Teaser – wprowadzamy skrót treści,
  • Treść – przypisujemy treść do odpowiedniego paragrafu w Drupalu (full HTML),
  • Zdjęcia – mapujemy zdjęcia na podstawie ID z CSV,
  • Kategoria – dodajemy kategorię na podstawie nazwy, a system automatycznie utworzy nowe kategorie, jeśli nie istnieją.
Importowanie treści artykułu blogowego do Drupala z pliku CSV zawierającego odpowiednie kolumny.


Konfiguracja modułu Feeds na potrzeby blog postów

W zakładce “Struktura” -> “Feeds Type” dodajemy nowy typ importu, który nazwiemy „Blog posty”.

Konfiguracja modułu Feeds w Drupalu na potrzeby importowania artykułów blogowych z pliku CSV.


Jest to import z pliku CSV do węzła, który będzie wpadał do blog postów.

Ekran z ustawieniami Drupala, obrazujący import artykułów z pliku CSV do odpowiedniego węzła.


Podobnie jak w przypadku produktów i użytkowników przypisujemy sobie te pola, następnie ustawiamy dane, wybieramy kategorię bloga. Dalej robimy referencję po nazwie i żeby tworzyły się nowe kategorie.

Zapisujemy. Idziemy utworzyć nowy Feed, nowy kanał. Mamy już blog posty.

Na sam koniec wybieramy sobie plik i go importujemy. Po zakończeniu importu widzimy, że blog posty są prawidłowo zaimportowane, z poprawnie przypisanymi kategoriami oraz zdjęciami.

Komunikat w Drupalu informujący o poprawnym zaimportowaniu trzech artykułów blogowych z CSV.


Wszystkie pozycje wyświetlają się poprawnie, możemy również zobaczyć na listingu, że wszystko ładnie wygląda.

Wygląd przygotowanej strony internetowej w Drupalu z zaimportowanymi artykułami z pliku CSV.


Import danych do Drupala - podsumowanie

Moduł Feeds oraz rozszerzenie Feeds Tamper to wszechstronne narzędzia, które ułatwiają zarządzanie dużymi ilościami danych. Dzięki nim możemy zautomatyzować proces migracji i importu treści, co oszczędza mnóstwo czasu i pracy. Bez względu na to, czy importujemy produkty, użytkowników, czy posty na blogu, możemy dostosować proces do swoich potrzeb, mapując dane z pliku CSV do odpowiednich pól w Drupalu.

Kluczowe kroki w procesie importu:

  • Konfiguracja modułu Feeds: określenie źródła danych, typu treści oraz ustawienie parsera i processora, aby dane były przetwarzane w sposób zgodny z wymaganiami.
  • Mapowanie pól: przypisanie kolumn z pliku CSV do odpowiednich pól w Drupalu, co pozwala na dokładne odwzorowanie struktury danych.
  • Manipulowanie danymi za pomocą Feeds Tamper: możliwość przekształcenia danych przed importem (np. rozdzielanie tagów lub obsługa multimediów), co jest niezwykle przydatne w przypadku bardziej złożonych formatów danych.

Warto pamiętać, że moduł Feeds Tamper pozwala na dodatkową kontrolę nad importowanymi danymi, co jest szczególnie przydatne, gdy dane wymagają dostosowania – np. gdy tagi są zapisane w jednym polu lub zdjęcia są rozdzielone przecinkami.

Jeśli planujesz migrację danych do Drupala lub zarządzasz dużą ilością treści, moduł Feeds i jego rozszerzenia to niezbędne narzędzie, które pozwoli Ci zautomatyzować wiele procesów, uniknąć błędów i zaoszczędzić cenny czas. Co więcej, dzięki możliwości aktualizacji istniejących danych, proces ten jest efektywny i elastyczny. Potrzebujesz więcej tego rodzaju ułatwień? Nasi eksperci z agencji Drupala mogą pomóc Ci zoptymalizować pracę z tym systemem CMS. 

***

Ten artykuł powstał na bazie materiału wideo. Zapraszamy do subskrybowania kanału Nowoczesny Drupal, gdzie w każdy piątek o 12:00 publikujemy nowy film. Nasi eksperci prezentują rozwiązania lub gotowe narzędzia, które pomogą Ci wykorzystać pełen potencjał Drupala.”

-