Přejít k navigační liště

Zdroják » Různé » Drupal jako základ pro webové projekty

Drupal jako základ pro webové projekty

Články Různé

V současnosti už u většiny běžně vytvářených webových projektů není nutné začít stavět „na zelené louce“ a programovat vše od začátku. Velkou množinu webových projektů lze zpracovat pomocí moderních systémů pro správu obsahu (CMS), jako jsou Joomla, Wordpress či Drupal. V článku si představíme poslední jmenovaný.

Nálepky:

V současné době existuje poměrně velký počet open source systémů pro správu obsahu, přičemž jako ty nejvýznamnější se často uvádějí Joomla, WordPress a Drupal. Právě na příkladu posledního jmenovaného si ukážeme, jak může posloužit coby solidní základ pro větší webový projekt.

Diskuze na téma, který redakční systém/systém pro správu obsahu je nejlepší, jsou často zavádějící. Každý má své uplatnění pro jiný typ projektu a pro jinou skupinu uživatelů (pozor, nikoli čtenářů). Pokud chcete každý ze zmíněných projektů něčím charakterizovat, pak systému Joomla přiřkněme propracované administrační rozhraní, WordPressu jednoduchost použití a Drupalu rozšiřitelnost.

Ano, rozšiřování jsou otevřené i Joomla a WordPress, k poměrně dostatečné funkcionalitě v základní podobě je možné doplnit spoustu dalších modulů. Ovšem Drupal je tak trošku jiný. Až do verze 6 (v sedmičce se to mírně, ale jen mírně změní) jde o projekt, který v základní podobě nabízí několik modulů pro správu obsahu a uživatelů, ve skutečnosti je to však spíše kostra, na kterou je třeba navěsit další moduly. Teprve s nimi dosáhneme požadované funkcionality pro čtenáře atraktivního a pro administrátora pohodlného webu.

Jakkoli zní označení holá kostra pro Drupal negativně, není to tak. Například jádro GNU/Linuxu je ve své podstatě taky jen kostra operačního systému, na kterou je navěšena spousta doplňkové funkcionality tvořící dohromady jednotlivé distribuce. Drupal tvůrcům webu nevnucuje určitý vizuální editor, neříká, jakým způsobem pracovat s obrázky, jakou použít galerii a podobně. Jakkoli je to nepohodlné pro začátečníky, pro pokročilejší tvůrce webu je to naopak výhoda. Svůj projekt si tak přizpůsobíte do nejmenších podrobností.

Jak Drupal funguje?

Drupal si nejlépe rozumí s MySQL, ovšem provozovat jej můžete i na PostgreSQL a od připravované verze 7 i na SQLite. Existuje i projekt snažící se přinést podporu Microsoft SQL Serveru. Co se týče platformy pro hostování této webové aplikace, pojede jak v Linuxu, tak ve Windows (tedy s Apache i IIS). V Drupalu najdete podporu javascriptových knihoven jQuery, přičemž verzi od verze je provázanost na jQuery silnější, zejména v administrační části. Většina projektů, která Drupal využívá, kupodivu s jQuery moc nepracuje, a Drupal tak degraduje na obyčejného správce článků. Celý Drupal je vícejazyčný, čili je možné jej lokalizovat do jakéhokoli jazyka.

Drupal - Allreal

Výhoda Drupalu je především v tom, že není pojat jako projekt určený výhradně pro správu článků nebo na blogování, ale postavíte s ním realitní portály, seznamky, e-shopy a další nečlánkové projekty. Veškerý obsah je zde definován jako tzv. node – uzel. Uzly mohou být různého typu, s různými přístupovými právy uživatelů a různou podobou. Standardní funkcionalita definuje pro každý uzel název a tělo s obsahem, přílohy v podobě uploadovaných souborů, jméno uživatele, revize, nebo datum vydání. Dále je možné je třídit pomocí taxonomie.

S pomocí nejčastěji zmiňovaných rozšiřujících modulů CCK a Views lze dosáhnout toho, že ke každému typu uzlu přidáte další položky, například výběry data, obrázky, různá políčka s validátory na určitý obsah atd. Modul Views pak použijete k vytváření podstránek, na kterých jsou zobrazeny různě vyfiltrované seznamy jednotlivých uzlů. S touto velmi silnou kombinací dvou modulů lze vytvořit v podstatě jakýkoli typ webu, zpracovat různé provázanosti obsahu mezi sebou, a to vše pouze naklikáním příslušných vlastností v administračním rozhraní.

