A Drupal egyik apróbb problémája, hogy a felület nem nyújt lehetőséget szép, grafikus felső menüt összeállítani. Ezen könnyen segíthetünk egy megfelelő smink használatával. Vegyük a Marvin 2K sminket alapul, én annak a PHPtemplate-es változatából szoktam kiindulni.
Az ötlet a List Apartról származik. A lényege az, hogy CSS-el készítünk kliens oldali térképet, mégpedig úgy, hogy linkeket megfelelő méretre "felfújunk" és a helyükre tolunk. Ilyenkor a linkek szövege csak zavaró, ezért azokat eltüntetjük. Háttérnek pedig betesszünk egy képet, ami a menüt alkotó ikonok egymás mellé rakásából keletkezett.
A layout.css-ben a következő maradt meg a #main-nav -ra vonatkozó szabályokból:
#main-nav {
position: absolute;
left: 180px;
top: 53px;
margin: 0;
padding: 0;
height: 69px;
width: 435px;
}
A style.css-ben pedig ez:
#main-nav {
background: url(menu.jpg) no-repeat top left;
}
#main-nav li {
list-style-type: none;
float: left;
display: inline;
position: relative;
width: 86px;
}
#main-nav li a {
width: 86px;
height: 69px;
display: block;
text-decoration: none;
}
#main-nav a span {
visibility: hidden;
}
A phptemplate.engine-ben keressünk $links[$type][]
-re, és azt a sort cseréljük a következőre:
$links[$type][] = l(''. $value['text'][$i] .'', $value['link'][$i], $attributes);
?>
Ezzel készen is vagyunk. Természetesen nem biztos, hogy pont 5*86 széles lesz a menüképünk, változassunk a fenti CSS-en értelemszerűen. De mi van akkor ha netán nem egyforma szélesek a menüikonok? Vagy szeretnénk a hivatkozott List Apart cikkhez hasonló módon rollovereket is? Ekkor a fenti sor helyett a következő kettőt írjuk a phptemplate.engine-be:
$attributes['id'] = 'main-nav-link-'. $i;
$links[$type]['main-nav-list-'. $i] = l(''. $value['text'][$i] .'', $value['link'][$i], $attributes);
?>
És még a page.tpl.php-ben kell egy apró módosítás, keressünk ul id="main-nav"
-re, és cseréljük a következőre:
Így elértük, hogy minden egyes listaelemre és linkre egyedi azonosítóval hivatkozhatunk a CSS-ben: main-nav-list-0, main-nav-list-1 stb. illetve main-nav-link-0, main-nav-link-1 stb.
Hozzászólások
Ez jó. Sok ilyen cikk kellen
Ez jó. Sok ilyen cikk kellene. :)
nyomtatási nézetben nem jó
Nyomtatási nézetben nem jó a cikk megjelenítése, valószínűleg a kódrészletek miatt.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
5.x?
Üdv!
Szükségem lenne erre a funkcióra 5.x Drupal alatt, de a phptemplate.engine-ben nincs is már ilyen rész.
Tudna valaki segíteni? A lényeg, hogy a List Apart-os cikkhez hasonlóan, én is a beillesztésével takarnám el a link szövegét.
A Friendselectric témában is hasonlóval operálnak, de az is csak 4.7-eshez van meg. :(
Hogy lehetne ilyet előállítani?
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
theme_links
http://api.drupal.org/api/function/theme_links/5
ezt kell átírnod, és akkor minden links ilyen lesz.
Ha a primary, vagy secodary linkekeket akarod megváltoztatni, akkor erre nincs ugye szükség, hisz azokat úgy is Te állítod elő.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Primary-hoz kellene pedig :(
Üdv,
Pedig a primary/secodary-t szeretném így átalakítani.
Az alap primary links így néz ki:
<?php print theme('links', $primary_links, array('class' => 'links', 'id' => 'navlist')) ?>
Hogy tudom én ezt szétbontani? Gondolom a template.php-ban kell valami function-t rá írni. De mit?
Köszi, Pali
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
;) akkor egyszerű dolgod van
A cikk leírása alapján tudod ezt megtenni.
A $primary_links ugyanis egy tömb, és ezen kell szépen végigmenni. Ennek egy szép példáját látod az előbbi hozzászólásomban lévő linket követve a theme_links -nél (amit meg is hívsz itt!)
de kb:
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Majdnem tökéletes!
Majdnem teljesen tökéletes, de a különböző menüpontokhoz más-más css id-t kell használnom.
Ezért úgy kellene módosítani a kódot, hogy a
<li id="aliasneve">
-t kapjon.Köszi, Pali
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
A megoldás
Lehet, hogy van sokkal szebb megoldás is, de nekünk jó lesz :)
A megoldás feltételezi, hogy minden menünek van aliasa.
Köszi, Pali
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan