Yksi Drupalin suurimmista vahvuuksista on sen laajennettavuus. Vaikka tuhansia valmiita moduuleja on saatavilla, joskus projektin tarpeet ovat niin yksilöllisiä, että paras ratkaisu on rakentaa oma moduuli. Oman moduulin avulla voit lisätä uusia toimintoja, integroida ulkoisia palveluita tai muokata Drupalin toimintaa juuri omiin tarpeisiisi sopivaksi.
Ensimmäisen Drupal-moduulin rakentaminen voi aluksi tuntua monimutkaiselta, mutta perusasiat ovat yllättävän suoraviivaisia.
Mikä on Drupal-moduuli?
Moduuli on kokoelma PHP-tiedostoja ja asetuksia, jotka lisäävät uusia ominaisuuksia Drupal-sivustolle.
Moduulilla voidaan esimerkiksi:
- Luoda uusia sivuja
- Lisätä hallintatoimintoja
- Rakentaa API-integraatioita
- Luoda uusia sisältötyyppejä
- Muuttaa Drupalin oletuskäyttäytymistä
Milloin kannattaa tehdä oma moduuli?
Oman moduulin rakentaminen on hyvä vaihtoehto, kun:
- Valmista ratkaisua ei ole olemassa
- Tarvitaan yrityskohtainen toiminnallisuus
- Halutaan välttää turhia riippuvuuksia
- Tarvitaan integraatio ulkoiseen järjestelmään
Pienetkin räätälöinnit kannattaa usein toteuttaa omassa moduulissa.
Luo moduulille kansio
Mukautetut moduulit sijoitetaan yleensä hakemistoon:
/web/modules/custom/
Luo uusi kansio esimerkiksi:
/web/modules/custom/hello_world
Moduulin nimi kannattaa pitää:
- Lyhyenä
- Kuvaavana
- Pienillä kirjaimilla kirjoitettuna
Luo .info.yml-tiedosto
Jokainen moduuli tarvitsee .info.yml-tiedoston.
Esimerkiksi:
name: Hello World
type: module
description: Ensimmäinen Drupal-moduulini.
package: Custom
core_version_requirement: ^10 || ^11
Tämä tiedosto kertoo Drupalille, että moduuli on olemassa.
Ota moduuli käyttöön
Kun tiedosto on luotu, moduuli näkyy hallintapaneelissa:
Extend
Tai komentoriviltä:
drush en hello_world
Jos kaikki on kunnossa, moduuli voidaan aktivoida.
Luo ensimmäinen reitti
Moduuli tarvitsee usein oman sivun.
Luo tiedosto:
hello_world.routing.yml
Sisältö:
hello_world.content:
path: '/hello'
defaults:
_controller: '\Drupal\hello_world\Controller\HelloController::content'
_title: 'Hello World'
requirements:
_permission: 'access content'
Tämä määrittää uuden URL-osoitteen.
Luo Controller-luokka
Luo kansio:
src/Controller
Ja tiedosto:
HelloController.php
Esimerkki:
<?php
namespace Drupal\hello_world\Controller;
use Drupal\Core\Controller\ControllerBase;
class HelloController extends ControllerBase {
public function content() {
return [
'#markup' => 'Hei maailma Drupalista!'
];
}
}
Kun avaat:
/hello
näet ensimmäisen moduulisi tuottaman sivun.
Tyhjennä välimuisti
Drupal tunnistaa uudet tiedostot välimuistin kautta.
Komentoriviltä:
drush cr
Tämä kannattaa tehdä aina uusien reittien tai asetusten jälkeen.
Lisää asetussivu
Monet moduulit tarvitsevat asetuksia.
Drupal tarjoaa tähän valmiit lomake-API:t.
Asetussivuilla voidaan hallita:
- API-avaimia
- Integraatioita
- Yleisiä asetuksia
Käytä palveluita (Services)
Drupal perustuu vahvasti palveluarkkitehtuuriin.
Esimerkiksi:
- Lokitus
- Tietokanta
- Sähköposti
- Välimuisti
ovat käytettävissä palveluiden kautta.
Tämä tekee koodista modulaarista ja testattavaa.
Hookit ja tapahtumat
Drupalissa voidaan reagoida järjestelmän tapahtumiin.
Esimerkiksi:
- Sisällön tallennus
- Käyttäjän kirjautuminen
- Sivun latautuminen
Aikaisemmin hookit olivat keskeisessä roolissa, mutta moderneissa Drupal-versioissa käytetään yhä enemmän tapahtumia ja palveluita.
Luo oma lomake
Moduuli voi sisältää omia lomakkeita.
Esimerkkejä:
- Yhteydenottolomake
- Hallintasivu
- Raportointityökalu
Drupal Form API helpottaa lomakkeiden rakentamista huomattavasti.
Tietokannan käyttäminen
Monet moduulit tallentavat omia tietojaan.
Drupal tarjoaa:
- Tietokanta-abstraktiokerroksen
- Entity API:n
- Konfiguraatiojärjestelmän
Suoraa SQL-koodia kannattaa käyttää harkiten.
Konfiguraation hallinta
Jos moduulilla on asetuksia, ne kannattaa tallentaa:
config/install
Näin asetukset voidaan siirtää helposti ympäristöstä toiseen.
Lisää käyttöoikeudet
Moduuli voi määritellä omat käyttöoikeutensa.
Esimerkiksi:
access hello world:
title: 'Access Hello World page'
Tämä mahdollistaa tarkemman käyttäjähallinnan.
Lokitus helpottaa kehitystä
Virheiden selvittämisessä auttaa lokitus.
Esimerkiksi:
\Drupal::logger('hello_world')->notice('Sivu avattiin.');
Hyvä lokitus nopeuttaa ongelmien ratkaisemista.
Testaa moduuli huolellisesti
Ennen tuotantokäyttöä testaa:
- Reitit
- Käyttöoikeudet
- Virhetilanteet
- Päivitykset
Pienetkin virheet voivat aiheuttaa ongelmia suurilla sivustoilla.
Dokumentoi moduuli
Kirjaa ylös:
- Moduulin tarkoitus
- Riippuvuudet
- Asetukset
- Käyttöohjeet
Hyvä dokumentaatio helpottaa ylläpitoa myöhemmin.
Milloin moduuli kannattaa julkaista?
Jos moduuli ratkaisee yleisen ongelman, sen voi julkaista myös muiden käyttöön.
Avoimen lähdekoodin yhteisö hyötyy:
- Uusista ratkaisuista
- Virhekorjauksista
- Yhteistyöstä
Monet suositut Drupal-moduulit ovat lähteneet liikkeelle yksittäisistä asiakasprojekteista.
Yhteenveto
Ensimmäisen Drupal-moduulin rakentaminen on erinomainen tapa oppia ymmärtämään Drupalin arkkitehtuuria. Yksinkertainen moduuli koostuu muutamasta tiedostosta, reitistä ja controller-luokasta, mutta sen päälle voidaan rakentaa erittäin monimutkaisia toiminnallisuuksia.
Oman moduulin avulla voidaan toteuttaa räätälöityjä ratkaisuja, vähentää riippuvuuksia ja hyödyntää Drupalin joustavuutta täysimääräisesti. Kun perusteet ovat hallussa, moduulikehitys avaa lähes rajattomat mahdollisuudet verkkopalveluiden rakentamiseen.