Moduly

Z pohledu uživatele vkládajícího obsah je nejvíce limitujícím faktorem absence vizuálního editoru v základní distribuci systému. Ovšem na druhou stranu tak máte svobodnou volbu rozhodnout se, který ze známých editorů použijete. Zatímco dříve byly pro každý z editorů (např. TinyMCE nebo FCKeditor) dostupné samostatné moduly, nyní vše zastřešuje modul WYSIWYG API – s podporou mnoha různých editorů, snadnou instalací a jednotným nastavením.

Jestliže budeme o Drupalu považovat jako o kostře pro vlastní webové projekty, pak se zcela určitě nevyhneme vývoji vlastních rozšiřujících modulů. Určitě to není snadné pro člověka, který si včera přečetl knihu o programování v PHP a vytvořil si první skript. Na druhou stranu pro průměrného programátora, ale i „slepovače cizích kódů“ by vývoj modulů pro Drupal neměl představovat zas až tak velký problém.

Na výchozí funkce definované v modulech jádra Drupalu se lze snadno navěsit a pozměnit jejich funkcionalitu. Drupal má v tomto směru bohatou online dokumentaci a prohledávač svého API. Základní struktury modulů (i šablon vzhledu) jsou dány. Poté, co si podle návodu zkusíte na pár řádcích vytvořit vlastní modul a pochopíte, jak funguje, už vás od dalšího vývoje nic nezastaví. Drupal má přehledně zpracované průvodce tvorbou šablon a samozřejmě i modulů.

Import dat

Při tvorbě webu na Drupalu se často postavíte před úkol importovat data z jiných redakčních systémů nebo z nějakých jiných předloh. Máte-li zdrojová data k dispozici jako soubory CSV nebo XML, zvládnete vše bez programování s modulem Import / Export API. Ale ani v jiných případech to není problém. Vytvoření modulu, který data importuje z databáze původního systému a převede je na uzly v Drupalu (nebo na uživatele či komentáře) je spíše záležitostí sestavení vhodného příkazu SQL než laborování nad kódem v PHP.

Šablony vzhledu

Opravdu silnou stránkou Drupalu je oddělení šablon vzhledu od funkcionality. Jako hlavní a standardní šablonovací systém je zde použito vlastní PHPTemplate. Šablony se vedle CSS, JavaScriptů a obrázků skládají v podstatě z koster v souborech PHP. Ty obsahují váš vlastní libovolný HTML kód, mezi jehož značky vypíšete jednoduchým zápisem dynamicky generované části, například:

<h1><?php print $title;?></h1>
<div><?php print $content;?></div>
<div><?php print $footer;?></div>

Za obrovskou výhodu považuji to, že se kodér nemusí dopodrobna zabývat tím, jak Drupal funguje. Šablonovací systém umožňuje definovat šablonu celých stránek, ale i komponent, které se nacházejí na ní – boxíky, formuláře, obsahové části atd. Díky PHPTemplate engine má vývojář šablon k dispozici kompletní drupalovské API. Buď přímo v souborech s kostrami (což není ideální), nebo ve speciálním souboru template.php může přepsat standardní výstup kterékoli drupalovské funkce. Navíc velmi jednoduše – celou ji zkopíruje, přejmenuje a upraví.

Dáváte-li přednost Smarty Template Engine, pak si musíte doinstalovat doplňkový modul, který vám tuto syntaxi umožní v šablonách pro Drupal použít. Dostupných šablon, které Smarty využívají, je však minimum, většina pracuje s PHPTemplate a reflektuje na ni také většina literatury věnované Drupalu. S vývojem i úpravou šablon vám pomůže srozumitelná dokumentace.

Nejčastější nářky

Drupal - Vintage Aviator

Drupal není ideální, jako žádný jiný CMS. Nečekejte od něj, že si několika kliknutími postavíte web jako je Zdroják, aniž byste měli alespoň základní znalost PHP. Jistě, pomocí existujících modulů a široké nabídky hotových témat lze vše naklikat, ovšem takový web bude vypadat jako přes kopírák.

Nejčastějšími výtkami z pohledu tvůrce webu směrem k Drupalu je výše zmíněná snad až příliš velká nabídka modulů dělajících zdánlivě totéž. Věřte však, že se v ní brzy zorientujete.

Další, často nepochopenou věcí, je způsob tvorby šablon. Možná někteří z vás nebudou souhlasit, ale praxe dává za pravdu, že ke stylování vzhledu redakčního systému je třeba přistupovat úplně jinak, než že vezmete připravené PSD a podle něj si připravíte čistou HTML šablonu. Rozhodně je lepší kódovat už přímo do šablony Drupalu a počítat se specifiky, třídami a ID, které Drupal generuje, případně si je upravit podle svého. Pozdější přejmenovávání tříd v CSS a případné úpravy výstupu některých funkcí, jsou daleko složitější, než když se s nimi počítá od začátku.

Z pohledu čtenářů/koncových uživatelů drupalovských webů existují výtky ke vzhledu. Weby s Drupalem je často poměrně snadné rozpoznat právě podle jejich vzhledu. Na druhou stranu, pokud máte dobrý návrh grafiky i funkcí, může být výsledek velmi zajímavý, viz například thevintageavi­ator.co.nz.

I přes pár drobných nevýhod je však Drupal solidním základem pro webové projekty. Díky tomu, že poskytne správu uživatelů a obsahu, se můžete zaměřit na funkce specifické pro váš projekt a netrávit čas tvorbou základní kostry.

Autor se řadu let zabývá softwarovým poradenstvím, školením a vývojem webových stránek nejen na Drupalu. O své zkušenosti se dělí na webových stránkách www.maxiorel.cz, kde najdete tipy na zajímavé programy a články o softwaru, programování a internetu.

Komentáře

Subscribe
Upozornit na
guest
28 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
fos4

V Drupalu jsem nikdy nedelal a tak mne prekvapil odstavecek o silne strance drupalu: sablonach – ktere jsou tvoreny pouze PHP soubory:

<h1><?php print $title;?></h1>

<?php print $content;?>
<?php print $footer;?>

Jak zde je reseno osetreni vystupu ?

Osobně mne to vůbec nepřijde jako nějaký sablonovaci systém (mozna je to moji neznalosti PHPTemplate).

smasty

Už som pracoval so šablónovacími systémami veľa rôznych CMS, ale tak dokonalý, ako je PHPTemplate som ešte nenašiel.

Celý základ spočíva v 2–3 súboroch, ktoré sú v praxi bežnými HTML súbormi, len samotný obsah (nadpis, slogan, menu, telo stránky, pätička) je nahradený sekvenciami PHP.

Navyše veľkou výhodou je, že vo väčšine prípadov sa dobre napísaná šablóna dá s malými zmenami použiť vo viacerých projektoch, aj s totálne odlišným vzhľadom.

Narozdiel napr. od WordPress šablónovacieho systému, ktorý sa skladá z cca 10 súborov, ktoré sú (hlavne pre začiatočníkov) riadne neprehľadné, pretože obsahujú niekedy dosť dlhé sekvencie čistého PHP kódu.

Pre mňa je Drupal najlepšou voľbou pre väčšie projekty.

Wordpress

„Narozdiel napr. od WordPress šablónovacieho systému, ktorý sa skladá z cca 10 súborov, ktoré sú (hlavne pre začiatočníkov) riadne neprehľadné, pretože obsahujú niekedy dosť dlhé sekvencie čistého PHP kódu.“

Tak na to musim rici, ze jste WordPress videl maximalne na 14″ monitoru, od ktereho jste stal cca 9 metru.

Jedna z vychozich sablon obsahuje 7 PHP souboru, z nich potrebujete sahat pouze do ctyr – index.php, footer.php, header.php a sidebar.php. Velikost tech sablon je cca 1 KB.

Kde jsou ty dlouhe sekvence cisteho PHP kodu?

Pro zacatecnika naprosto trivialni.

fos4

Ono i v PHPTemplate tohle nevypada vubec dobre:


<div class="commentnew) ? ' comment-new' : ''; print ($comment->status == COMMENT_NOT_PUBLISHED) ? ' comment-unpublished' : ''; ?> clear-block">

Na prvni pohled nemam ani predstavu co to dela.
Navic o tom autoescpapingu nikdo nic ?

fos4

Ah, uz mne odpovedel clovek nize..

d.f.h

