Jak napsat vlastní modul pro Drupal - díl 4. - Odkazy

Dnes velmi krátce o tom, jak tvořit odkazy v modulech, případně snippetech.

Poznámka: Tento seriál vychází jako návod pro tvorbu modulů k Drupalu 5. Informace nejsou platné pro vyšší verze Drupalu.

Pokud generujete HTML kód či prostě jakýkoliv kód pomocí modulu v Drupalu, občas potřebujete odkázat na nějakou stránku. Můžete to udělat jednoduše napsáním:

<a href="http://stranka.com">text</a>

To ale není ideální řešení. Pojďme se podívat na to, jak to udělat lépe.

Pro tvorbu odkazů Drupal nabízí dvě API funkce. Obě se odlišují od ručního zápisu hlavně tím, že správně generují aliasy stránek. Stačí funkci předhodit odkaz na node/XYZ a ona Vám automaticky vrátí konkrétní alias. Nemusíte se tak o aliasy starat a nemusíte měnit odkazy vždy, když změníte alias (i když ani to byste dělat neměli).

l()

Funkce l() generuje přímo HTML kód odkazu. Její zápis je:

l($text, $path, $attributes = array(), $query = NULL, $fragment = NULL, $absolute = FALSE, $html = FALSE)

Na příkladech: Tento příklad ilustruje plné použití funkce. Zkráceně parametry:

// kod
print l('Stranky o Drupalu', 'http://www.drupal.cz', array('class' => 'mujodkaz'), 'debug', '#top', false, false);
// vysledek
<a href="http://www.drupal.cz?debug#top" class="mujodkaz">Stranky o Drupalu</a>

// kod - vsimnete si, ze vsechny parametry nejsou povinne
print l('Jizdni rady ve svete', 'http://www.timetables-world.com');
// vysledek
<a href="http://www.timetables-world.com">Jizdni rady ve svete</a>

// kod - interni link
print l('Clanek o blocich', 'node/1845');
// vysledek - plati pro drupal.cz
<a href="clanky/pro-webmastery/jak-napsat-vlastni-modul-pro-drupal-dil-3-bloky">Clanek o blocich</a>

url()

Funkce url() negeneruje HTML kód, ale pouze samotný text odkazu. Slouží pro kompletaci odkazu v případě aliasů, apod.

url($path = NULL, $query = NULL, $fragment = NULL, $absolute = FALSE)

Parametry jsou:

Opět příklady:

// kod
print url('node/1845');
// vysledek
clanky/pro-webmastery/jak-napsat-vlastni-modul-pro-drupal-dil-3-bloky

// kod
print url('node/1845', false, false, true);
// vysledek
http://www.drupal.cz/clanky/pro-webmastery/jak-napsat-vlastni-modul-pro-drupal-dil-3-bloky