Oldal útvonala menüvel és menü nélkül - Pathautoval

Feladat: egy webhely oldal típusú tartalmához útvonalat rendelni Pathautoval: ha van hozzá menüpont rendelve, akkor [menupath-raw] token alapján, ha nincs, akkor oldal/[title-raw] módon. Pathautoval egy tartalomtípushoz csak egy tokent lehet rendelni - készítsünk hát egy megfelelő tokent!
Alapvetően kétféle megoldás van token készítésére: írni egy picurka modult, ami a hook_token_list() és hook_token_values() függvényeket valósítja meg, vagy ügyesen használni a Custom Tokens modult. Nézzük ez utóbbit (a Token modult már úgyis használatba vettük a Pathauto miatt).
Az admin/build/tokens/create útvonalon hozzunk létre egy új tokent, mondjuk token_custom_oldal azonosítóval, tetszőleges leírással, tartalom típussal, és az alábbi kóddal:
if ($type == 'node') {
$values = node_token_values($type, $node);
if ($node->menu['mlid'] && !$node->menu['delete']) {
return $values['menupath-raw'];
}
else {
return 'oldal/'. $values['title-raw'];
}
}
(Rövid magyarázat: csak node típusnál keresgéljünk bármit is - ha a kód nem ad vissza semmit, úgy az alapértelmezett node/123 alakú útvonalat kapunk. A node_token_values() előszedi nekünk azokat az útvonal-elemeket, amelyekre szükségünk lesz. Ha van menüpont megadva, és nincs bejelölve a törlés jelölőnégyzet, akkor a menü szerinti útvonalat generáljuk, egyébként az oldal címe szerintit.)
A létrejött [token_custom_oldal] tokent adjuk meg az oldal tartalomtípusunknál az admin/build/path/pathauto útvonalon, majd teszteljük az eredményt - ami nem fogja a kívánt eredményt hozni: a perjelek kiesnek, ami gépek számára értelmezhetetlenné teszi az útvonalat.
A megoldás a token átnevezése: token_custom_oldal-path már megfelelő lesz. Mielőtt azonban a Token modulban keresnénk az okot, nézzük meg alaposabban a pathauto_clean_token_values() függvényt a pathauto.inc fájlban: láthatjuk, hogy ha egy token neve path, path-raw vagy alias végű, akkor a perjeleket nem távolítja el a token eredményéből - minden egyéb esetben igen. A trükktarisznya feltétlenül tartalmazza: az útvonalat generáló tokenek nevének a vége az, ami igazán számít!
- 1114 Budapest, Kosztolányi Dezső tér 12. II/1a.
- +36 20 3891634, +36 30 2995579
- info@kybest.hu
