Not logged in. · Lost password · Register
Forum: Non-English Discussion German discussion RSS
[Gelöst] Nachträgliche Änderung des HTML-Codes über PHP (nicht über JavaScript)
Page:  1  2  next 
Avatar
Michaelsy #1
Member since Jun 2015 · 304 posts · Location: Düsseldorf
Group memberships: Members
Show profile · Link to this post
Subject: [Gelöst] Nachträgliche Änderung des HTML-Codes über PHP (nicht über JavaScript)
Hallo DokuWiki-Developer,

ich versuche mich gerade an meinem ersten Plugin. Mein Ziel ist das Folgende: Ich möchte der gesamten HTML-Seite eine CSS-Klasse zuweisen. Beispielsweise so:

Wiki-Code:
~~PageStyle: big-font-size ~~
HTML-Ergebnis:
<body class="pst_big-font-size"> ... </body>

Nebenbedingungen:
1.) Das Ganze soll out-of-the-box mit jedem Template funktionieren, soll heißen ohne Template-Änderung.
2.) Ich würde gerne auf den Einsatz von JavaScript verzichten (aus "Geschmacksgründen" und damit es auch bei deaktiviertem JavaScript funktioniert).

Meine ursprüngliche Idee bestand darin, per PHP den HTML-Output der Gesamtseite, der sich quasi auslieferungsbereit in irgendeinem Ausgangspuffer befindet, dementsprechend zu patchen.

Allerdings habe ich trotz gründlicher Recherche keinen Weg gefunden, das auf diese Weise umzusetzen. Ganz im Gegenteil scheint es so zu sein, dass das zumindest mit dem derzeitigen DokuWiki-System grundsätzlich nicht umsetzbar ist. (Das vermute ich unter anderem deshalb, weil ich kein Plugin gefunden habe, das auf diese Weise arbeitet, obwohl mir das als ein naheliegender Weg erscheint. Soweit für mich erkennbar, kommt nach MAIN.PHP ja nur noch das Event DOKUWIKI_DONE, das nur von einer sehr überschaubaren Anzahl von Plugins genutzt wird.)

Soweit ich das bis jetzt verstanden habe, scheint das Problem darin zu bestehen, dass der HTML-Code, der dadurch gebildet wird, indem er im PHP-Script unmittelbar und direkt enthalten ist (wie z.B. der Body-Tag in MAIN.PHP), am Ende des Scripts nicht mehr für eine nachträgliche Änderung zur Verfügung steht.

Ist dem so? Habe ich irgendetwas übersehen? Oder gibt es in PHP doch irgendwie eine Möglichkeit, die vielleicht bisher nur noch kein Plugin-Entwickler genutzt hat?

Für die Hilfe vielen Dank im Voraus
   - Michael Sy.
Über Patreon können ein paar Euronen in die Code-Phaser
der DokuWiki-Engine eingespeist werden - weitersagen!
This post was edited on 2018-09-16, 14:10 by Michaelsy.
Avatar
turnermm (Moderator) #2
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
Das einfachste ist "conf/usertyle.css" zu verwenden, z.B.

/*conf/userstyle.css */
body {
    font-size: 16pt;
}

Siehe auch: https://www.dokuwiki.org/config
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
Avatar
Michaelsy #3
Member since Jun 2015 · 304 posts · Location: Düsseldorf
Group memberships: Members
Show profile · Link to this post
Hallo Myron,

danke für die Antwort, aber sie trifft leider nicht das, auf was ich abziele.

Dein Vorschlag formatiert jede HTML-Seite. Ich möchte aber CSS-Rules definieren können, die sich nur auf ganz bestimmte, einzelne Seiten beziehen.

Es ist nun nicht so, dass ich nicht schon Wege und Mittel gefunden hätte, dies zu bewerkstelligen. Aber diese Möglichkeiten sind alle mit mehr oder weniger großen Nachteilen verbunden. In den Body-Tag einzelseitenbezogen eine oder mehrere Klassen einzutragen, wäre die perfekte Lösung für mich.

Gruß - Michael Sy.
Über Patreon können ein paar Euronen in die Code-Phaser
der DokuWiki-Engine eingespeist werden - weitersagen!
Avatar
LarsDW223 #4
Member since Sep 2014 · 325 posts · Location: Paderborn
Group memberships: Members
Show profile · Link to this post
Hallo Michael,

ginge das nicht evtl. über das Event ACTION_EXPORT_POSTPROCESS in einem Plugin?
Wenn ich die Beschreibung richtig verstanden habe (siehe https://www.dokuwiki.org/devel:event:action_export_postpro…), dann enthält der Event auch die Daten der kompletten Seite vor der Auslieferung an den Browser. Da müsste man doch evtl. per String-Replace das body Tag anpassen können.

Nur so eine Idee, habe es mir nicht konkret angeschaut oder ausprobiert.

Grüße,
Lars
Avatar
turnermm (Moderator) #5
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
Laden die Override-Version meines sectionoggle-Plugins herunter und verwende syntax.php als Vorlage. Dies zeigt, wie du kannst ein div für die Seite erstellen. Erstelle dann eine CSS-Datei im Plugin-Verzeichnis, die mit dein css auf die div-ID verweist.
Siehe https://www.dokuwiki.org/plugin:sectiontoggle#override.
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
This post was edited on 2018-09-14, 02:16 by turnermm.
Avatar
turnermm (Moderator) #6
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
Neues div:
<div id = "new_div">
Seite-Inhalt
</div>


../plugins/plugin_name/style.css:
#new_div {
font size: 14pt;
}
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
Avatar
Michaelsy #7
Member since Jun 2015 · 304 posts · Location: Düsseldorf
Group memberships: Members
Show profile · Link to this post
In reply to post #5

