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

Zdroják » PHP » Drupal: S čím přichází verze 7?

Drupal: S čím přichází verze 7?

Články PHP, Různé

Jeden z nejznámějších volně dostupných redakčních systémů (CMS) Drupal je v současnosti dostupný v šesté verzi. Vývojáři však pracují na nové verzi, která by měla být dostupná během několika měsíců. S některými novinkami, které přinese sedmá verze tohoto systému, se seznámíme v dnešním článku.

Drupal verze 6 vyšel již před více než rokem a půl, a od té doby se šíří po světě s nebývalým úspěchem. Po počátečním zaváhání kvůli čekání na některé důležité přídavné moduly je již každému jasné, že na svět přišlo opět vydání pravděpodobně nejlepšího webového PHP CMS na světě. Vývoj Drupalu 7 od té chvíle pokračuje vysokým tempem a díky prodlouženému vývojovému cyklu v něm opět nezůstane kámen na kameni (K revolučním změnám se vrátíme později, mnoho změn potěší hlavně překladatele).

Dnes se spolu podíváme na dosavadní změny v Drupalu 7 z pohledu vývojářů ať již jádra, či modulů. Změny to nejsou konečné a samozřejmě ani nestihneme popsat všechny, na to by nám nestačilo ani deset článků. Zájemci o kompletní výpis mohou sledovat release notes Drupalu 7.x-dev.

Javascript a mírně z uživatelského rozhraní

Drupal 7 upgradoval na jQuery 1.3.2 a jQuery Forms 2.21. Od minulého měsíce se také můžeme těšit z jQuery UI přímo v jádře. Co to znamená? Hlavně více možností pro interaktivnější rozhraní a již žádná nutnost instalace modulů pro jQuery UI. Drupal byl jedním z prvních CMS, který jQuery zahrnul v jádře, a troufám si říct, že mu tak pomohl ke slávě a velkému rozšíření.

SimpleTest aneb Kdo netestuje, ať nejí

Přidaný jaderný modul pro testy – SimpleTest, umožňuje psaní vlastních testů pro moduly, jejich spouštění a reporting. Samozřejmě – 99 % jaderných modulů je již pokryto testy, infrastruktura na drupal.org má vlastního testovacího robota, takže jakýkoliv jaderný patch se vám nepodaří prosadit, pokud nesplní testy.

Testy jsou velký příspěvek ke kvalitě kódu a konzistenci vývoje, což jen potvrzuje fakt, že Drupal nechává primárně blogovací systémy typu WordPress či systémy s břemenem minulosti typu Joomla! daleko za sebou a sebevědomě se vydává na pole enterprise systémů, které se nebojí nasadit takové společnosti jako Warner Brothers či americká vláda (recovery.gov).

Star Trek, The New Generation (tedy spíš DBTNG)

Hlavní autor DBTNG, Larry Garfield, se jasně inspiroval populárním sériálem a
vytvořil databázové API nové generace s obrovským množstvím funkcí.

Celé API je postaveno okolo PHP PDO. Podporuje master/slave MySQL konfigurace a v podstatě libovolný databázový engine. (Drupal nyní běží na SQLite! Co třeba ho provozovat na iPhone? Proč ne…)

Většina jaderných modulů byla přepsána tak, aby používala nové API s dynamickými dotazy. Dotaz již nyní není nějaký SQL string, je to plnohodnotný objekt, se kterým můžeme dále pracovat, místo dříve používaného (a někdy neobratného) parsování regulárními výrazy:

<?php
// SELECT ... FROM node n
$query = db_select('node', 'n', $options);
// LEFT JOIN user u ON n.uid = u.uid AND u.uid = 5
$table_alias = $query->join('user', 'u', 'n.uid = u.uid AND u.uid = :uid', array(':uid' => 5));
// Pole pro vrácení výsledku
$query->fields('n', array('nid', 'title', 'created', 'uid'));
// ORDER BY title DESC
$query->orderBy('title', 'DESC');
// LIMIT 5, 10
$query->range(5, 10);
?>

Nová generace databázového API také uvedla výchozí nastavení InnoDB enginu pro tabulky.

