logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

Iz čega se sastoji modul za Drupal 7?

26/05/2025, by Ivan

Pre nego što počnemo da pravimo naš modul, reći ću još nešto o mogućnostima Drupal API-ja. API pruža široke mogućnosti za rad sa taksonomijom, nodovima, korisnicima, unosom i prikazom podataka iz baze. Za međusobnu komunikaciju modula i jezgra Drupala, kao i modula međusobno, postoji sistem hook-ova. Hook je povratni poziv funkcije, odnosno kada se izvršavanje koda dođe do hook-a, izvršava se kod naše funkcije koju definišemo u modulu. Tako možemo obrađivati podatke korisnika, menije, taksonomije, nodove različitih tipova sadržaja.

Na stranici

http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7

dat je spisak hook-ova jezgra Drupala. Obratite pažnju da se spisak razlikuje po verzijama Drupala. Mi ćemo praviti modul za Drupal 7, pa ćemo koristiti hook-ove za tu verziju.
Hook-ovi u Drupalu imaju sledeći oblik:

ImeModula_NazivHooka

Gde god stoji "hook" u imenu hook-a, treba staviti ime vašeg modula u kojem se hook koristi.

Prvo treba napraviti sam modul.

  1. Napravite folder u sites/all/modules sa imenom budućeg modula, ja ću ga nazvati sitemade.
  2. U folderu modula napravite dva fajla: ImeModula.info i ImeModula.module. U mom slučaju to su sitemade.info i sitemade.module.

Drupal modul

U fajlu sitemade.info napišite:

;$Id$ // ovaj komentar je potreban za lakše postavljanje modula na drupal.org
name = Sitemade module // ime modula koje se vidi na listi modula
package = sitemade // ime paketa kojem modul pripada
core = 7.x // verzija Drupala za koju pravimo modul
files[] = sitemade.module // niz fajlova sa PHP kodom

U fajlu sitemade.module napišite početak PHP koda:

<?php  // tag ne mora da se zatvori
//$Id$ // dodato radi lakšeg postavljanja na drupal.org

Sada bi vaš modul trebalo da se pojavi u listi modula, uključite ga:

Drupal modul

Sada kada je modul uključen, možemo dodavati kod. Predlažem da uklonimo tekstualni blok "History" (Istorija) sa stranice korisnika:

Drupal block

Prvo ćemo videti kako to funkcioniše, biće nam potreban hook hook_user_view:

http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view/7

Ideja ovog hook-a je sledeća: Kada Drupal izvršava kod za prikaz stranice korisnika, uključi i naš hook iz modula. U našem hook-u ćemo iz niza $account ukloniti informacije o istoriji korisnika. Otvorite sitemade.module i dodajte ovaj hook:

function sitemade_user_view($account, $view_mode, $langcode){
    print_r($account);
}

Sačuvajte fajl i očistite keš Drupala da bi se hook učitao. Na vrhu stranice korisnika videćete ispis:

Drupal modul

To je zapravo niz $account koji hook hook_user_view pruža, a print_r ispisuje sadržaj niza na stranicu. Ako koristite Mozilla Firefox (preporučujem ga za razvoj), pritisnite CTRL+U da vidite izvorni kod stranice i shvatite šta sve niz sadrži.

Drupal account

Obratite pažnju na polja uid i name u kojima su ID i ime korisnika. Ta polja se često koriste za pravljenje linkova ka profilima ili sadržajima korisnika.

Ovde su samo podaci korisnika, nema podataka o tekstualnom bloku History (Istorija). Probajmo drugi hook hook_user_view_alter:

http://api.drupal.org/api/drupal/modules--user--user.api.php/function/hook_user_view_alter/7

Izmenite kod modula na:

function sitemade_user_view_alter($account, $view_mode, $langcode){
    print_r($account);
}

Sačuvajte promene. Ispisani niz će biti promenjen, sada je account samo jedno polje u nizu. U polju summary nalazi se informacija za blok History (Istorija). Pokušajmo da uklonimo ovo polje i vidimo rezultat. Za brisanje koristimo funkciju unset:

function sitemade_user_view_alter($account, $view_mode, $langcode){
  unset($account['summary']);
  print_r($account);
}

Polje summary će nestati, ali blok Istorija ostaje. Zašto? Zato što parametar funkcije $account prima kopiju vrednosti, a ne referencu. To znači da modifikujemo lokalnu promenljivu, ali ne i originalne podatke korisnika. Da bismo menjali original, treba dodati & ispred promenljive da bismo prosledili referencu.

function sitemade_user_view_alter(&$account, $view_mode, $langcode){
  unset($account['summary']);
  print_r($account);
}

Sačuvajte i očistite keš. Sada bi blok History trebalo da nestane. Ampersand & kreira referencu na promenljivu $account. Više o referencama u PHP-u možete naći u bilo kom udžbeniku PHP programiranja.