Konkrétně v případě PHPTemplate jsou všechny proměnné v šablonách už ošetřené (starají se o to jednotlivé moduly, které šablonu proměnnými plní).

A kromě toho Drupal je modulární i co se týče šablonovacích enginů – defaultně jich má několik a není výrazný problém přidat další (viz jejich seznam) nebo si napsat vlastní.

fos4

A XSLT samozrejmne chybi :-)

Moduly přece nemuzou vedet jak s promenou nalozim, jestli bude jako hodnota attributu, v textareji nebo jen tak vypsana – vsude jsou jina pravidla.

d.f.h

Pokud něco chybí, je potřeba to dopsat :-)

Jan Pobořil

Běžné proměnné (vypadají jak globální) bají standardní HTML výstup. Ty, co neobsahují HTML kód (třeba popisky něčeho, hodnoty něčeho) jsou asociativní pole, kde jsou uloženy v různé podobě, například pro výpis v HTML, pro výpis v poli a samozřejmě surový původní text, který si můžu escapovat, jak chci.

Jan Pobořil

A pokud mi ani to nevyhovuje, můžu si nahradit jakoukoliv theme funkci (jsou jich desítky, někdy stovky, záleží na modulech) a napsat si vlastní.

Rdm

„Možná někteří z vás nebudou souhlasit, ale praxe dává za pravdu, že ke stylování vzhledu redakčního systému je třeba přistupovat úplně jinak, než že vezmete připravené PSD a podle něj si připravíte čistou HTML šablonu. Rozhodně je lepší kódovat už přímo do šablony Drupalu a počítat se specifiky, třídami a ID, které Drupal generuje, případně si je upravit podle svého.“

To je nesmysl. Nad výstupem redakčního systému musím mít 100% kontrolu a praxe ukazuje, že to lze.

Jakub Suchy

Ano, 100 % kontrolu mate a lze to. Ale praxe ukazuje, ze prace stravena nad necim takovym daleko prevazi benefit.

Erythros

Autor článku mi připadá, že trochu blábolí. Nemusí to být nutně jeho chyba, ale spíš fakt, že se v jednom jediném článku snažil popsat celý Drupal a vyšel z toho článek, kde popisujete to, co vás na Drupalu zaujalo.

Drupal má dvě významné nevýhody, které jsou výhodami: Je to modulární systém. Když se začátečník podívá na seznam modulů, zježí se mu všechny chlupy na těle. Je jich tolik a jejich funkce se natolik mísí a překrývají, že je velice obtížné se v té směsi orientovat. Po nějaké době se sice naučíte používat nejběžnější moduly nějakým konvenčním způsobem. Což ovšem neznamená,že je to nejlepší řešení vašeho problému.

Druhou výhodou/nevýhodou je systém nodů. Většina začátečníků si jej mentálně přejmenují jako článkový systém, protože jej nechápou – lépe nevidí – v celkovém obraze. A je pak pro ně těžší tuto představu opustit a používat Drupal podle toho, čím opravdu je – Lego, nebo pokud preferujete – Merkur.

Možná, pokud se chcete Drupalem na Zdrojáku zabývat více, by nebylo špatné vydávat seriál, který by čtenáře seznamoval s užitím skupin modulů k dosažení určitých cílů. Takové malé případové studie.

d.f.h

V tom případě se klidně hlásím a články pro Zdroják napíšu :-) Protože uváděné nevýhody povařuji naopak za obrovské výhody, které člověk naplno docení teprve ve fázi, kdy na Drupalu staví svůj desátý web.

Erythros

Proto jsem je také nazval nevýhodami/vý­hodami. Při učení a seznamování jsou dost dlouho nevýhodami než se stanou výhodami. Drupal má prostě trochu jinou učící křivku než třeba WordPress (což je samozřejmě úplně normální).

Jednoduchý systém byl třeba phpRS. U něj bylo vše jasné a de facto měl jediné možné použití. Kdo ho použil, byl spokojený. Kdo spokojený nebyl, tak ho nepoužil. U Drupalu tohle neplatí – můžete jej používat a svou nespokojenost vybíjet na úpravách instalace do skonání věků. Předpřípravených modulů a postupů na to máte dost.

Je i trochu ošemetné Drupal nazývat redakčním systémem, protože jím být může, ale v základu není. Zkratka CMS a její význam je trochu moc anglofonní pro neustálé použití a „systém pro správu obsahu“ zní v češtině strašně.