Field API v jádře

Kdo někdy použil Drupal, určitě ví, co je Content Construction Kit (CCK) – prostředek na efektivní vkládání nových políček typů obsahu. Představte si možnost vytvářet nejenom obsah s nadpisem a textem, ale i externími odkazy, soubory, obrázky, referencemi na
jiné uzly, select boxy či čímkoliv jiným. Existujících polí jsou stovky. Společně s Views je CCK pravděpodobně jednou z nejsilnějších zbraní Drupalu.

Mimo jiné na CCK se v předchozí verzi velmi dlouho čekalo, vzhledem k tomu, že byl přepsán skoro kompletní zdrojový kód. Proto se vývojáři rozhodli zařadit určitou formu CCK přímo do jádra, čímž vzniklo Field API. Má stejné možnosti jako CCK pro Drupal 6, je to však jen API, poskytující pole jiným modulům. Z CCK se v Drupalu 7 stane pouze uživatelské rozhraní pro Field API (pokud se samotné UI nedostane do jádra, což je možné).

RDF namespace registry

Drupal v jádru nyní obsahuje RDF namespace, viz screenshot:

drupal RDF screenshot

Je to opět ukázka náskoku, který Drupal oproti obdobným systémům má – v současnosti asi neexistuje jiný Open Source PHP CMS, který bude mít RDF v jádře.

Výkon a bezpečnost

Jako Drupal 6 představil Theme registry, Drupal 7 nyní uvede Code registry – registr všech implementací hooků z modulů, stejně jako všech dalších funkcí, který je v cache. To mimo jiné umožňuje použít lazy-loading techniku includování souborů a zrychluje celé načtení stránky. Weby trpící na Digg/Slashdot efekt budou nyní moci kompletně vypnout anonymní sessions a tak ušetřit další drahocenné milisekundy.

Bezpečnost Drupalu byla díky robustnímu API vždy výborná (o tom někdy příště), nicméně vinou vývojářů modulů se často objevovala XSS zranitelnost v modulech, které nesprávně používaly drupal_set_title(). Tato funkce nyní sama o sobě filtruje vstup, který jí přijde, proto již nehrozí nebezpečí od takto neznalých vývojářů.

Závěr

Změny, které jsme si naznačili, nejsou jediné, ve skutečnosti jsou jich stovky. Pokusil jsem se shrnout jen ty nejdůležitější a největší, které se zatím udály. S vývojem však není konec, oficiální „code-freeze“ je 1. září, můžeme se tedy stále těšit.

V příštím článku se pomocí mnoha screenshotů podíváme na změny z hlediska usability, což je hlavní téma současného vývoje.

Komentáře

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

Tedy jsem jen uživatel, sice jeden modul už jsem napsal, ale to byl jen
pokus. Jak jsem to tak četl, tak asi nový 7. ještě lelpší a bude stát za
to na něj přejít. Jediná nevýhoda se mi zdá, že napsané články, když
chci přesně v zobrazované podobě uložit do jiného webu, kde Drupal
neběží, tak je to dost pracné, k tomu by se asi hodil nějaký
konvertovací modul, možná časem další můj pokus :-)

Martin Malý

Co takhle použít nějaký nástroj pro offline prohlížení – HTTrack
nebo wget, nebo prostě uložit výsledné stránky „jako HTML“, a do
jiného webu je uložit tak?

Jakub Suchy

Ja bych pouzil modul Boost, ktery mi vygeneruje staticke HTML z kazde URL.
Pak jen odstranim vyprazdnovani teto cache, nebo prekopiruju cache adresar
spolecne s prislusnym mod rewrite…

David Majda

Je opravdu nutné se v článku informujícím o změnách v nové verzi
nějakého produktu na několika místech navážet do konkurence? Navíc na
základě pochybných argmentů, že Drupal začal používat testovací
framework a přidal někam deklaraci nějakého namespace? Vždyť to jsou
z pohledu uživatele úplně podružné funkce, které určitě nerozhodují
o tom, který CMS je nejlepší.

