Drupal 6.x-et hasznalok es a kovetkezo kod van a "page.tpl.php" fajlba:
if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array('class' => 'links', 'id' => 'navlist')) ?><?php }
Ez a kovetkezo tartalmat nyomja ki:
<ul id="navlist" class="links"> <li class="menu-146 first"> <a title="" href="/sajatoldal/node/1">Az elso link</a> </li> <li class="menu-147 first"> <a title="" href="/sajatoldal/node/2">Az masodik link</a> </li> </ul>
Namost en igy szeretnem kilistazni az adatokat:
<ul id="menu"> <li class="m1"> <a title="" href="/sajatoldal/node/1">Az elso link</a> </li> <li class="m2"> <a title="" href="/sajatoldal/node/2">Az masodik link</a> </li> </ul>
Regen drupal 4.x alatt igy oldottam meg (template.php hack):
function mytheme_primary_links() { $links = menu_primary_links(); if ($links) { $output .= '<ul id="menu">'; $i = 1; foreach ($links as $link) { $output .= '<li class="m0'.$i.'">' . $link . '</li>'; $i++; }; $output .= '</ul>'; } return $output; }
Ugyanezt meg tudnam csinalni Drupal 6.x alatt is ?
Koszonom!
Drupal verzió:
Fórum:
igen
Mi tart vissza attól, hogy az elsődleges linkeket ne a links, hanem az általad elkészített primary_links sminkelő függvénnyel jelenítsd meg?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
A problema az, hogy a
A problema az, hogy a menu_primary_links(), drupal 6-tol kezdve nem ugy mukodik ahogy elvartam. Szoval fogalmam sincs melyik helyetesitene.
Kerdezek okosabbat, megirtam
Kerdezek okosabbat, megirtam egy kodot:
Ahogy latszik probalom megkapni a linkek nevet, csak az a problema, hogy en nem tudhatom mindig melyik a menu, peldaul menu-146 (ez valtozik). Ezt hogyan tudnam megoldani ?
A kodom mar mukodne, kilistaza a class="m01" tagokat, csak a linkek nevet kene megkapjam a $links tomb segitsegevel.
nem értem
attól még, hogy nem tudod mik a kulcsok a tömbben, végig tudsz rajta iterálni nem? foreach ($links as $key=>$link){} az miért nem jó?
(figyeted, hogy iterálni? most tanultam, gyakorlom;)
-
clear: both;
Igen tudom de ez meg nem
Igen tudom de ez meg nem oldja meg a problemat. Drupal 6-ban a kovetkezo kod:
Ezt nyomja ki: ArrayArray (valoszinuleg azert ketszer, mert ket menu elemem van). Ez drupal 4.7 alatt kinyomja a menut ilyen formaban
Ugyanezt nem vagyok kepes megvalositani drupal 6-ban ha fejre allok sem!
Olvasd el még egyszer...
Olvasd el még egyszer Ádám válaszát különös tekintettel a foreach használatára.
Üdv: Zoli
igen ,probaltam igy de nem
igen ,probaltam igy de nem mukodik:
Az kimenet ez: ee
Szerintem nem iteracio problema van itt.
rtm
Itt user probléma van, el kéne olvasnod, hogyan működik a foreach, nem találomra próbálgatni különféle teljesen értelmetlen változónév-kombinációkat. Vagy ha nagyon nem szeretsz olvasni, próbáld ki:
theme_links()
csak egy tipp, de tulajdonképpen, ha jól értem be akarod sorszámozni a li tagokat.
a theme_links() -el meg tudod ezt csinálni.
http://api.drupal.org/api/function/theme_links
én azt csinálnám, hogy ezt a függvényt bővíteném még egy attribútummal és ha az true, akkor be is sorszámozom az elemeket... így:
aztán a page.tpl.php -ban így íródik ki a primary_links:
(eredetileg ugye az a TRUE nincs benne, azt most fűztük bele)
-
clear: both;
vagy ha az eredeti class nem kell...
akkor még sokkal egyszerűbben is meg tudod oldani, így:
template.php
ez kiszedi a menu-123 class -okat a li -kből és helyette item-1, item-2, item-3.. stb lesz. ha megfelel. ;)
-
clear: both;
primary_links sminkelő fv. hogyan?
Drupal 5-ben sikerült módosítanom a Primary links menüt egy template.php-ba tett themename_primarylinks nevű függvénnyel, a sminkben pedig elhelyeztem egy ilyet:
print theme('primarylinks', $primary_links, array('class' => 'links primary-links'))
De miért nem megy ugyanez Drupal 6-ban?
Előre is köszönöm a segítséget!
frissítetted a theme registry -t?
drupal 6 óta létezik ez a theme registry. ha új .tpl.php filet vezetsz be vagy új függvényt írsz a template.php -ba, akkor ürítened kell ezt a theme registry -t, hogy belekerüljön az új függvényed. ezt meg tudod úgy tenni például, hogy ellátogatsz az admin/build/themes oldalra és mentesz egyet.
amikor már létező függvényeket módosítasz, akkor nem kell ezt tenni, csak akkor mikor teljesen új függvényt vezetsz be.
-
clear: both;
igen
Igen, és annyi történik, hogy eltűnik a Primary links. De nem értem, miért!
Esetleg van egyéb ötleted?
Mindenesetre köszönöm az eddigi segítséged! :-)
látni kéne a kódot
be tudod ide másolni a SMINKNEVE_primarylinks függvényedet? meg esetleg a page.tpl.php vonatkozó részét?
ha nem úgy hívod meg, hogy theme('primarylinks', .. hanem SMINKNEVE_primarylinks -el hívod 'direktbe' akkor se csinálja?
ha belevarrsz egy drupal_set_message('WTF?'); sort a függvényedbe, megjelenik az üzenet?
-
clear: both;
Úgy megy
Igaz, a print sminknev_primarylinks($primary_links, array('class' => 'links primary-links')); -el megy, a theme-es hívással valamiért nem. Végülis így is jó, bár nem értem, miért nem megy! :-)
Eddig egyébként úgy oldottam meg, hogy az includes/theme.inc fájl theme_links függvényét írtam át. Így most legalább azt visszaállíthattam az eredetire.
Hálás köszönetem! :-)
elég a tréfából
Nincs olyan, hogy theme_primarylinks tehát hiába tolod be a függvényedet, ha nincs ilyen smink hook, hogy primarylinks.
A theme.inc-t módosítása meg LOL. Pláne, ha a theme_links függvényt módosítod, mert arra van a mechanizmus pont, hogy ilyet ne keljen. Egyszerűen létrehozod a sminkneve_links függvényt és kész is vagy.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
értem már
Már világos, köszönöm!
Meglepő számomra, mert Drupal5-ben volt ilyen.
Mivel nem minden linket akarok módosítani, ezért - nem theme hook-ként - továbbra is használom a függvényemet!
Még egyszer köszönöm mindkettőtöknek! :-)