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

CSÉCSY László's picture
in

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!

Syndicate content