Hlavní navigace

Vychází Drupal 7 s entitami a hromadou testů

Jakub Suchý

Po několikaletém úsilí, díky přispění více než tisícovky vývojářů, byl 5. ledna 2011 vydán Drupal 7. Nová verze oblíbeného redakčního systému přinesla řadu novinek, které ocení jak běžní uživatelé, tak i programátoři. Přichystáno je 28 000 testů, podpora entit, přepracovaná práce se soubory a mnoho dalšího.

Drupal 7 rozvíjí své tradičně silné stránky – flexibilitu a škálovatelnost – a přidává k nim přívětivost frontendu a administrace i pro méně technicky založené uživatele. Laicky řečeno, Drupal 7 nejenže dobře funguje, ale oproti Drupalu 6 podstatně lépe vypadá.

Požadavky a podpora databází

Drupal ve verzi 7 běží na skoro libovolném webserveru (Apache, Lighthttpd, Microsoft IIS) a vyžaduje PHP 5.2.x či PHP 5.3 (staré PHP 4 již není podporováno). Drupal 6 podporoval MySQL či PostgreSQL. Protože byla v Drupalu 7 kompletně přepsána podpora databází a Drupal nyní používá PHP PDO, je mezi podporovanými databázemi Oracle, MS SQL či SQLite (co takhle Drupal na iPhone či na CD, které pouze spustíte s jednoduchým webserverem?).

Testovací framework

Kromě důkladného uživatelského testování byl celý vývoj Drupalu 7 spojen s automatickým testováním, které poskytuje integrovaný Simpletest. Platilo jednoduché pravidlo – pokud to má být v jádře, musí to mít test. Výsledkem je vydání s 28 000 testy. Pro zajímavost, průběh všech testů na průměrném stroji trvá 30 minut a pro qa.drupal.org tuto funkcionalitu zajišťuje více než 10 strojů.

RDF

Hybatelem posledních let je sémantický web a mikroformáty. Proto Drupal 7 jako jeden z prvních CMS v jádře přidává podporu pro RDFa 1.0.

Škálovatelnost

Již v základním jádře je nyní dostupná podpora pro master/slave replikaci databází – můžete nadefinovat více přístupů k různým replikám databáze a poté určité typy SQL dotazů automaticky směrovat na Slave repliky místo zatíženého originálu. Všechny soubory (CSS, JS, přílohy) je díky first class objektům automaticky uživatelům předávat z libovolné CDN (funkcionalitu dříve zajišťoval modul CDN). Líné (lazy) sessions poté zajišťují možnost postavit před Drupal statickou cache jako např. Varnish nebo nginx – tato funkcionalita byla předtím dostupná pouze pomocí speciální verze Drupalu 6, Pressflow.

“Everything is fieldable”

Při vývoji Drupalu 7 se záhy objevil nepřeložitelný slogan “everything is fieldable”, který, uveden do praxe, má velký dopad na flexibilitu tvorby obsahu.

Drupal 6 pracoval s vlastními typy obsahu, do kterých bylo možné přidat nová tzv. pole (fields) přes populární modul Content Construction Kit – CCK. CCK tak rozšiřuje základní jednotky obsahu (v Drupalu tzv. uzly) o možnost přikládat obrázky, další texty, select boxy, checkboxy apod. (efektivně tak tvoříte formuláře pro vkládání dat).

Drupal 7 integruje podporu pro takzvané entity. Entita je cokoliv, co reprezentuje nějaký obsah, např. uzel, kategorie nebo třeba komentář. Můžete říct, že entita je jiné jméno pro uzel či komentář, ale zatímco v Drupalu 6 byly všechny dané termíny oddělené, v Drupalu 7 jsou to vždy entity, ke kterým existuje jeden interface a se všemi je možné (v kódu) dělat totéž. A protože Drupal vždy zajišťuje API pro své rozhraní, vy jako programátor si můžete definovat vlastní entity. Pro příklad – Drupal Commerce balík pro Drupal 7 integruje položky faktury jako entity.

Tím jsme se oklikou dostali k podstatě změny, která nastala v D7: pole (field) je nyní možné přidat k jakékoliv entitě. Všimněte si důležitého rozdílu – verze 6 omezovala pole pouze na uzly, nyní je možné je přidat k entitám. Jakákoliv vámi navržená pole (popisky, obrázky, kritéria pro filtrování apod.) tak můžete přidat k taxonomickým kategoriím, komentářům, uživatelům…

K výše zmíněné podpoře databází přidávají pole svou dávku nových technologií. Fields je možné ukládat do noSQL databází jako MongoDB či Cassandra. V praxi to předvedl např. Examiner.com, který běží na Drupalu 7 s MongoDB.

Práce se soubory

Drupal téměř odjakživa podporoval práci s přílohami, a to buď pomocí veřejného nebo privátního filesystemu (privátní přístup umožňoval automaticky generovat odkazy na přílohy přes speciální wrapper, který k souboru ověřil přístup). V nové verzi je podpora souborů kompletně přepsána a soubor je klasický First-class objekt (v komunitě ho nazýváme 1st class citizen) s podporou PHP stream wrapperů, pomocí kterých lze velmi jednoduše implementovat ukládání do vzdálených lokací (jako třeba Amazon S3 nebo Flickr).

