Jelenlegi hely
Címlap › Telepítési profil: felülírt helyett alapértelmezett jellemzők, alapértelmezésben ›Új hozzászólás
Telepítési profil: felülírt helyett alapértelmezett jellemzők, alapértelmezésben
Bizonyára többen belefutottunk már a problémába, miszerint a Drupal 7-hez fejlesztett saját telepítési profilban bekapcsolt jellemzők (feature modulok) már az oldal első meglátogatásakor felülírt (overridden) állapotot mutatnak. Hogyan lehet ezt elkerülni?
Először is, készítsük el úgy a jellemzőinket, hogy azokkal ne legyen probléma! Ez a gyakorlatban a Kit kompatibilitást jelenti, azaz különösen:
- bizonyos jogosultságokat ne tegyünk be a jellemzőbe;
- bizonyos változókat ne tegyünk be a jellemzőbe (és/vagy ne a Strongarm modul használatával tegyük a jellemzőbe a változókat);
- stb.
Ez önmagában azonban még nem elég. Szükség van a következőkre is:
- a jellemzők függőségeit (azon modulokat, melyek fel vannak sorolva a jellemző
.infofájljában adependenciestömbben) tegyük a telepítési profil függőségévé (a telepítési profil.infofájljában adjuk hozzá őket adependenciestömbhöz); - magukat a jellemzőket ne tegyük a telepítési profil függőségévé;
- a jellemzőket a telepítési profil végén (célszerűen egy önálló lépésben) kapcsoljuk be a
features_install_modules()használatával; - mivel ilyenkor még mindig felülírt állapotúnak tűnne a jellemző, ezért a
features_revert()használatával minden jellemző minden összetevőjét visszaállítjuk.
A fentiek magyarázata az, hogy ha a jellemzőt annak függőségeivel azonos lépésben telepítjük, akkor a modulok hook_install() példányai nem biztos, hogy számunkra megfelelő sorrendben fognak lefutni. Konkrét példa lehet erre a változók esete, amikor a Strongarm segítségével a jellemzőbe tett változókat az őket eredetileg szállító modul felülír(hat)ja – aminek egyenes következménye, hogy a jellemző felülírva állapotba kerül a bekapcsolása után azonnal. (Nem mellékesen ugyanez a helyzet akkor is, ha nem a telepítési profilban, hanem a felhasználói felületen kapcsoljuk be a jellemzőt.) A fenti módszert követve ez a probléma elkerülhető.
