@harrasteblogi JUURI NYT
--:--

Tilaa uutiskirje

Saat tuoreimmat 10 uusinta artikkelia kerran viikossa sähköpostiisi.

Tilaa uutiskirje

Custom Entityn luominen DrupalissaDrupal 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.

🍪