Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz martonx #9849 üzenetére

    Megértem, hogy először a modulfejlesztésről szóló dokumentációk olvasása során egy kicsit "hogy mi van?!"-érzésed volt. Persze attól is függ, melyik cikket olvastad. A doksik is közösség által fejleszthetők/ronthatók. Ettől függetlenül a Drupal dokumentációja elég bőséges, egész igényes, amikor már van fogalma az embernek róla, hogyan kell modult készíteni, akkor nagyon sokat segít. Sok doksi-oldalon jók a kommentárok is (mármint a hozzáértők részéről). Kezdőként sosem egyszerű, de most már egyre több emberi nyelven leírt tutorial születik.

    Igaz, így is vannak bőven területek, amik homályosak (bevallom, nekem is rettenet sok terület egyelőre ködös, a rendszer kissé komplex), na meg mondjuk a Drupal egyelőre kutyulmány kódja (procedurális kódok keverve OOP-vel, na meg borzalmas mély többdimenziós asszociatív ÉS integer kulcsokkal ellátott tömbök használata) sem mindig segít ebben (azért elég kritikusan szemlélem, annak ellenére, hogy használom (bizonyos contrib modulok kódjától, amelyek egész népszerűek, kapartam már az arcom)), de hogy végre rátérjek a pozitív részére, rengeteg dolog nagyon rugalmasan és logikusan van kitalálva, és nagyon apró részletekig is le lehet menni a módosíthatóságban, azzal együtt, hogy kódolni nem tudó emberkék is tudják használni (ez nyilván ront egyébként a teljesítményen (pont amit nem szeretsz benne, hozzáteszem, jogosan), de van kidolgozott cache-elési stratégia is bőven, van Entity cache modul, meg még jópár eszköz, ami segíthet).

    DE érdemes normális könyveket is olvasgatni a témában - pl. ez elég érthetővé tesz sok mindent: Pro Drupal 7 Development (igaz, a legelején, egy példamodul magyarázatánál egyből felfedeztem egy hibát, amit úgy tűnik, az írója nem jól értett :DDD ettől függetlenül modulfejlesztéshez való magyarázat keresése esetén a doksi mellett pluszban mindenképp ajánlott). Aztán itt van még pár, amit berakattam összefoglalóba:
    http://prohardver.hu/tema/drupal_portal_fejlesztes/index.html

    A modulfejlesztés alapjaihoz:
    Telling Drupal about your module - https://drupal.org/node/1075072
    Writing module .info files (Drupal 7.x) - https://drupal.org/node/542202

    =======

    Egyébként ha valaki már csinált modult, akkor egy Hello World-modul elkészítése nem több 5 percnél (sőt), példa Drupal 7-ben:

    testmodule.info

    name = Test Customization Module
    description = Customizing stuffs on the site...
    core = 7.x
    package = Pete

    ; Writing module .info files (Drupal 7.x):
    ; http://drupal.org/node/542202

    stylesheets[all][] = css/testmodule.css
    scripts[] = js/testmodule.behaviors.js

    Ezt a fájlt a sites/all/modules/testmodule VAGY sites/all/modules/custom/testmodule könyvtárba kell tenni (ízlés kérdése, hova, a custom könyvtárba pakolás azért lehet talán jobb, mert akkor így elválasztod a saját cuccodat a közösségi fejlesztésű moduloktól). Fontos, hogy ne a főkönyvtárban található modules könyvtárba legyen pakolva, mert azok a core moduljai.
    Itt szólunk a Drupalnak, hogy van nekünk egy testmodule nevű modulunk, ezt jelenítse már meg majd a modulok között. A stylesheets[all][] résznél lévő CSS-fájl nyilván opcionális, ez a modul engedélyezésénél minden oldalon be fog szúródni, tehát ez a ténylegesen mindig szükséges CSS-fájl legyen (egyébként lehet a modul kódjából (nem csak leírófájljából) is szólni, hogy szeretnél hozzáadni egy CSS-fájlt egy bizonyos oldalon, ha úgy tetszik), a scripts[] szintén opcionális, ez a JS-fájl mindenhova be fog szúródni (JS-fájlok include-olásáról szintén lehet szólni majd normál kódból is, ha valahol kell). A package = Pete igazából annyit csinál, hogy a modulok adminisztrációs oldalán majd a "Pete" kategória ("csomag") alá fogja sorolni a modult, így könnyebb elkülöníteni a többitől.

    testmodule.module

    <?php

    /**
    * @file
    * A module for customizing stuffs on the site.
    */

    /**
    * Implements hook_init()
    * @see http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_init/7
    */
    function testmodule_init() {
    drupal_set_message(t('Hello World!'));
    }

    Itt megjelenítünk az üzenetsávban egy "Hello World!"-üzenetet a felhasználónak.
    Igazából ennyi a kód. Ezután a modul máris engedélyezhető az admin/modules oldalon (Administration » Modules).

    Amikor a t() függvényen áthajtod a stringet, akkor már többnyelvű környezetben (ami kattintgatásra, pár modul engedélyezése, felrakása után elég könnyen elérhető) fordítható is az
    admin/config/regional/translate/translate
    oldalon (Administration » Configuration » Regional and language » Translate interface), és akkor a másik nyelvre átváltva már a lefordított üzenet fog megjelenni a felhasználónak. (Pl. "Helló világ!")

    Mindezt azért írtam le, hogy szemléltessem, hogy nem olyan bonyolult elkezdeni fejleszteni egy nagyon egyszerű modult. Meg hátha valakinek jól jön.

    [ Szerkesztve ]

    Sk8erPeter

Új hozzászólás Aktív témák