Interessanter Ansatz, ist schon mal besser, als alle anderen Möglichkeiten, die ich bisher gefunden habe, um einzelseitenbezogene CSS-Regeln (unter den o. a. Rahmenbedingungen) hinzubekommen.
Über Patreon können ein paar Euronen in die Code-Phaser
der DokuWiki-Engine eingespeist werden - weitersagen!
Avatar
Michaelsy #8
Member since Jun 2015 · 304 posts · Location: Düsseldorf
Group memberships: Members
Show profile · Link to this post
In reply to post #4
Quote by LarsDW223:
dann enthält der Event auch die Daten der kompletten Seite vor der Auslieferung an den Browser. Da müsste man doch evtl. per String-Replace das body Tag anpassen können.

Das ist genau das, was mir vorgeschwebt hat. Ich habe mir das mal angesehen.

Soweit ich das überblicke, kommt ACTION_EXPORT_POSTPROCESS aber wohl nicht in Frage. Dieser Event wird nur bei einer Export-Action ausgelöst. Bei einem Export wird aber das Template (also MAIN.PHP) gänzlich links liegen gelassen und genau dort möchte ich ja mit meiner Änderung rein.

Im Grunde bräuchte ich genau das gleiche wie das ACTION_EXPORT_POSTPROCESS Event, nur als Postprocess für die Show-Action.

Relevante Links:
https://www.dokuwiki.org/devel:event:action_export_postpro…
https://codesearch.dokuwiki.org/search?project=dokuwiki&…
https://codesearch.dokuwiki.org/xref/dokuwiki/inc/Action/E…
https://www.dokuwiki.org/start?id=export
https://www.dokuwiki.org/devel:action_modes
Über Patreon können ein paar Euronen in die Code-Phaser
der DokuWiki-Engine eingespeist werden - weitersagen!
This post was edited on 2018-09-14, 08:22 by Michaelsy.
Avatar
turnermm (Moderator) #9
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
In reply to post #7
Hier ist das Plugin, das ich denke, dass du brauchst.   Du musst nur das CSS ändern,

Es ist Sectiontopgle Override mit ein paar Änderungen.
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
The author has attached one file to this post:
cssperpage.zip 929 Bytes
You have no permission to open this file.
Avatar
turnermm (Moderator) #10
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
Syntax:

~~cssp_openDIV~~

Seite-Inhalt

~~cssp_closeDIV~~
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
Avatar
LarsDW223 #11
Member since Sep 2014 · 325 posts · Location: Paderborn
Group memberships: Members
Show profile · Link to this post
Zitat von Michaelsy:
Soweit ich das überblicke, kommt ACTION_EXPORT_POSTPROCESS aber wohl nicht in Frage. Dieser Event wird nur bei einer Export-Action ausgelöst. Bei einem Export wird aber das Template (also MAIN.PHP) gänzlich links liegen gelassen und genau dort möchte ich ja mit meiner Änderung rein.

Ahhrrgh, ja sorry, zu schnell gelesen :-) Ich habe mir mal den Code startend von doku.php aus angeschaut. Scheint mir so erst mal per Event nicht zu gehen. Das Event DOKUWIKI_DONE wäre auch noch eine schöne Möglichkeit gewesen, sendet aber leider keine Daten mit.

Natürlich könnte man an bestimmten Stellen Events oder Aufrufe einfügen. Das wäre dann aber Template oder DW-Versions spezifisch. Schade.
Avatar
Michaelsy #12
Member since Jun 2015 · 304 posts · Location: Düsseldorf
Group memberships: Members
Show profile · Link to this post
Natürlich könnte man an bestimmten Stellen Events oder Aufrufe einfügen. Das wäre dann aber Template oder DW-Versions spezifisch. Schade

Was wir im Core bräuchten wäre ein SHOW_OUTPUT_POSTPROCESS Event mit Übergabe der gesamten HTML-Seite.
Über Patreon können ein paar Euronen in die Code-Phaser
der DokuWiki-Engine eingespeist werden - weitersagen!
This post was edited on 2018-09-14, 18:37 by Michaelsy.
Avatar
turnermm (Moderator) #13
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
In reply to post #11
Ich denke, dass ein Syntax-Plugin die einzige Option ist. Vielleicht du kannst verwenden ein EVENT, der Seiten-Änderungen ermöglicht,  und CSS in die Seite einfügen kann, aber ich glaube nicht.
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
Avatar
andi (Administrator) #14
User title: splitbrain
Member since May 2006 · 3330 posts · Location: Berlin Germany
Group memberships: Administrators, Members
Show profile · Link to this post
https://www.dokuwiki.org/devel:event:tpl_content_display
Read this if you don't get any useful answers.
Lies dies wenn du keine hilfreichen Antworten bekommst.
Avatar
turnermm (Moderator) #15
Member since Oct 2009 · 4293 posts · Location: Canada
Group memberships: Global Moderators, Members, Super Mods
Show profile · Link to this post
Ja, ich bin über diesen Event informiert, war mir aber nicht sicher, ob die CSS an dem Punkt funktioniert?
Myron Turner
github: https://github.com/turnermm
plugins, templates: http://www.mturner.org/devel
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Go to forum
Imprint
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2018-09-23, 14:36:53 (UTC +02:00)