Jelenlegi hely

Telepítési profil: felülírt helyett alapértelmezett jellemzők, alapértelmezésben

CSÉCSY László képe

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ő .info fájljában a dependencies tömbben) tegyük a telepítési profil függőségévé (a telepítési profil .info fájljában adjuk hozzá őket a dependencies tö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ő.

Technológia: 

Hozzászólások

„bizonyos jogosultságokat ne tegyünk be a jellemzőbe”

Konkrétan?

(Változók dettó.)