Aby bylo jasno, nic proti zdravé rivalitě – pochopil bych narážky
třeba v článku, který Drupal představje a srovnává, nebo kdyby byl
článek psán v lehčím duchu. Tady mi to ale vadí a nutí mě to
zaškatulkovat si autora jako zastánce jednoho pohledu na svět, od kterého se
nedovede ani na chvíli odpoutat, a další články od něj brát
s rezervou.

Mimochodem, k čemu přesně je běžnému uživateli Drupalu užitečná ta
deklarace RDF namespace? V článku to není nijak vysvětleno. A proč je pro
ostatní CMS nevýhoda, že ji nemají?

andb

To really see RDF in action, try installing https://addons.mozilla.org/…x/addon/3999,
a tool which analyses web pages via OpenCalais and returns RDF tagged key data.
With this plugin, turn on the Gnosis sidebar and try looking at any article on
http://reuters.com/. This tool isn’t matching
strings, its a natural language analysis, for example notice how it can find
foreign names that definitely aren’t in any database.

RDF is something really amazing and will play a more and more important role
as the web moves from a collection of pages towards a collection of facts. You
could call it the new SEO, but that is downplaying its importance. Essentially,
RDF is the key to machine reading of documents. The RDF tags are not just
attached the entire document but also to key elements in the document, such as
locations or companies in the texts.

In practice, using a system like http://www.opencalais.com/, you can write
an article (opencalalais currently understands only english and spanish) about a
company and automatically have it classify key info with RDF tags and via these
tags pull company facts from Wikipedia, its stock prices from another site,
photos about the company from flickr. As sites open their data to RDF it allows
for huge info mashups.

Sorry about writing in english, Im not Czech but wanted to help you
understand RDF a bit better.

From w3.org: The Resource Description Framework (RDF) is a language for
representing information about resources in the World Wide Web. It is
particularly intended for representing metadata about Web resources, such as the
title, author, and modification date of a Web page, copyright and licensing
information about a Web document, or the availability schedule for some shared
resource. However, by generalizing the concept of a „Web resource“, RDF can
also be used to represent information about things that can be identified on the
Web, even when they cannot be directly retrieved on the Web. Examples include
information about items available from on-line shopping facilities (e.g.,
information about specifications, prices, and availability), or the description
of a Web user’s preferences for information delivery.

David Majda

Thank you for your answer, but I wanted to know why is this important
for casual users of Drupal. I know what RDF is in general.

Given that RDF usage on the web is extremely infrequent, I was surprised to
find it among the selected improvements of Drupal 7 in this article. And I was
even more suprprised that the author bashed other systems which do not have its
support.

Shabbi

Samozřejmě, že běžného uživatele nezajímá nové API, testovací
postupy nebo používání RDF. Tady jsme ale na Zdrojáku a článek čtou
lidé, kteří se rádi podívají „pod kapotu“.

Jenom pořadí článků bych asi volil jinak – nejdříve nějaký
obecnější přehled a až potom pohled dovnitř. Takhle celému článku
rozumí pouze Drupalisté.

Ale autor o sobě sám píše, že je propagátorem Drupalu v ČR, takže
se dá určitá zaujatost očekávat :-)

David Majda

Samozřejmě, že běžného uživatele nezajímá nové API, testovací
postupy nebo používání RDF. Tady jsme ale na Zdrojáku a článek čtou
lidé, kteří se rádi podívají „pod kapotu“.

Argumentujete proti něčemu, co jsem vůbec neřekl. Mě nevadí, že se
v článku píše o testování a RDF v Drupalu, jen mi chyběla informace,
k čemu mi ten RDF namespace jako běžnému uživateli Drupalu bude – tj.
jaká byla motivace jeho přidání a use-case použití.

Ale autor o sobě sám píše, že je propagátorem Drupalu v ČR,
takže se dá určitá zaujatost očekávat :-)

Podívejte se na Karmiho
článek i frameworku Sinatra
 – byť je Karmi asi největší
propagátor Sinarty v ČR, z článku je cítit pouze nadšení, nikde
nevidím prohlašování, že Sinatra je nejlepší a napadání konkurence.
A už vůbec se to neděje na základě okrajových vlastností.

bodlinka

