15.05.08 • 12 kommentarer
I skrivende stund er jeg i ferd med å ferdigstille webloggen til Friprog. Som flere ganger tidligere når jeg har designet for WordPress, har jeg savnet en funksjon for å markere hvilket menypunkt brukeren er inne på, for eksempel slik:

WordPress løser dette helt frem til mållinjen, dog uten å komme helt i mål. Som det fremgår av illustrasjonen over, ønsker jeg å vise menyen også med valget «Hovedsiden», samt en del andre sider som er opprettet som sider i WordPress. I WordPress finnes det en funksjon til bruk i temaene, som heter wp_list_pages som gjør dette for deg. Problemet med wp_list_pages er at denne funksjonen ikke genererer menypunktet «Hovedsiden», ettersom hovedsiden ikke er en egen side. Dette virker kanskje forvirrende, men har du arbeidet med WordPress forstår du (forhåpentligvis) hva jeg mener.
For alle de andre menypunktene WordPress lister ut, påføres klassen current_page_item på det aktive listeelementet. Koden som genereres av wp_list_pages vil for eksempel se slik ut:
(URL-ene er fjernet for lesbarhetens skyld)
Dette gjør deg i stand til å stilsette det valgte menyelementet for seg, slik at man oppnår designet vist over. Når WordPress derimot ikke lister ut «Hovedsiden» som et eget menypunkt, har vi heller ingen enkel mulighet til å stilsette dette menyelementet kun når det er valgt.
Som med så mye annet lar heldigvis også denne lille utfordringen seg løse ved hjelp av et lite hack.
I temaet finner du frem koden som lister ut sidene, eller menyen. Den pleier å befinne seg i filen header.php, ligger inne i <div id="header"> og ser normalt ut som følger:
Aller først legger vi manuelt til hovedmenyen selv. Tillegget er markert med fet tekst.
Flott, nå listes «Hovedsiden» som en del av menyen, men vi har fortsatt ingen mulighet til å sette på klassen current_page_item kun når vi befinner oss på hovedsiden.
Det neste vi gjør er å endre den siste kodelinjen vi la til, slik at vi lar WordPress identifisere hvilken side vi befinner oss på, og deretter påføre klassen current_page_item dersom gjeldende side er hovedsiden. Den endelige koden blir seende ut som følger:
Med denne metoden kommer vi helt i mål, også med hovedsiden. Som regel finner man løsningen på WordPress’ eget hjelpenettsted, eller man gjør som i dette tilfellet, kombinerer flere forskjellige løsninger.
Nå er det bare å vente i spenning til Friprog lanserer webloggen.
Geir: Det er noe som har utviklet en pakke med forskjellige html strukturer hvor du først kan leke med CSS og siden ha man en egen fil med temafiler hvor man da bare kan kopiere css filen over etterpå.
Martin: Du skal få en klasse til av meg – current_page_ancestor – du vil trenge denne hvis du legger til undersider som ikke vises i menyen, men likevel gi folk et hint om hvor de er på sida.
WordPress har jo allerede en WYSIWYG-editor, Geir, men du tenker kanskje for utvikling? Selv har jeg aldri forstått hvorfor noen sverger til WYSIWYG-editorer når de utvikler, ettersom man (naturlig nok) har langt større kontroll over koden med en tekst-editor. Men det er nå meg, da.
Jeg kom over current_page_ancestor da jeg søkte etter current_page_item, Kristin. Det er et smart tips.
På siden Hack WordPress finnes det et hav av lure tips og triks til slike ting!
Syns template-opplegget i WordPress er skikkelig grisete og lite intuitivt. Mange funksjoner genererer ferdige HTML-strukturer, og om du skal gjøre noe litt eget må du ofte til å hacke på plass template-hjelpere som returnerer rene data osv.
Hadde det ikke vært bedre om templatene hadde lettere tilgang til ren data istedenfor alle disse HTML-komponentene? Kanskje jeg bare ikke kjenner WordPress godt nok…
Jeg skjønner opplagt at koding er best, men det forutsetter en god del know how, og mange har verken nese eller tid til slike ting. Skal jeg fungere i Sverige, kan jeg godt bruke svorsk uten større problemer, men det tar lang tid å beherske det svenske språket. Jeg er desverre av de som bare har tid til å bruke svorsk. Paralellen til WYSIWYG er ikke så fjern…. Og ja, jeg tenkte til utvikling, ikke til skriving.
Med RSS kan du abonnere på nye kommentarer som postes til denne artikkelen.
Du kan legge igjen et trackback fra ditt eget nettsted ved å benytte trackback-adressen til denne artikkelen. Eventuelle tracback ser du under.
[...] (Mens vi venter på FriProg-bloggen] [...]
Enda flere artikler? Besøk arkivet.
Bekkelund.net er en blogg av Martin Bekkelund, hvor han lufter sine tanker om IT og IT-politikk. Martin arbeider til daglig som seniorrådgiver, foredragsholder og skribent i IT-bransjen, hvor han veileder bedrifter og organisasjoner i strategisk bruk av IT. Les mer...
© 1995-2012 Martin Bekkelund
Opphavsrett • RSS • Kontakt
Geir
15. mai 2008 7.37
Det er på grunn av dette jeg ønsker meg en WYSIWYG-editor for WordPress, og syns faktisk det er litt rart at det ikke er utviklet enda – men det viser igjen hvor lite peil jeg har på hvilke muligheter man har i koding/programmering.