WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 01.12.2024 17:28:00

digitalbricks
Member

FrontendAutoReload Module für WBCE CMS

Hallo Community,

ich möchte euch mal kurz auf ein kleines Snippet-Modul aufmerksam machen, welches ich wegen aktueller Änderungsarbeiten an einem älteren WBCE-Template erstellt habe: FrontendAutoReload.

Wie es der Name vermuten lässt, ist das Anliegen des Moduls das ständige Neuladen im Browser nach vorgenommen Änderungen am Code zu automatisieren. Dazu überwacht das Modul das Verzeichnis des (der aktuellen Seiten zugewiesenen) Templates und löst bei erkannten Änderungen per Javascript einen Reload aus. Aus Gründen der Performance ist dieser Mechanismus nur aktiv wenn der Nutzer angemeldet ist UND sich in der Administratoren-Gruppe befindet (was üblicherweise auf diejenige Person zutrifft, die die Website erstellt). In allen anderen Fällen wir das dafür nötige Javascript gar nicht erst ausgegeben.

Installation & Benutzung:
Das Modul wird ganz normal über das WBCE-Backend installiert. Anschließend muss in der index.php des Templates folgendes ergänzt werden (am besten irgendwo vor dem schließenden </body>):

[== PHP ==]
<?php

$far = frontendautoreload();
echo $far->renderScript();
?>

Und das wars auch schon.

Die Konfiguration des Moduls, etwa der Abfrage-Intervall nach Änderungen, lässt sich bei bedarf mit zusätzlichen Methoden anpassen. Hier ein Beispiel mit allen derzeit mögliche Konfigurations-Optionen:

[== PHP ==]
<?php

// eine Instanz der FrontentAutoReload-Klasse erhalten
$far = frontendautoreload();

// den Abfrage-Intervall von standardmäßig 5 Sekunden auf 2 verkürzen
$far->setInterval(2);

// Verzeichnisse /templates/[your-template]/assets und /templates/[your-template]/vendor ausschließen 
// (standardmaßig /images ausgeschlossen)
$far->setExcludedDirectories(['/assets', '/vendor']); // note the leading slash!

// Markdown- und BMP-Dateien ausschließen 
// (standardmäßig 'jpeg', 'jpg', 'png', 'svg', 'gif' ausgeschlossen)
$far->setExcludedExtensions(['md', 'bmp']); // without dot

// das Javascript ausgeben

// Wichtig: Das muss NACH der Konfiguration erfolgen, da das Skript entsprechend der Konfiguration angepasst wird
echo $far->renderScript();
?>

Technik:
Im Modul-Verzeichnis befindet sich ein PHP-Skript latest.php, welches den Zeitstempel der zuletzt modifizierten Datei per JSON an das anfragende Javascript sendet. Beim ersten Aufruf wird dieser Zeitstempel per Javascript im Local Storage des Browser gespeichert. Bei jedem folgenden Aufruf (im eingestellten Intervall) wird der gespeicherte Zeitstempel mit dem vom PHP-Skript zurück gegebenen verglichen – ist der neue Zeitstempel jünger als der im Local Storage gespeicherte, dann wird der neue Zeitstempel im Local Storage abgelegt und ein Reload getriggert. Danach beginnt das Spiel von vorne.

Als Template-Entwickler könnt ihr also in eurem Editor / eurer IDE bleiben und bei jedem Speichern wird der Browserinhalt automatisch aktualisiert.

Offline

Liked by:

chipz, florian, mk70, losttrip, jean, berny

#2 02.12.2024 07:36:33

florian
Administrator

Re: FrontendAutoReload Module für WBCE CMS

Interessante Idee, ein kurzer Test (Modul installiert, o.g. Zweizeiler in der wbcezon/index.php ergänzt) führte allerdings leider zu einer leeren Seite und der Meldung

2024-12-02T06:29:29+00:00 [Exception] There was an unknown exception: syntax error, unexpected variable "$far" in line (277) of /templates/wbcezon/index.php

im Errorlog.

Kann es sein, dass das Modul nicht mit WBCE-Installationen zurecht kommt, die in einem Unterverzeichnis liegen
(also deinedomain.eu/wbce/ o.ä.)

Als Klickibuntimensch ist es für mich übrigens mindestens genauso wichtig, die Seite neu zu laden, wenn sich was an den eingebauten Bildern und Grafiken ändert, deshalb finde ich es für mich etwas ungünstig, dass svg, gif, jpg und /images dezidiert ausgeschlossen sind.

Last edited by florian (02.12.2024 07:37:03)


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

#3 02.12.2024 07:58:23

digitalbricks
Member

Re: FrontendAutoReload Module für WBCE CMS

Hi Florian,

besten Dank für Dein Feedback!
Mit einer Installation in einem Unterverzeichnis habe ich noch nicht getestet – hole ich nach – vermute aber dass der Grund der Fehlermeldung ein anderer ist.

Nur zur Sicherheit:
Die initiale Belegung der $far-Variable hast Du vorgenommen?:

[== PHP ==]
$far = frontendautoreload();

Wobei: Wenn das fehlen würde, würde PHP ja nicht von einer "unexpected variable" sprechen und nicht mit einer Exception abbrechen sondern mit einer Warning von einer "unknown variable" berichten. Hmmm ... Schaue ich mir an und nehme auch gleich mal WBCEzon zum testen.

Die Argumentation mit den Bildern verstehe ich – habe die nur ausgenommen damit der Directory-Interator nicht ständig über die meiste Zeit statisch bleibende Inhalte suchen muss. Aber Du kannst diese Ausnahme ja leicht abschalten:

[== PHP ==]
// leeres Array an exkludierten Dateiendungen übergeben
$far->setExcludedExtensions([])

Offline

#4 02.12.2024 08:27:47

florian
Administrator

Re: FrontendAutoReload Module für WBCE CMS

Ja, die Zeile hatte ich drin.
Ich hab's jetzt gerade nochmal auf einer anderen Instanz getestet, wo WBCE nicht in einem Unterverzeichnis liegt, da funktioniert's.  thumb_up
Danke auch für den Tipp zu den Bildern - klappt auch.


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

#5 02.12.2024 08:46:13

digitalbricks
Member

Re: FrontendAutoReload Module für WBCE CMS

Hab's gerade noch mal in einer frischen WBCE-Installation in einem Unterverzeichnis probiert und konnte das Problem nicht reproduzieren. Läuft auch da ohne erkennbare Probleme.

Mich beschäftigt aber das syntax error, unexpected variable "$far" in Deiner Fehlermeldung. Kann es sein, dass in der Zeile VOR der initialen Zuweisung der $far-Variable z.B. ein Semikon fehlt?

Offline

#6 02.12.2024 08:54:16

florian
Administrator

Re: FrontendAutoReload Module für WBCE CMS

My mistake, sorry. Da war beim c&p ein unsichtbares Zeichen (Tab?) vor 
$far = frontendautoreload(); mit rübergewandert.
Es funktioniert also alles wie gewünscht, ich ergänze das Tool dann auch gleich im AOR.

Edit: da -> https://addons.wbce.org/pages/addons.ph … m&item=169

Last edited by florian (02.12.2024 09:00:40)


Sorgen sind wie Nudeln: man macht sich meist zu viele.

Offline

Liked by:

digitalbricks, mk70, losttrip

Board footer

up