Aj ked to neni v jadre, tak je napr. v Joomle mozne RDF vyuzit.

Odkaz1: http://developer.joomla.org/…-joomla.html

Odkaz2: http://swm.deri.org/jsyndication/

Sice mnou vyssie uvedene neodporuje tvrdeniam v clanku, ale preco je to RDF
potom vopchate v jadre, ked je Drupal vraj len kostra pre moduly? Plynie
z toho nejaka vyhoda oproti tym CMS, co to v jadre nemaju? Osobne pre mna je
vacsia vyhoda mat to ako rozsirenie, modul. Ked to nepotrebujem, alebo s tym
neviem, ci tomu nerozumiem, tak to tam nemam.

Nenarazam, premohla ma zvedavost.

Borek Bernard

„Marketingový nádech“ mi taky vadí. Chápu, že má Jakub kolem
Drupalu postavený business, ale i tak…

Petr

Je API nové verze objektové?

JS

http://api.drupal.org/…s/oop.html/6

Tak zasadne se API nemeni, nicmene cim dal vic veci je objektovych. Napr.
nova jobqueue v D7 je cisty objekt, Views v contribu jsou objektove.

Martin

Drupal občas používám a s Wordpressem nebo Joomlou si nemají co
vyčítat.

Je to stejný bastl. Kód je sice kvalitní, ale koncepce žádná. Nikdo
neví, kam se vlastně směřuje. S každou verzí se přepisují mraky a mraky
kódu a ještě je to prezentováno jako výhoda. S příslušnými důsledky
pro velmi bolestivý upgrade.

„Holý“ Drupal je úplně k ničemu. Možná se hodí tak na velmi
jednoduchý blog. Na všechno se musí nainstalovat pluginy. Samozřejmě je
nutné vychytat vhodnou kombinaci pluginů, jinak se to pokazí. To pro laika
není žádná jednoduchá věc.

Většinou se jako první instaluje modla všech drupaláků: CCK. Když jsem
to viděl poprvé, tak jsem myslel, že omdlím. Větší klikačku jste
nezažili. A když se něco pokazí, nebo děláte podobný web? Klikáte
znovu, jak hlupáci.

Administrační část je kapitola sama pro sebe. Vždy se stydím, když
mám dát přístup klientovi. Jsou tam mraky zbytečností, které nikdy
potřebovat nebude. Ale přesto tam straší.

CMS z enterprise světa (např. RedDot) jsou postavené úplně jinak.
Drupal jim nesahá ani po kotníky a nikdy sahat nebude, protože ačkoliv se od
Joomly distancuje, je postavený na myšlenkových kořenech Mambo a phpNuke
(stejně jako WordPress a Joomla). Celý koncept CMS by se musel předělat a
začít přemýšlet zcela odlišně. Připomíná mi to bitvu KDE vs. Windows,
kdy KDE v podstatě Windows kopíruje a vlastní koncepci nemá. Oproti tomu
Mac OS X má svůj cíl a jde si za ním. A podle toho vypadá i skvělý
výsledek.

K takovému přístupu je ale potřeba vizionář, který má moc
rozhodnout. Nikdo takový v Drupalu není, vývoj se řeší plkáním a
demokracií. Tedy se vybere ne nejlepší řešení, ale takové, které
žádnému z vývojářů bez rozhledu nevadí.

d.f.h

Hlouposti, samé hlouposti.

Že je holý Drupal „k ničemu“, to je v pořádku. Je jen kostrou pro
moduly, kterých je nepřeberné množství a díky tomu lze na Drupalu postavit
jak jednoduchý blog, tak plnohodnotný e-shop, zpravodajský portál nebo
třeba digg klon. Pro každý účel se hodí něco jiného, takž je
v pořádku, že Drupal core nikomu nic nevnucuje.

Ohledně CCK, kterýžto modul je jedním ze „svaté“ trojice
CCK/Views/Panels, a jeho klikání: napadlo vás náhodou použít jeho
funkcionalitu export/import? Možná by vás pak tak nebolely karpální
kanálky.

