Kategorier
Tips og triks Utvikling

Flersidede innlegg i WordPress

Lag en enkel og fin sideliste i flersidede innlegg

Den siste tiden har jeg fundert på å legge ut en liten test av en bærbar datamaskin, men jeg følte at bloggen manglet en vesentlig ting – støtte for flere sider i det enkelte innlegg.

Etter en liten runde med Google, fant jeg fort ut at dette er støttet av motoren, men ikke alt var så flott som jeg ville ha det.

Bruken er enkel. Man redigerer HTML-en for innlegget sitt og legger inn en <!--nextpage--> (uten mellomrom her, altså!) hvor man vil ha et sideskille. I motsetning til <!--more-->-taggen, kan man bruke <!--nextpage--> flere ganger.

En annen løsning er hurtigtasten alt+shift+p, mens en tredje løsning er å redigere wp-admin/includes/post.php, søke opp «wp_more» og legge til «wp_page» i $mce_buttons-arrayet.

Funksjonen wp_link_pages(), som ser ut til å være den eneste funksjonen tilknyttet dette, lager bare en veldig enkel liste med sidene, men du kan for eksempel ikke få den ut som en HTML-liste (<ol>/<ul>). I tillegg var det ikke mulig å titulere sidene. Kort oppsummert var ikke støtten så alt for god, så jeg endte opp med å lage noe selv.

Jeg laget en funksjon kalt wp_post_page_list() i functions.php som gir deg en fin organisert liste (<ol>) om innlegget har flere sider. Den tar også utgangspunkt i at det eksisterer et <h[1-6]>-element rett etter <!--nextpage-->-deleren, som da blir benyttet som sidetittel.

I bruk er den enkel: <?php echo wp_post_page_list(); ?>

Man kan også få en egen knapp i editoren for å skille, altså lage sider. Denne vil havne ved siden av knappen som brukes til å lage et såkalt «mer-skille», også brukt til ingress/utdrag. Hvordan man gjør dette, finner du på neste side. Kildekoden for funksjonen wp_post_page_list() er på siste side 🙂

Kategorier
Utvikling

Google Chrome / Chromium + Sparebank 1 + BankID

Google Chrome, Sparebank 1 og BankID

Noen har kanskje fått det med seg fra før av, men jeg gjentar gjerne. I lang lang tid har jeg irritert meg over blant annet treg innlogging i Sparebank 1 sin nettbankløsning fra Firefox, samt en ikke-tilstedeværende støtte i Google Chrome.

Etter en del feilsøking i det siste, har jeg kommet frem til at dette skyldes bruk av den utdaterte <applet>-taggen for å laste inn BankID-appleten. Jeg har nylig informert Sparebank 1 om dette, og forhåpentligvis får de byttet om og tatt i bruk <object>-taggen i stedet. Inntil videre kan man benytte seg av en flott utvidelse til Google Chrome / Chromium, tilfeldigvis utviklet av undertegnede.

Utvikling av utvidelsen førte til tider til massivt hårtap, spesielt når bruk av JavaScript-rammeverk viste seg å være umulig grunnet restriksjoner på <applet>-elementet i DOM. Dette førte til at alt måtte skrives med native JavaScript, og en del, la meg kalle de "fiffige", løsninger ble brukt. Blant annet regex-parsing av ren HTML for å hente ut attributter. I tillegg til at den beholder alle attributter og eventuelle underelementer av typen <param>, legger den til attributten «type», med verdien «application/x-java-applet».

Uansett, den fungerer i nettbanken til Sparebank 1. Den er skrevet generisk, så den bør fungere på andre nettsider òg, men dette er en tidlig utgave og er neppe 100% feilsikker. Forhåpentligvis skaper den ikke problemer på andre sider som fremdeles bruker <applet>-taggen (dessverre er det en del).

Utvidelsen har fått det populærtekniske navnet «Applet2Object» og er å finne her: https://chrome.google.com/extensions/detail/djgfnbkiakemcmleeihmdngpamaknnem

Oppdatering: om noen er interessert i å se hvor lite kode som hadde vært nødvendig ved bruk av jQuery, er dette å finne her. Det fungerte i en periode og på enkelte sider, men ikke hos Sparebank 1.