minden menüponthoz egyedi fejléckép

Szotyi képe

Sziasztok!

Az a kérdésem van, hogy lehetséges-e az, hogy főmenüpontonként a fejléckép mindig más és más legyen. Tehát lenne 6-7 főmenü, s minden menüponthoz tartozna egy fejléckép, amit mindig cserélgetne valahogy a drupal.
Merrefelé induljak el?

Üdv: Péter

Drupal verzió: 
Fórum: 
Phoere képe

Én a smink template-jébe nyúlnék bele. Ott megkeresném azt a sort, ahol a fejléckép megjelenítése történik és ez elé betennék egy php-programocskát. Ez azt vizsgálná, hogy melyik node kerül betöltésre és ennek nid-je alapján jelenítené meg a kívánt kép. A beírt programpélda persze nem pontos, de elindulhatsz vele.

If ($nid == "1") {
$fejleckep = "kep1.jpg";
}
else If ($nid =="2") {
$fejleckep = "kep2.jpg";
}
stb.
És utána jön a fejléc megjelenítés, ahol a $fejleckep változót írod az img paramétereként.

0
0

Csökönyi Ferenc

csg képe

A *.tpl.php fájlokba nem elegáns ilyen szintű logikát tenni, erre a smink template.php fájlja való (arról nem is beszélve, hogy a fejléckép jó eséllyel egy div css-sel beállított háttérképe lesz, és nem img tag-gel lesz betéve, hogy rákerülhessen a logó, meg a menüpontok, stb).

Szerintem erre a legjobb megoldás a template.php-ben a page preprocess függvényben a body class-hoz hozzátenni valami menüpont-azonosítót, és azt megcélozni css-ből. Vagy tud valaki jobbat?

0
0

--
Csonka Gergely
http://cheppers.com

szantog képe

Én most fogok ilyet csinálni.
node-ban egy filefield-en keresztül lesz feltölve a kép, és az lesz kitolva fejlécnek a page.tpl.php-ba.
preprocess_page + egy kis tpl varázslat és megvan.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

aboros képe

hogy a tavalyelőtti drupal hétvégén a sminkes előadásomba ez volt az egyik példa ;)

0
0

-
clear: both;

Den képe

hogy az első DDN-en az előadásomban ez volt az egyik példa. D7-en. De az elv, azonos.

0
0
aboros képe

szegedi kolegákkal tartottuk az orjási brénsztorm akkor.

0
0

-
clear: both;

Phoere képe

OK, igazad van, de a megoldás alapja valószínűleg egy ilyen php-kód lehet, legfeljebb a feltételrendszer kimenetét kell hozzá kitalálni, illetve a megfelelő helyre kell beágyazni.

Egyébként menüpont azonosítót kitalálni felesleges, mivel minden menü egy node-ra mutathat csak, annak pedig van kész azonosítója. Tehát betöltéskor csak ezt kell lekérdezni.

0
0

Csökönyi Ferenc

csg képe

...minden menü egy node-ra mutathat csak...

Ez nem így van, ott van például a kapcsolat űrlap, a views oldalak, vagy bármi más, ami valamilyen modulból jön.

0
0

--
Csonka Gergely
http://cheppers.com

Szotyi képe

Ezt a "preprocesses" dolgot nem hinném, hogy meg tudom csinálni, mert annyira nem értek hozzá.
Azt viszont meg tudom csinálni, hogy a teljes fejléc egy blokk legyen, s a blokkba ugye be tudok tenni egy képek, akár php kódokkal.
Na most azon gondolkoztam, hogy ha ki tudnám nyerni valahogy a node idjét-t, (vagy az útvonalát) akkor ennek az értéknek megfelelően rakná ki a megfelelő képet. Ez is jó út lehet, nem?
S a fő kérdés, hogy ezt milyen php kóddal lehet megtudnom?

----
Bocsi, utólag néztem, hogy az első hozzászólásban ott a kód is:
If ($nid == "1") {
$fejleckep = "kep1.jpg";
}
else If ($nid =="2") {
$fejleckep = "kep2.jpg";
}

0
0

Péter

aboros képe

hány darab van? mik azok? nodeok? nézetek? a fejléc háttere kell változzon adott főmenüre? mennyire biztos, hogy holnapután nem lesz még egy főmenü vagy hogy nem kell e majd háttérkép bármelyik menüre?

kb ezektől függ, hogy mi az optimális út.

0
0

-
clear: both;

Phoere képe

Csak előtte definiálnod kell a $nid-et

global $nid;

Tényleg attól függ az optimális megoldás, hogy milyen felépítésű a menürendszered. Ha minden menüponthoz egy node tartozik, akkor ez az út járható.
Még háttérképnek is meg tudod oldani, ha az If feltétele rendszer kimenete egy beágyazott CSS stílust vezérel, ezzel felülírva a smink template-nek beállítását, és itt a background-image értéke változik.

0
0

Csökönyi Ferenc

Den képe

Ezt a "preprocesses" dolgot nem hinném, hogy meg tudom csinálni, mert annyira nem értek hozzá.

A preprocess lényege: mielőtt a drupal kirakná a html-t az adatbázisból kinyert adatokat módósíthatod (az most lényegtelen, hogy a node adatokat cck mezőstől a rendszer szedi elő, vagy egy views). Mindig van bizonyos preprocess függvény, ami használható: http://drupal.org/node/223430

Egy elő példa: adtam a tartalom típusokhoz egy field_page_header_image nevű kép mezőt.

Ennek a képnek kell adni egy imagecache preset-et (pl: header_image 960x200px).

Ez a mezőt meg is oszthatod több tartalom típus között. Sőt.

Ezután csinálsz egy page preprocess függvényt a template.tpl-ben.

function themename_preprocess_page(&$vars, $hook) {
  $node = $vars['node'];
  $vars['header_image'] = $header_image = null;
 
  if ($node->type == 'page') {
    $header_image = $node->field_page_header_image[0]['view'];
  }
 
  if ($header_image) {
    $vars['header_image'] = $header_image;
  }
}

Ezután a page.tpl-ben lesz egy $header_image nevű változód ($vars['header_image']-be raktad!) ami elméletileg egy db képet fog tartalmazni.

Ezután, ha van a $header_image változódban valami, akkor kiíratod: (feltételeztünk, hogy $header_image renderelt html elemet tartalmaz "<img src="-vel kezdődik)

<div id="page-top">
   <?php if ($header_image): ?>
     <?php echo $header_image;?>
   <?php else: ?>
     <div style="height:100%; background-color:red;">&nbsp;</div>
   <?php endif; ?>
</div>

Kb, ennyi a váza az egésznek. Erre felépítve meg lehet csinálni egy kis odafigyeléssel szépen az egészet.

Ha az kell, hogy url függő legyen a header, például nézetek eseték, akkor azt szintén a page_preprocessbe tenném.

0
0
gazsesz képe

És még olyan is van, hogy image menu, itt ni http://drupal.org/project/imagemenu.

0
0

Gazsesz