Drupal tunnetaan joustavasta arkkitehtuuristaan, jonka ansiosta verkkosivustolle voidaan rakentaa lähes rajattomasti erilaisia tietorakenteita. Sisältötyypit, taksonomiat ja käyttäjäprofiilit riittävät moniin käyttötarkoituksiin, mutta joskus tarvitaan täysin oma tietomalli. Tällöin ratkaisu on Custom Entity eli mukautettu entiteetti. Sen avulla voidaan luoda uusia tietotyyppejä, joilla on omat kenttänsä, käyttöoikeutensa, hallintanäkymänsä ja ohjelmointirajapintansa. Vuonna 2026 Custom Entity on yksi Drupalin tehokkaimmista ominaisuuksista laajojen ja vaativien verkkopalveluiden kehittämisessä.
Mikä on Custom Entity?
Entity eli entiteetti on Drupalin tietorakenne, jota käytetään erilaisten sisältöjen ja tietojen tallentamiseen.
Drupalin vakioentiteettejä ovat esimerkiksi:
- sisältö (Content)
- käyttäjä (User)
- media (Media)
- taksonomia (Taxonomy)
- kommentti (Comment)
- tiedosto (File)
Custom Entity mahdollistaa kokonaan uuden entiteettityypin luomisen silloin, kun valmiit ratkaisut eivät vastaa projektin tarpeita.
Milloin Custom Entity kannattaa luoda?
Mukautettu entiteetti sopii tilanteisiin, joissa tallennettava tieto ei ole perinteistä verkkosisältöä.
Esimerkkejä ovat:
- tapahtumavaraukset
- ajoneuvot
- kiinteistöt
- tuotantolaitteet
- jäsenrekisterit
- tutkimusaineistot
- projektit
- asiakasrekisterit
Kun tiedolla on oma elinkaarensa, käyttöoikeutensa ja hallintalogiikkansa, Custom Entity on usein paras ratkaisu.
Custom Entityn edut
Mukautettu entiteetti tarjoaa monia hyötyjä verrattuna tavallisiin sisältötyyppeihin.
Keskeisiä etuja ovat:
- oma tietorakenne
- oma hallintaliittymä
- omat käyttöoikeudet
- laajennettavat kentät
- REST- ja JSON:API-yhteensopivuus
- Views-tuki
- tehokas integraatio muihin moduuleihin
Tämän ansiosta ratkaisu on joustava ja helposti laajennettavissa.
Moduulin luominen
Custom Entity toteutetaan yleensä omassa Drupal-moduulissa.
Moduuli sisältää esimerkiksi:
- info-tiedoston
- PHP-luokat
- reitityksen
- lomakkeet
- käyttöoikeudet
- asetukset
- mahdolliset palvelut
Selkeä moduulirakenne helpottaa ylläpitoa ja jatkokehitystä.
Entity-luokan määrittely
Mukautetun entiteetin ydin on Entity-luokka.
Siinä määritellään esimerkiksi:
- entiteetin nimi
- tunniste
- tietokantataulut
- hallintareitit
- lomakkeet
- käyttöoikeudet
- näkymät
Entity-luokka toimii perustana kaikelle entiteetin toiminnalle.
Base Field Definitions
Custom Entity voi sisältää oletuskenttiä, jotka määritellään ohjelmallisesti.
Tyypillisiä kenttiä ovat:
- nimi
- kuvaus
- tila
- luontipäivä
- päivitysaika
- omistaja
- tunniste
Näiden lisäksi ylläpitäjä voi usein lisätä uusia kenttiä Drupalin kenttähallinnan kautta.
Hallintalomakkeet
Custom Entitylle voidaan luoda omat hallintalomakkeet.
Yleisiä lomakkeita ovat:
- luontilomake
- muokkauslomake
- poistovahvistus
- asetussivu
Näiden avulla käyttäjät voivat hallita entiteettejä ilman ohjelmointia.
Views-yhteensopivuus
Yksi Drupalin suurimmista eduista on Views-moduuli.
Kun Custom Entity integroidaan Viewsiin, voidaan rakentaa esimerkiksi:
- listauksia
- hakutoimintoja
- suodatuksia
- raportteja
- hallintanäkymiä
Näin tietoja voidaan esittää monipuolisesti ilman erillistä ohjelmointia.
Käyttöoikeudet
Mukautetulle entiteetille voidaan määrittää omat käyttöoikeudet.
Esimerkkejä ovat:
- luo uusi entiteetti
- muokkaa omia tietoja
- muokkaa kaikkia tietoja
- poista entiteettejä
- tarkastele tietoja
Tarkka käyttöoikeuksien hallinta on tärkeää erityisesti organisaatioiden sisäisissä järjestelmissä.
REST ja JSON:API
Drupal tukee moderneja rajapintoja myös Custom Entityille.
Tämän ansiosta tietoja voidaan käyttää esimerkiksi:
- React-sovelluksissa
- Vue-sovelluksissa
- mobiilisovelluksissa
- integraatioissa
- ulkoisissa palveluissa
Headless Drupal -ratkaisuissa Custom Entity toimii usein keskeisenä tietolähteenä.
Kenttien laajennettavuus
Yksi Drupalin vahvuuksista on kenttäjärjestelmä.
Custom Entityyn voidaan lisätä esimerkiksi:
- tekstikenttiä
- numeroita
- päivämääriä
- kuvia
- tiedostoja
- viittauksia muihin entiteetteihin
- sijaintitietoja
Tämä mahdollistaa tietomallin kehittämisen ilman suuria ohjelmistomuutoksia.
Suorituskyky
Laajoissa järjestelmissä suorituskyky on tärkeää.
Parhaita käytäntöjä ovat:
- tehokkaat tietokantakyselyt
- välimuistin hyödyntäminen
- tarpeettomien kenttien välttäminen
- indeksien käyttö
- Views-kyselyjen optimointi
Hyvin suunniteltu entiteettirakenne toimii tehokkaasti myös suurilla tietomäärillä.
Yleisimmät virheet
Custom Entityjen kehityksessä kohdataan usein samoja haasteita.
Tyypillisiä virheitä ovat:
- liian monimutkainen tietomalli
- puutteelliset käyttöoikeudet
- epäselvät kenttien nimet
- Views-integraation unohtaminen
- puutteellinen dokumentointi
- suorituskyvyn laiminlyönti
Hyvä suunnittelu ehkäisee useimmat ongelmat jo projektin alkuvaiheessa.
Parhaat käytännöt
Mukautettuja entiteettejä kehitettäessä kannattaa noudattaa Drupalin suosituksia.
Hyviä käytäntöjä ovat:
- suunnittele tietomalli huolellisesti
- käytä Composeria moduulien hallintaan
- noudata Drupal Coding Standards -ohjeita
- dokumentoi moduuli
- kirjoita tarvittaessa automaattisia testejä
- hyödynnä Dependency Injection -mallia
- pidä moduuli mahdollisimman modulaarisena
Näin ratkaisu pysyy ylläpidettävänä myös pitkällä aikavälillä.
Yhteenveto
Custom Entity on yksi Drupalin tehokkaimmista kehitysominaisuuksista. Sen avulla voidaan rakentaa omiin tarpeisiin suunniteltuja tietorakenteita, jotka integroituvat saumattomasti Drupalin kenttäjärjestelmään, Views-moduuliin, käyttöoikeuksiin ja rajapintoihin.
Kun Custom Entity suunnitellaan huolellisesti ja toteutetaan Drupalin parhaiden käytäntöjen mukaisesti, lopputuloksena on joustava, laajennettava ja pitkäikäinen ratkaisu. Se mahdollistaa vaativien verkkopalveluiden, asiointijärjestelmien ja liiketoimintasovellusten rakentamisen tehokkaasti Drupal-alustan päälle.