d.f.h

Přesně tak. Já osobně pro Drupal s oblibou používám zkratku CMF – Content Management Framework. Kromě čistě obsahových webů jsem v něm totiž dělal i e-shop, RSS agregátor, databázi produktů, systém pro centralizovanou správu webových formulářů… Ono v něm jde udělat v podstatě všechno.

Jakub Suchy

Zkuste se prosim vyhnout slovum jako „blabol“. Do slusne diskuse nepatri.

Mate nejakou referenci o druhe ne/vyhode o ktere pisete – nodech? Zatim jsem se s touto pripominkou nesetkal.

Daleko casteji bych zminil vyhodu/nevyhodu, ze Drupal je otevreny PHP system, tudiz (+) je velmi jednoduche ho pochopit zevnitr a (-) PHP laka hrozne moc lidi aby zasahovali do vnitrnosti systemu – hlavniho konceptu Drupalu – do not hack core.

Erythros

Drupal není ideální, jako žádný jiný CMS. Nečekejte od něj, že si několika kliknutími postavíte web jako je Zdroják, aniž byste měli alespoň základní znalost PHP.

Proč? Mně naopak připadá Zdroják – kromě pochopitelně šablony – jako celkem jednoduchý web pro Drupal.

Jan Pobořil

Pravda, funkčně stejný web bych měl asi za hoďku. Pokud tedy pominu tvorbu šablony.

Drupalista

No tak si schválne tipnite kolko modulov bolo pouzitych pre tento web: http://www.concernfast.org/

Matej

minimalne 50?

Drupalista

Vedle jak ta jedle. Pouzili cca 150 modulov. Dobre nie? :D

Almost 150 modules were used in the construction of the site.

Case study toho webu: http://drupal.org/node/629860

d.f.h

Nojo, ale není modul jako modul. Jsou monstra typu Views, CCK nebo Panels (ovšem bez nich se při jen trochu složitějším projektu prostě neobejdete), a pak moduly třeba jen s jedním hookem, zajišťující nějakou drobnost, která je ale moc fajn. Třeba modul favicon – kdo ho zná, už nechce jinak, přitom má dvacet řádků.

Takže 150 modulů zní možná hrozivě, ale není to nic neobvyklého. Třeba takový HDmag.cz má těch modulů 62 a je to vlastně jen takový docela normální webový magazín.

keff

Když už se tu píše o Drupalu, dal bych k dobru svou zaprášenou prezentaci o jeho architektuře (+ krátké představení): http://blog.tomaskafka.com/…e-drupal-cms

Jinak k tématům – nejlzdaleka nejlepší volbou mi přijde postavení na tématu Zen (http://drupal.org/project/zen), což je více než téma takový css+html+php framework pro témata, obsahuje rozumný css reset vestavěného css drupalu, a nad ním pak má výborně komentované styly a šablony, kam stačí doplnit vlastní kód.
Nejlepší začátek je stáhnout, přečíst readme, a ke zbytku vás navedou komentáře v kódu šablon a zakomentované ukázkové funkce.

Honza

Mám web se statickými stránkami a chci přejít na redakční systém. Ale část webu získávám jednou za den stažením již hotových stránek, takže ukládání do databáze nepřipadá v úvahu.
Jak se to dá řešit např. v Drupalu?
Díky moc

xoxoxo

Drupal zacal nedavno pouzivat i Whitehouse.org coz je pro autory asi velky uspech, taky jsem slysel ze Drupal vyhral nejaky umisteni co se tyka OS nebo CMS nevim, a umistil jsem v sini slavy, ale taky ze v nem bylo nalezeno uz desitky chyb :)

xoxoxo

whitehouse.gov :)

Jakub Suchy

Jedna se o CMS Award, Drupal ji vyhral jiz ponekolikate v rade: http://www.packtpub.com/award

Na poctu chyb (mluvime o bezpecnostnich?) nezalezi. Stejne tak ve wordpressu, Joomle, ve Windows, Firefoxu a dalsich programech. Nicmene je treba mit na pameti, ze existuje Drupal core – jadro a pak Drupal contrib – moduly a tech je 5000 (brezen 2010). Takove mnozstvi chyb v 5001 projektech je nahodou docela nizke cislo, ne?

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.