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

Jakub Suchý 6. 1. 2011

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ů.

widgety

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?
Lupa.cz: Co všechno je Facebook schopný cenzurovat?

Co všechno je Facebook schopný cenzurovat?

DigiZone.cz: Další programatické formáty

Další programatické formáty

Vitalia.cz: 5 důvodů, proč jet na výlov rybníka

5 důvodů, proč jet na výlov rybníka

Root.cz: Podívejte se na shořelé Samsung Note 7

Podívejte se na shořelé Samsung Note 7

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

DigiZone.cz: Parlamentní listy: kde končí PR...

Parlamentní listy: kde končí PR...

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Vitalia.cz: Nová vakcína proti chřipce se aplikuje nosem

Nová vakcína proti chřipce se aplikuje nosem

DigiZone.cz: Budoucnost TV vysílání ve Visegrádu

Budoucnost TV vysílání ve Visegrádu

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Vodárny varují: Ve vodě z kohoutku jsou bakterie

Vodárny varují: Ve vodě z kohoutku jsou bakterie

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma