Drupal modul készítése egyszerű           
York, h, 2010-08-30 11:47

A minap azt javasoltam a drupal.hu fórumán egy kérdezőnek, hogy amit meg akar valósítani azt ne a smink rétegbe tegye hanem írjon rá egy modult, remélem megfogadta a tanacsom. Ezt a kijelentésemet a minap aboros vágta a fejemhez. Ezért úgy döntöttem, hogy bemutatom mennyire nehéz dolog egy drupal modult elkészíteni.
Az angol nyelvű modul fejlesztési dokumentációt itt találjátok: http://drupal.org/developing/modules
A modul készítésről itt írnak: http://drupal.org/node/231276.

Egy oldal elkészítése során sok apró csiszolást kell elvégezni, hogy a drupal pont úgy működjön ahogy azt szeretnénk.
Ezeket a módosításokat célszerű egy a honlap nevével fémjelzet modulba tenni.
A most következő példában egy ilyen modul elkészítését mutatom meg a mysite nevű modult fogjuk elkészíteni, és a modul minden oldal letöltéskor egy üzenetet fog megjeleníteni.

A drupalban a modulok neve csak olyan karaktereket tartalmazhat, ami egy PHP függvény nevében is megadható, mivel a modul neve minden modulban létrehozott függvény nevében szerepelni fog.

A feltelepített drupal sites/all/modules alkönyvtárába hozzuk létre a mysite könyvtárat.

cd /var/www/drupal/
mkdir -p sites/all/modules/mysite

A modul létrehozásához minimum két állomány szükséges egy mysite.info és egy mysite.module, ha szeretnénk a modul telepítésekor műveleteket végezni, akkor szükségünk lesz egy mysite.install állományra is (nekünk most nem kell).
Létrehozzuk mindegyik állományt. Kezdjük a mysite.info állománnyal, ennek a tartalma a következő legyen:

name = mysite
description = A mysite oldalon végzett módosításokat tartalmazza.
core = 7.x

A name a modul neve, a description a modul leírását tartalmazza, ezeket az értékeket kötelező megadni, de az info állományba megadhatunk még modul függőséget php és drupal verziót, az alábbi oldalon megtaláljuk a többi lehetőséget is: http://drupal.org/node/231036
A core opció a drupal verziót határozza meg, ha 6-os drupalhoz készítjük a 7.x-et 6.x-re cseréljük.

Az info állomány elkészítése után a mysite.module állományunkat kell elkészíteni.
Az állomány tartalma legyen a következő:

<?php
/**
 * hook_init() implementálása
 */
function mysite_init() {
	drupal_set_message(t('New message'));
}

A module állományban a hook_init hurkot implementáltuk. A szöveg kiíratására pedig a drupal_set_message() függvény segítségével történt. A t() függvény fordítja le a szöveget az oldal nyelvére.