Na Drupalu postavíte naprosto jakýkoli web – dovolím si to tvrdit,
protože v něm dělám všechny weby od té doby, co vyšla verze 5. Kód je
s každou dalšáí verzí lepší a je jen v pořádku, že se „stále
přepisuje“, i když to není tak docela pravda.

Drupal je prostě netriviální kus software a podle toho pak vypadají
výsledky jeho nasazení: pokud v něm umíte (a tím nemyslím umět klikat,
ale dělat si vlastní témata a moduly), vypadá váš web k světu. Pokud
ne… tak o to píšete na roota.cz :-)

Svoje reference (aneb důkazy mých tvrzení) rád poskytnu, sem do diskuse
nebudu dávat odkazy, aby mě někdo nenařknul ze spamování.

Lamicz

Že je holý Drupal „k ničemu“, to je v pořádku. Je jen
kostrou pro moduly“…
To je strašně pěkný, ale skoro 7MB na kostru?
To snad ne. phpBB 3 má 15MB, ale je to aspoň fórum :)). To jsou zase ty
systémy, které dělají z PHPka aplikaci… BTW nejvíc vždy pobaví
rozlišování verzí – stable a unstable, to mi připadá v případě PHP
poněkud… nadnesené…

Tomas

Kde jste prosim vzal 7MB? Rozbaleny D6.13 ma 4.8MB, z toho 1MB jsou temata
vzhledu a nezbytna grafika, efektivne tady mluvime o cca 3.5MB kodu.

Mark

Ha, kecy. Asi moc podrobne vývoj KDE nesleduješ. KDE má svoju koncepciu a
cieľ, aj keď po ňom nejde tak tvrdo ako Apple, pretože to nie je firma. BTW,
v čom konkrétne kopíruje Windows? Dcop, kio, kparts?

Mastodont

… Vývoj Drupalu 7 od té chvíle pokračuje vysokým tempem a díky
prodlouženému vývojovému cyklu v něm opět nezůstane kámen na kameni

Přeloženo z reklamštiny: Původní návrh je na draka, proto je nutné ho
neustále předělávat. (Jsem zvědav, kdy budou komentáře zařazeny mezi
uzly …)

$table_alias = $query->join(‚user‘, ‚u‘, ‚n.uid = u.uid AND
u.uid = :uid‘, array(‚:uid‘ ⇒ 5));

To bych viděl jako námět k předělání do osmičky.
Já Drupalu hodně fandím, ale tyhle neustálé změny jsou dost nešťastné
… na úrovni DB se ale rýsují zajímavé změny, viz http://groups.drupal.org/node/8001
a http://www.garfieldtech.com/…ery-builders.
Uvidíme.

blizz.boz

Nechcem sa zastávať systému Joomla, ale Joomla má test framework už
dávno. A okrem toho keď Drupal porovnám s profesionálnymi publikačnými
platformami typu MovableType tak mi celý tento neobjektívny článok pripadá
smiešny.

Tomas

K testovani v Joomle: http://docs.joomla.org/…sting_Status
prosim porovnejte s http://groups.drupal.org/node/9408

Pche

Předpokládám, že oba přehledy jsou ze stejného data … že? ;)

lzap

Okurková sezona rootu prospívá.

Tenhle byl nejlepší. Díky.

Drupal je lepší než

Tak to by mne zajímalo, jestli to měl být technický popis, uživatelské
seznámení, nebo PR článek. Moc se to ale nepovedlo.

A bavím se představou, jak autor provozuje server s drupalem na
iphone.

Asterixx

Clanek je PR a jako takovy mel byt oznacen.

Docela pekna studie o open source CMS je k dispozici na http://www.waterandstone.com/…etSurvey.pdf

Zajimal by mne nazor nekoho zkuseneho, ktery system z trojky Drupal, Joomla!
a WordPress ma nejlepe organizovany vyvoj a nejlepsi vyhlidky do budoucna.
Pripadne, ktery snadno a pouzitelne nabizi rozumnou funkcionalitu …

petiar

Chybovú hlášku: „Allowed memory size of XY bytes exhausted…“ ;-)

aaa

Ha, taku hlasku ma aj TYPO3 :-)

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.