Společně s first-class objektem pro soubory a Fields v jádře bylo do jádra přesunuto pole pro obrázek (dříve modul ImageField) společně s novými styly obrázků (dříve ImageCache) – rovnou z jádra můžete nahrávat obrázky k uzlům a tvořit jejich styly. Pro neznalé Drupalu je styl něco jako předpřipravené nastavení zobrazení obrázku. Představte si, že vytvoříte styl “Náhled” s velikosti 100×50 pixelů a styl “Střední” s velikosti 400×300 pixelů. Poté v galerii dáte zobrazit Náhled a po kliknutí Střední velikost. Drupal automaticky při zobrazení jakýkoliv nahraný obrázek zmenší na danou velikost – originál zůstane, zobrazí se pouze zmenšený náhled, který se uloží na systém a každé další zobrazení již použije daný soubor místo generování obrázku znovu. Kromě změn velikosti je možné dělat další změny jako oříznutí, rotaci, vodoznaky, kulaté rohy či další akce, které si můžete naprogramovat.

Příjemné a flexibilní rozhraní

Drupal 7 přichází s novou výchozí šablonou vzhledu (Bartik) i s novou administrační šablonou (Seven). V jádře je navíc připravena i šablona typu “starterkit” (Stark), na které se lze snadno naučit odvození vlastní šablony (toto nasměrování v Drupalu 6 chybělo a začátečníci často chybovali úpravou hotových šablon, namísto odvození vlastní verze). Při tvorbě šablon se kladl velký důraz na přístupnost (blíže viz http://drupal­.org/about/ac­cessibility).

Administrační rozhraní pokračuje v trendech Drupalu 6: k požadované funkci je třeba dostat se bez zbytečného klikání. Stejně jako v Drupalu 6 je maximum věcí přístupných přímo z veřejné části webu, bez nutnosti přepínat na stránku administračního panelu. Tímto způsobem je možné editovat nejen obsah, ale také bloky a menu. Kromě toho je na všech stránkách webu k dispozici administrační lišta (v D6 se musela doinstalovat). Novinkou je sekundární nástrojová lišta pro často používané cesty, kam si může uživatel přidat vlastní zkratky, a uživatelsky nastavitelný kontrolní panel, na který si lze navolit pouze vybrané bloky nástrojů.

Render API

Standardní postup v případě Drupalu 6 bylo přetížit šablonovací funkci a vytvořit si tak vlastní HTML výstup. Odteď je vše generováno pomocí Render API, které zobrazuje jednotlivé části stránky v menších kusech a umožňuje detailnější změny.

Drupal Gardens: i lama může být zahradníkem

Kromě již zmíněného Examiner.com a dalších zajímavých webů si nenechte ujít prohlídku Drupal Gardens – tato aplikace potěší zejména neprogramátory a příznivce webů, které je možné postavit naklikáním za jeden večer. Stačí si vybrat potřebné funkce a šablonu, kterou si v grafickém rozhraní můžete nastavit, upravit barvy, rozložení prvků, fonty písma i další vizuální vlastnosti (de facto tak můžete vytvořit zcela vlastní vzhled včetně zakomponování vašich obrázků). Pokud časem budete chtít vytvořit podobnou stránku, nemusíte začínat znovu, ale můžete své dílo pouze zduplikovat (3 kliknutí myší včetně rozbalení nabídky možností) a pozměnit dle potřeby. Kdybyste časem zjistili, že by vašemu webu slušel programátorský zásah na míru, můžete na svou práci plynule navázat, se zachováním všech dat (export je ale náročnější – i s uložením do počítače 4 kliknutí :-)). Na rozdíl od řady jiných aplikací, kde lze také vytvořit “rychlý” web, zde máte plnou kontrolu nad tím, co jste vytvořili, a můžete své dílo bez ztráty přenést do jiného prostředí a dále vyvíjet.

Užitečné odkazy a Drupal 7 v akci

Našli jste v článku chybu?

9. 1. 2011 22:27

Smokie (neregistrovaný)

Ano, to som bol ja. Ten kto tu otazku polozil. :) Nechcelo sa mi verit, ze by Drupal urobil taku hlupost, tak som si to radsej isiel overit.

Nechapem preco ostatni na moju otazku reagovali ked uz bola zodpovedana.

9. 1. 2011 13:55

Uz v prvni odpovedi nekdo rekl, ze to je spatna formulace a MySQL samozrejme JE podporovana. Nechapu jak dokazeme stravit dalsich 5 prispevku nad tkaovou veci :)

Vitalia.cz: To nejhorší při horečce u dětí: Febrilní křeče

To nejhorší při horečce u dětí: Febrilní křeče

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

Root.cz: Nová třída SD karet A1 s vysokým výkonem

Nová třída SD karet A1 s vysokým výkonem

DigiZone.cz: SES zajistí HD pro M7 Group

SES zajistí HD pro M7 Group

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: V Plzni odstartovalo Radio 1

V Plzni odstartovalo Radio 1

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Exekuční poradna: ptejte se online

Exekuční poradna: ptejte se online

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu

Lupa.cz: Obchod budoucnosti je bez front, košíků i pokladen

Obchod budoucnosti je bez front, košíků i pokladen

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie