Jednoznačná výhoda Drupalu, ako známeho a zabehnutého opensource systému, je komunita. Keďže aj na Slovensku máme hneď niekoľko nadšencov, pripravujeme v spolupráci s Českou Drupal komunitou DrupalCampCS. Aj z toho dôvodu sme sa rozhodli napísať krátky seriál o tom, ako Drupal funguje a v čom môže byť lepší, ako ostatné systémy.

Drupal má špecifické postavenie medzi opensource CMS a pri prechode z iného, naoko podobného systému, je často problém pochopiť, ako niektoré “úplne bežné” veci v Drupale nájsť a prečo to vlastne nie je moc podobné. Tento blog v skratke vysvetľuje, ako funguje koncept a ako uvažovať pri stavbe prvého webu v Drupale.

Drupal nie je CMS

Teraz ste asi zmätení. Drupal sa považuje za CMF (content management framework), čo sa dá vysvetliť už silným API pre programátorov, ale aj veľmi flexibilným rozhraním v ktorom si vytvárate web sami podľa svojho návrhu.

Kým pri bežných CMS môžete používať už naprogramované (balíčkové) riešenia ako galérie, inzercie, redakčné, či iné balíky, v Drupale podobné moduly nenájdete a dokonca ich ani nikde nekúpite (v Drupale je predávanie modulov skôr výnimočné). To je dôvod, prečo ste v Drupale nútení uvažovať úplne inak, skôr podobne ako keď používate framework.

Nevidíte totiž hotové riešenie, ktoré má ten svoj “obal” vo forme vytvorených náhľadov (napr. rôznych zoznamov inzerátov /inzercia/, či obrázkov /galéria/), ale svoju architektúru si musíte vytvoriť sami. Najskôr musíte vedieť, čo chcete prezentovať. Skúsení „drupalisti“ tomu hovoria typy obsahu (content types) a polia (fields) a až z toho následne vytvárate zoznamy, ktoré poväčšine vidí klient a vie ich oceniť. Ak tomu ešte teraz úplne nerozumiete, nezúfajte, blog pokračuje a neskôr isto pochopíte viac.

Ako sa pozerať na Drupal?

image04

Všimnite si, ako ukazujú šípky. Pri bežnom CMS hľadáme skôr riešenie, ako bude vyzerať náhľad na zoznam, alebo úvodnú stránku, čo je súčasťou bežných modulov napr. galéria, alebo inzercia. Už z hotového riešenia sa snažíme použiť, čo máme k dispozícii. Pri CMF uvažujeme podobne, ako pri Frameworku, staviame architektúru odzadu, najskôr potrebujeme vedieť dáta, ktoré bude obsahovať stránka a z toho vytvárame neskôr zoznam, alebo úvodnú stránku.

Prečo to teda komplikovať?

Ak vytvárate stránky pomocou iných CMS, určite ste sa stretli so situáciou, že váš klient chcel niečo trochu inak (ideálne, keď je všetko už skoro hotové) a vy ste kvôli tomu museli zasahovať do pôvodného kódu (čo asi nie je úplne ok), svoju funkcionalitu pichnúť niekam kam nepatrí, alebo ste museli stráviť kopec času prerábaním niečoho hotového. Niekedy je potrebné kvôli jednej jednoduchej veci nainštalovať niekoľko modulov, čomu sa systém, jeho správa a výkon nepoteší.

Stavba webu v Drupale je často považovaná za časovo náročnejšiu, ale vytváraním vlastnej architektúry veľa problémov obídete, a tak už pri stredne náročnom webe (alebo klientovi ;)) sa stáva, že to nemusí byť úplne tak. Veľkou výhodou v Drupale je, že môžete tvoriť systémovo a viac na mieru. Oceníte to tiež pri následnej správe webu. Ak vám klient napríklad zavolá “chcem tam pridať ešte jedno políčko”, nemáte problém ho s ľahkosťou pridať a začleniť do systému.

Pozrime sa teda na príklad

Skúsim načrtnúť príklad webu v Drupale, ktorý sa skladá z entít (Entity môžu byť typy obsahu, používatelia, kategórie, ale aj komentáre, objednávka v e-shope, alebo adresa, proste všetko, čo potrebuje mať v sebe ďalšie položky – polia) a teda aj polí.

Náš príklad bude pokročilejší web predajcu áut (jednej značky), ktorý obsahuje základný popis ponúkaných modelov, možnosť inzercie áut v konkrétnej konfigurácii (môžu to byť predvádzacie a rôzne akciové autá) a prezentáciu zamestnancov.

Pri návrhu musíme poznať položky typov obsahu (Popis modelu, Inzerované vozidlo) a profilu zamestnancov. Môže to napríklad vyzerať aj takto:

image06

Náš diagram obsahuje príklad s typmi obsahu “Popis modelu” a “Inzerované vozidlo” a profilom používateľov “Zamestnanci”. V nich sú vnorené polia (fields).

Možno ste si všimli červené polia, ktoré ukazujú na iné entity. Sú to referencie (references) alebo vzťahy (relations), pomocou ktorých môžeme následne vyberať obojstranne dáta. Napríklad, ak si predstavíme inzerované vozidlo „Citroen C1 1.0i 68k…“, ktoré obsahuje svoje dáta, ale má aj vzťah k Citroen C1 (Popis modelu), odkiaľ je následne možné ťahať ďalšie (všeobecné) dáta. Alebo aj naopak, naše inzerované auto sa môže zobrazovať pri popise modelu s dátami, ktoré tam z neho chceme zobraziť (uvidíte neskôr).

