logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Podešavanje migracije prilikom nadogradnje na Drupal 8

18/06/2025, by Ivan

Kreirajte svoje početne migracije

  • Kreirajte migracije koristeći drush migrate-upgrade --configure-only, kao što je opisano u odeljku „Nadogradnja korišćenjem Drush-a“.
  • Uverite se da imate config/sync direktorijum u koji će biti snimljen sledeći korak.
  • Izvezite migracije koristeći drush config:export.
  • Kreirajte svoj sopstveni modul za migraciju.
  • Kopirajte samo one YML fajlove koje želite da koristite iz direktorijuma config/sync u config/install direktorijum vašeg novog prilagođenog modula, uređujući ih da uklonite uuid vrednosti i menjajući identifikator, grupu, oznaku i druge vrednosti po potrebi.
  • Kopirajte fajl migrate_plus.migration_group.migrate_drupal_7.yml iz config/sync u config/install direktorijum vašeg novog modula, preimenujući ga u migrate_plus.migration_group.your_module.yml. Potreban vam je fajl grupe jer sadrži podešavanja baze podataka.

Upravljanje migracijom

  • Počnite migraciju sa korisničkim ulogama i korisnicima pre nego što pređete na čvorove.
  • Nastavljajući da dodajete fajlove u config/install direktorijum, ponovo učitajte konfiguraciju koristeći nešto poput drush config-import --partial --source=modules/custom/your_module/config/install (za ovo je potrebno omogućiti Config modul).

Preimenovanje polja prilikom nadogradnje na Drupal 8

Recimo da imate na Drupal 7 sajtu tip sadržaja A sa poljima foo, bar i baz. Takođe, želite da preimenujete polje baz u zot u Drupalu 8. Takve izmene je relativno lako napraviti kada nadograđujete pomoću drush-a.

  • Kreirajte migracije koristeći drush migrate-upgrade --configure-only, kao što je navedeno gore.
  • Pokrenite migraciju tipa čvora i polja. Ovo će generisati tip sadržaja A i polja foo, bar i baz.
  • Ručno kreirajte polje zot u Drupalu 8. Obrišite bazu baz koju su migracije napravile, ali je ne planirate koristiti.
  • Priloženi modul Migrate Plus omogućava rad sa migracionim modulima kao konfiguracionim objektima, dozvoljavajući fleksibilno učitavanje, menjanje i čuvanje. Pojedinačne migracije kreirane drush migrate-upgrade --configure-only sada možete pregledati u admin/config/development/configuration/single/export birajući „Migration“ kao tip konfiguracije. Izaberite migraciju za čvorove (A).
  • Kopirajte i nalepite migraciju u admin/config/development/configuration/single/import, ali promenite mapiranje polja tako da odredišno polje bude field_zot, dok i dalje mapirate iz polja field_baz. Tačan sadržaj migracije zavisi od tipa polja. Za razumevanje anatomije migracija, pogledajte primere u dokumentaciji Migrate API-ja.
  • Nakon što ste uvezli izmenjenu migraciju, možete pokrenuti migraciju za čvorove A pomoću Drush-a i proveriti da li su podaci pravilno prebačeni u polje zot.
  • Ponovite ovu promenu mapiranja za migraciju revizija čvora (A), ako planirate da migrirate i revizije čvora.

Drugi način da postignete isti rezultat jeste ručno kreiranje novog polja zot kao što je gore opisano, i izmena mapiranja polja migracije čvorova (A) implementacijom hook_migration_plugins_alter().

Pisanje prilagođenih procesa plugina

Ako treba da definišete sopstvenu logiku transformacije (npr. ako-onda logiku), možete razmotriti pisanje sopstvenog procesa plugina.

Primer u dokumentaciji Migrate API-ja koristi migraciju korisnika kao primer. Za određivanje koda jezika korisnika potrebna je if-else logika kao što je objašnjeno u primeru, pa modul User pruža sopstveni proces plugin UserLangcode.

Gornji primer opisuje kako proces treba da se sačuva u direktorijumu MODULE/src/Plugin/migrate/process i kako ga treba anotirati da bi bio upotrebljiv. Koristite UserLangcode i druge procese plugina kao primere pri pisanju svog!

hook_migrate_prepare_row()

Ako treba da definišete sopstvenu logiku transformacije, možete implementirati hook_migrate_prepare_row() u svom prilagođenom modulu i implementirati logiku tamo.

Kao što API dokumentacija opisuje, hook ima tri argumenta:

Kao što je opisano u API dokumentaciji, možete koristiti $migration->id() da ograničite svoju logiku samo na željenu migraciju.

Da biste pročitali izvornu vrednost u promenljivu, koristite Row::getSourceProperty(), na primer ako u izvornom redu postoji svojstvo 'type', možete napisati: $type = $row->getSourceProperty('type');

Da biste postavili potpuno novo svojstvo koje možete koristiti kao izvor u definiciji migracije, koristite Row::setSourceProperty().

Za pravljenje upita bazi podataka izvornog sajta, koristite $source->getDatabase()->query() kao što je prikazano u dokumentaciji za API konekcije.

Da biste preskočili red iz migracije, možete baciti novo izuzetak MigrateSkipRowException.

hook_migration_plugins_alter()

Drugi način da prilagodite migraciju je da implementirate funkciju hook_migration_plugins_alter() u svom prilagođenom modulu.

Kao što API dokumentacija opisuje, ovaj hook ima jedan argument — asocijativni niz svih otkrivenih migracija. Možete menjati migracije ili ukloniti one koje ne želite da izvršavate.

Migrate Plus pruža PREPARE_ROW događaj

Ako više volite da pišete svoje prilagođene odgovore na osnovni handler prepare_row na objektno-orijentisan način umesto implementacije hook_migrate_prepare_row(), to možete učiniti ako vam je omogućen modul Migrate Plus. Migrate Plus pruža događaj PREPARE_ROW na koji vaš pretplatnik može da se prijavi. Drupal 8 API dokumentacija o događajima. Kao primer implementacije pretplatnika na događaje u drugom kontekstu možete pogledati ovaj primer iz Simple FB Connect modula.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.