Elsődleges menü eltüntetése adott path-on!

James53 képe

Sziasztok!

Szeretném, ha a Drupal-om bizonyos aloldalain egyszerűen ne legyenek engedélyezve az elsődleges menü elemei.

Hogyan tudom ezt elegánsan megoldani?

Egy opció megvillant bennem, de gyanítom ennél szebb megoldás is van. Ugye útvonalhoz tudok rendelni egy másik sminket a ThemeKey modullal. Így gondoltam replikálom a sminket és "kiírtom" belőle az elsődleges menük kiíratását. :) Tudom ne is mondjátok :(

Gondolom a template.php-ban is lehet ilyen előfeldolgozót betenni, hogyha bizonyos feltételek teljesülnek, akkor tűnjön el a menü. Valami jó kis modulos megoldás nincs ehhez?

Köszi előre is!

Drupal verzió: 
aboros képe

tegyük fel, hogy a 42 -es node megtekintésekor nem akarok elsődleges menüt.

<?php
function SMINKNEVE_preprocess_page(&$vars) {
  if (arg(0) == 'node' && arg(1) == 42) {
    unset $vars['primary_links'];
  }
}
?>

bevezethetsz erre mondjuk egy taxonómiát, ha az jelen van, akkor ne legyen menü vagy mondjuk egy sima on/off cck checkbox -ot és azt figyeled, ez már attól függ, hogy mi pontosan a munkameneted. ha mondjuk 3 fix ilyen nodeod van, akkor egyszerűen égesd a 3 nidet az ifbe. ha előre nlta, hogy hány lesz, akkor inkább valami jelölőt vennék fel a ttípusba.

0
0

-
clear: both;

pp képe

bár ez tényleg az amit kért az indító, mégis talán jobb lenne így:

 
  $vars['primary_links'] = array();

pp

0
0
Balogh Zoltán képe

A legtöbb smink (pl. garland), az isset()-et használja annak eldöntésére, hogy van-e elsődleges menü, vagy nincs. A fenti két változatban ez a vizsgálat eltérő eredményt ad, és ezért az utóbbiban átszalad az elsődleges menü a theme() függvényen egy üres tömbbel. Ez miért jobb?

0
0
pp képe

Ha nem nyúlsz hozzá akkor mindig van $primary_links, ha ki van kapcsolva akkor egy üres tömb. Tehát a garland is mindig belefut egy üres tömbbel.

http://api.drupal.org/api/function/template_preprocess_page/6

én az alap page.tpl.php-t néztem.

pp

0
0
aboros képe

de direkt meg is néztem a garland page.tpl.php -ját és hát láttam amit zoli is ír, hogy bizony isset -el vizsgál, ami hát üres tömbre true lesz mint a szél. ezért írtam az usnet. még ha FALSE -ra tolnám át, az is true lesz issetre, ha nem tévedek. csak az unset jó. ebben az esetben.

a régióknál van az, hogy simán ifel vizsgál és arra irtad asszem a multkor, hogy szerencsésebb, ha nem unseteljük, hanem falsera állítjuk, vagy nullra.

0
0

-
clear: both;

James53 képe

a nemvárt sikert :)
ez így nagyon kényelmes lett, köszönjük preprocesssz :)

És köszönöm a segítséget!

0
0

- Szabó Gábor -

"Előre minden élharcos, akinek a jelmondata az, hogy - amég élsz, alkoss"