Connector propi de VikiTaldia. Fa que les pàgines exportades amb do=export_xhtml es vegin bé al mòbil: el text es redistribueix a l'amplada de la pantalla, en lloc d'encongir-se tota la pàgina com si fos una imatge.
| Nom | Valor |
|---|---|
| Carpeta | lib/plugins/exportviewport/ |
| Classe | action_plugin_exportviewport |
| Tipus | Connector d'acció (action plugin) |
| Autor | A. Moseguí / TT22 |
| Data | 14-10-2026 |
| Versió de DokuWiki | 2025-05-14b «Librarian» |
L'app Taldia obre el relat sencer de cada notícia a VikiTaldia amb el sufix &do=export_xhtml, que dona la pàgina sense la interfície de la wiki (menú, barra lateral, eines). Per exemple:
https://vikitaldia.tt22.cat/doku.php?id=tema:cat:pau_casals-i_am_a_catalan&do=export_xhtml
La pàgina exportada no porta l'etiqueta <meta name=«viewport»>.
xhtml munta el <head> a mà (inc/Action/Export.php). Només hi posa <meta charset=«utf-8» />, el <title> i el que afegeix tpl_metaheaders().tpl_metaheaders() (inc/template.php) només afegeix generator, robots, theme-color i keywords. No afegeix cap viewport.lib/tpl/dokuwiki/main.php). L'exportació no fa servir la plantilla, i per tant se'l perd.Sense viewport, el navegador del mòbil dibuixa la pàgina en una finestra virtual més ampla que la pantalla (per exemple de 980px) i després l'encongeix fins que hi cap. Al navegador de l'ordinador no hi ha aquesta finestra virtual, i per això allà es veu bé (MDN – viewport).
L'exportació xhtml crida tpl_metaheaders(), i aquesta funció llança l'esdeveniment TPL_METAHEADER_OUTPUT abans d'escriure les metadades. El connector s'hi enganxa:
export_xhtml, afegeix <meta name=«viewport» content=«width=device-width,initial-scale=1»>. És la mateixa etiqueta que posa la plantilla a les pàgines normals;No toca el nucli de DokuWiki ni la plantilla, i per tant sobreviu a les actualitzacions.
Abans de fer-lo es va buscar al catàleg de DokuWiki si n'hi havia cap que ja ho fes:
| Connector | Per què no serveix |
|---|---|
| metaheaders | Només actua quan l'acció és show (if ($ACT != 'show' || !page_exists($ID)) return;). Amb do=export_xhtml no fa res |
| htmlmetatags | Les etiquetes s'escriuen dins de cada pàgina ({{htmlmetatags>…}}): caldria posar-les a mà a totes. La compatibilitat amb les versions de DokuWiki a partir del 2018 hi consta com a «unknown» |
| mobiletable | Només adapta les taules al mòbil |
Dos fitxers, a lib/plugins/exportviewport/.
base exportviewport author A. Moseguí / TT22 date 2026-10-14 name Export Viewport desc Afegeix l'etiqueta meta viewport a les pàgines exportades amb do=export_xhtml, perquè al mòbil el text es redistribueixi en lloc d'encongir-se.
<?php /* * -- nom: action.php -- * -- connector: exportviewport (DokuWiki) -- * -- autor: A. Moseguí / TT22 -- * -- descripció: Afegeix <meta name="viewport"> a les pàgines exportades amb * do=export_xhtml. * * Per què: l'exportació xhtml munta el <head> a mà (inc/Action/Export.php) * i no passa per la plantilla, que és qui posa el viewport a les pàgines * normals (lib/tpl/dokuwiki/main.php). Sense viewport, el mòbil dibuixa la * pàgina en una finestra virtual ampla i l'encongeix com si fos una imatge. * * Com: l'exportació xhtml crida tpl_metaheaders(), que llança l'esdeveniment * TPL_METAHEADER_OUTPUT abans d'escriure les metadades. Aquí s'hi afegeix * el viewport, NOMÉS si l'acció és export_xhtml: les pàgines normals ja el * porten de la plantilla i no s'ha de duplicar. * * L'etiqueta és la mateixa que posa la plantilla dokuwiki. -- */ use dokuwiki\Extension\ActionPlugin; use dokuwiki\Extension\Event; use dokuwiki\Extension\EventHandler; class action_plugin_exportviewport extends ActionPlugin { /** * Enganxa el gestor a l'esdeveniment de les metadades del <head>. */ public function register(EventHandler $controller) { $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'addViewport'); } /** * Afegeix el viewport a les metadades, només a l'exportació xhtml. * * @param Event $event $event->data és la taula de capçaleres (meta, link, script…) * @param mixed $param no se'n fa servir cap */ public function addViewport(Event $event, $param) { global $ACT; if ($ACT !== 'export_xhtml') { return; } $event->data['meta'][] = [ 'name' => 'viewport', 'content' => 'width=device-width,initial-scale=1', ]; } }
Les classes ActionPlugin, Event i EventHandler són a l'espai de noms dokuwiki\Extension. És el que fa servir la versió 2025-05-14b «Librarian» (inc/Extension/ActionPlugin.php).
Hi ha dues maneres:
exportviewport.zip. El ZIP conté la carpeta exportviewport/ amb els dos fitxers.exportviewport/, amb els dos fitxers, a lib/plugins/.&do=export_xhtml. El text s'ha de redistribuir a l'amplada de la pantalla.<head> hi ha d'haver <meta name=«viewport» content=«width=device-width,initial-scale=1»>.Estat: instal·lat i comprovat al mòbil el 14-10-2026.
dokuwiki\Extension o de l'esdeveniment TPL_METAHEADER_OUTPUT, caldria adaptar action.php.lib/plugins/exportviewport/.