image03

Ako field teda môžeme vložiť do typu obsahu aj kategóriu (čomu hovoríme term reference). Okrem toho nám Drupal už v základe ponúka rôzne polia pre jednoduchý text, čísla, zoznamy (select, checkbox…), text s editorom, alebo ako doplnkový napr. Computed field, ktorý vie pracovať s hodnotou iného fieldu (v našom príklade niečo prepočítať) a hodnotu uložiť do databázy.

Ako to vyzerá v rozhraní

V type obsahu (content type) vytvoríte pole v jednoduchých štyroch krokoch, kde definujete jeho meno, typ a typ formulára v editácii. Polia, ktoré ste už vytvorili, môžete znovu použiť s pôvodnou konfiguráciou, je to výhodné pri komplexnejších stránkach.

image01

Následne ešte môžete upraviť v ďalšom rozhraní, ako sa bude zobrazovať (napr. obrázok môže byť lightbox a mať svoje nastavenia).

Výhoda je tiež v tom, že rozhranie na vytváranie fieldov je stále rovnaké pri každej entite a tak sa nemusíte nič učiť a hľadať znova.

Vytvorte si svoje zoznamy

Napriek tomu, že vytvoriť si vlastný typ obsahu, alebo profil používateľa je super, Drupal pri entitách nekončí. Modul Views poskytuje veľmi flexibilné rozhranie, kde je možné vytvárať vlastné zoznamy, ktoré používajú dáta z našej architektúry a vedia pracovať aj s kategóriami alebo referenciami (vzťahmi), ktorými sme dané entity prepojili.

Zmena akéhokoľvek výstupu, pridať / odobrať pole je na pár minút.

image02

V našom príklade vidíme ako vieme použiť dáta v inzerovaných vozidiel:

  1. V okrúhlom tooltipe je naznačená referencia, ktorá umožňuje použiť obojstranne dáta.
  2. Pod tým je blok so zoznamom nových inzerovaných vozidiel, ktorý môže byť napr. použitý na úvodnej stránke webu.
  3. Dole vidíme len jedno inzerované auto, takto ho vieme vytiahnuť a upozorniť na neho pri popise modelu vďaka previazanosti referenciou. Ak by sme potrebovali, vieme tam doplniť ďalšie dáta z inzerovaného vozidla.
  4. V strede dole je príklad tabuľkového výpisu všetkých inzerovaných vozidiel.
  5. Do facebooku môžeme vytvoriť xml feed, ktorý cez nejaký fb aggregátor môže posielať nové inzerované autá automaticky do fb funpage.
  6. Nad facebookom je príklad menšieho bloku, ktorý má viac zobrazení zoradenia – podľa ceny, najnovších, spotreby.
  7. Je ešte množstvo možností využitia.

Views vám umožní nastaviť:

  • displej: zobrazovať na stránke, v bloku, ako súbor, alebo v type obsahu (content type)
  • formát zobrazenia: napr. tabuľka, html zoznam, grid, neformátované (div), admin rozhranie alebo aj mapu, či slideshow
  • views polia, ktoré potrebujete a nakonfigurujte ich podľa svojich potrieb
  • filter alebo vlastné radenie (sorting), všetko podľa akéhokoľvek fiedu, alebo ponúknutých dat (typu obsahu, kategórií a pod).
  • v pokročilých nastaveniach môžete vo svojom zobrazení tiež vytvoriť referenciu (vzťah) alebo nastaviť dynamické zobrazenie (väčšinou pomocou vzťahov alebo kategórií).
  • a veľa ďalšieho, čo ak vám nepostačuje, viete v téme vzhľadu ešte ďalej meniť.

Ako to vyzerá v rozhraní

Táto ukážka ukazuje nahrubo dáta, ktoré views používa z databázy a tie, ktoré sa týkajú priamo hlavne konfigurácie správania. O tom moc pri bežných stránkach nemusíte uvažovať.

image00

S Views vieme vytvoriť bežnú tabuľku, či HTML zoznam, ale napríklad aj slideshow, kam môžeme ťahať obrázky priamo z obsahu (môžeme tak v slideshow použiť napr. obrázok z popisu modelu alebo inzercie), alebo priamo v mape zobraziť pomocou zemepisnej šírky a výšky dáta z obsahu. Zaujímavé je tiež vytvoriť pomocou Views administráciu používateľovi úplne na mieru. Čo znamená, že Views samozrejme funguje aj na používateľov, či ďalšie entity.

Views určite nie je jediný nástroj

Views ale nie je jediný nástroj, ktorý používa architektúru entít a polí (fields). Drupal sa vyslovene okolo tohoto konceptu točí, nájdete tam aj tokeny, ktoré vám pomôžu vytvoriť url adresy, či breadcrumbs. Na ďalší rozsiahly blog by asi bol aj modul Rules, ktorý vie podľa udalostí vytvárať akcie, ako odosielanie mailov, zobrazovanie správ, či presmerovania a pod..

Drupal určite nie je jednoduchý, ale ak sa ho poriadne naučíte, je prudko návykový. Predtým som si nevedel predstaviť, na čo mi to views asi bude, teraz si vôbec neviem predstaviť, ako by som bez toho views niektoré veci robil.

Ako povedal jeden skúsený Drupalista, veci ako Views programátorov odúčajú programovať, ale zároveň, kto v Drupale nechce používať Views, nedokáže využiť potenciál Drupalu naplno. Tak si vyberte! 🙂

[mc4wp_form]

Komentáre