WBCE CMS – Way Better Content Editing.
You are not logged in.
Hallo zusammen,
kann mir bitte jemand helfen, dieses php-Script http://www.combib.de/losungphp/index.html in wbce lauffähig zu machen? Könnte man daraus ein Droplet oder Modul erstellen? Hab mich schonmal umgeschaut, aber dafür reichts bei mir leider nicht.
Was bisher geschah: Ich habe für die Datei "losungphp1.inc" einen Code2-Abschnitt erstellt und die beiden ".dat" Dateien in einen Mediaordner namens "losungen" gelegt. Den Pfad im Code2-Abschnitt angepasst: "media/losungen/losungphp2022.dat" und habe nun dieses Ergebnis auf meiner Testseite: https://wbce.markus-paulus.info/
Da fehlt irdendwie die Formatierung.
Vielen Dank im Voraus.
Viele Grüße
nasowas
Last edited by florian (01.12.2022 08:32:53)
WBCE 1.6.1, Frontendtemplate: Simple Responsive, Backendtemplate: Fraggy, Browser: Firefox Betriebssystem Windows 11 pro
Offline
Zunächst einmal:
deine bisherige Herangehensweise ist absolut o.k.
Man braucht nicht für jede "Nischen-Aufgabe" unbedingt gleich ein Modul oder ein Droplet.
Nun zum Problem(chen):
in der .dat wird das Zeichen § als Trenner für die verschiedenen Textzeilen verwendet.
Beim Lesen des entsprechend Bereichs aus der .dat wird dies aber irgendwie "verhunzt".
Dadurch schlägt dann im Script das Auftrennen des Textstrings an den Stellen fehl und du bekommst den gezeigten Output.
Das "? im Kästchen" sollte eigentlich jedesmal ein § sein und durch den explode-Befehl gar nicht mehr erscheinen.
Die Ursache, warum das § nicht mehr richtig erkannt wird, liegt wohl daran, dass die .dat Dateien als Zeichenkodierung ISO-8859-1 haben und dann in einer UTF-8 Umgebung verarbeitet werden.
Nun könnte man (1. Idee) einfach hergehen und die .dat Dateien explizit mit UTF-8 als Zeichenkodierung abspeichern.
Dann wird zwar das § erkannt und auch korrekt umgesetzt, allerdings stimmt dann der Zeichen-Offset - ab dem gelesen wird und wie weit - innerhalb der Datei nicht mehr.
Also auch keine Lösung.
Ich habe jetzt mal ganz pragmatisch in der losungphp2022.dat (siehe Anhang) alle Vorkommen von § durch | ersetzt (da das Zeichen | sonst nirgendwo in der Datei vorkommt)
Edit - bessere Lösung, bei der man nicht an der .dat rumoperieren muss:
den ausgelesenen Textschnippsel explizit nach UTF8 umwandeln.
Dazu im Script die Zeile:
$Lphp = explode("§", $LphpText);
so ergänzen:
$Lphp = explode("§", utf8_encode($LphpText));
Last edited by bernd (30.11.2022 22:04:11)
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
nasowas, berny, jean
Hallo bernd,
vieeelen Dank für die Mühe! Und schon funzt´s. Fantastisch!!! Ich hab mich auch schon über die "§" gewundert. Aber zu mehr hat´s eben nicht gerecht.
Viele Grüße
nasowas
WBCE 1.6.1, Frontendtemplate: Simple Responsive, Backendtemplate: Fraggy, Browser: Firefox Betriebssystem Windows 11 pro
Offline
Hallo zusammen,
nur kurz zur Info. Wollte das Script dann auf einer Unterseite einsetzen, habe alles so wie oben beschrieben gemacht, aber leider keine Anzeige mehr. Nur Überschrift bis Doppelpunkt: "Losung und Lehrtext für Datum:". Dann ein leeres Feld.
Ich schmeiß mal die angepasste .inc hier rein. Vielleicht hat jemand ne Idee wo es haken könnte:
// =================================
// Script zum Einfügen der Losungen:
// =================================
// Einstellungen:
// ==============
// Bibeltext fett ausgeben: (1 = fett 0 = nicht fett)
$LphpBibeltextFett = 1;
// Stellenangabe als Link zur Internetbibel: (1 = Link 0 = kein Link)
$LphpBibelLink = 0;
// Überschrift einfügen: ("" = keine Überschrift)
$LphpTitelText = "Losung und Lehrtext für";
// Datumsangabe allein oder hinter Überschrift:
$LphpTitelDatum = 2;
// mögliche Werte: (Beispiel 04.02.2008)
// 0 = (keine Datumsangabe)
// 1 = "04.02.2008"
// 2 = "Montag, 4. Februar 2008"
// 3 = "4. Februar 2008"
// Doppelpunkt hinter Überschrift / Datum (1 = Doppelpunkt 0 = keiner)
$LphpTitelDoppelpunkt = 1;
// =================================================================
// Den nachfolgenden Code bitte nur ändern, wenn Sie sich auskennen!
// =================================================================
// Datendatei zum aktuellen Jahr ermitteln:
$LphpDatei = "media/losungen/losungphp" . date("Y") . ".dat";
// Die Daten aus der Datendatei einlesen:
$LphpFp = @fopen($LphpDatei,"rb");
if ($LphpFp){
$LphpTagID = date("z") +1;
fseek ($LphpFp, ($LphpTagID * 12) - 12);
$LphpPoLa = fread($LphpFp, 12);
$LphpPo = intval(substr($LphpPoLa, 0, 6)) -1;
$LphpLa = intval(substr($LphpPoLa, 6, 6));
fseek ($LphpFp, $LphpPo);
$LphpText = fread($LphpFp, $LphpLa);
$Lphp = explode("§", utf8_encode($LphpText));
fclose($LphpFp);
}
// Variablen für die Datumsangabe in der Überschrift
// Wochentagsname: (z.B.: "Montag")
$LphpWT = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
$LphpWochentagName = $LphpWT[date("w")];
// Monatsname: (z.B.: "Februar")
$LphpM = array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
$LphpMonatName = htmlentities($LphpM[date("n")]);
// Tag als Zahl: (z.B.: kurz = "4" / lang = "04")
$LphpTagKurz = date("j");
$LphpTagLang = date("d");
// Monat als Zahl: (z.B.: kurz = "2" / lang = "02")
$LphpMonatKurz = date("n");
$LphpMonatLang = date("m");
// Jahr als Zahl: (z.B.: kurz = "08" / lang = "2008")
$LphpJahrKurz = date("y");
$LphpJahrLang = date("Y");
// Bibeltext ggf. Fett:
if($LphpBibeltextFett==1){
$Lphp[1] = "<b>" . $Lphp[1] . "</b>";
$Lphp[5] = "<b>" . $Lphp[5] . "</b>";
}
// Stellenangabe ggf. als Link zur Internetbibel
if($LphpBibelLink==1){
$Lphp[2] = "<a title='Zum Bibeltext' href='" . $Lphp[3] . "' target='_blank'>" . $Lphp[2] . "</a>";
$Lphp[6] = "<a title='Zum Bibeltext' href='" . $Lphp[7] . "' target='_blank'>" . $Lphp[6] . "</a>";
}
// Überschrift zusammenstellen:
$LphpTitel = "";
if($LphpTitelText != ""){$LphpTitel = htmlentities(trim($LphpTitelText));}
// Datum zusammenstellen:
$LphpDatum = "";
if($LphpTitelDatum <1 or $LphpTitelDatum >3){
$LphpDatum = "";
}elseif($LphpTitelDatum==1){
$LphpDatum = $LphpTagLang . "." . $LphpMonatLang . "." . $LphpJahrLang;
}elseif($LphpTitelDatum==2){
$LphpDatum = $LphpWochentagName . ", " . $LphpTagKurz . ". " . $LphpMonatName . " " . $LphpJahrLang;
}elseif($LphpTitelDatum==3){
$LphpDatum = $LphpTagKurz . ". " . $LphpMonatName . " " . $LphpJahrLang;
}
if($LphpTitel != "" and $LphpDatum != ""){$LphpTitel = $LphpTitel . " ";}
$LphpTitel = $LphpTitel . $LphpDatum;
if($LphpTitel != "" and $LphpTitelDoppelpunkt==1){$LphpTitel=$LphpTitel . ":";}
// Titel ausgeben:
if($LphpTitel != ""){echo $LphpTitel . "<br><br>";}
// Losung ausgeben:
echo $Lphp[0] . $Lphp[1] . "<br>";
echo $Lphp[2] . "<br><br>";
// Lehrtext ausgeben:
echo $Lphp[4] . $Lphp[5] . "<br>";
echo $Lphp[6];
Viele Grüße
nasowas
WBCE 1.6.1, Frontendtemplate: Simple Responsive, Backendtemplate: Fraggy, Browser: Firefox Betriebssystem Windows 11 pro
Offline
Ja ne is klar
Er findet dann den Pfad zu den .dat Dateien nicht mehr.
Änder das mal so ab:
$LphpDatei = WB_PATH."/media/losungen/losungphp" . date("Y") . ".dat";
Dann sollte es egal sein wie tief im Seitenbaum du es "versteckst".
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
nasowas
Da war ich gedanklich gar nicht so weit davon entfernt. Ich hätte aber bestimmt den "." vergessen.
So passt´s.
Vielen Dank!
nasowas
WBCE 1.6.1, Frontendtemplate: Simple Responsive, Backendtemplate: Fraggy, Browser: Firefox Betriebssystem Windows 11 pro
Offline
So, noch der Vollständigkeit halber:
ich hatte mittlerweile mal den Peter Baumann (dem Macher der combib.de Seite ) kontaktiert.
Er konnte das Problem nicht wirklich reproduzieren, hatte aber schon gelegentlich von Problemen bei der Einbindung in WordPress gehört. In den Fällen wurde dann halt in den .dat Dateien das § durch | ersetzt (wie in meinem ersten Lösungsansatz).
Er kann sich aber bislang nicht dazu durchringen künftig generell | statt § in den .dat Dateien zu verwenden, weil einfach zu viele Losungs-Skripte "in freier Wildbahn" sind, die ja dann alle angepasst werden müssten.
Der Dialog hat mich dazu veranlasst nochmal bischen tiefer nach den Ursachen zu forschen. Die eigentliche Ursache des Problems ist eigentlich total simpel:
Beide Dateien (.inc und .dat) haben als Zeichenkodierung ISO-8859-1. Solang die .inc normal inkludiert wird (also mittels include) ist alles in bester Ordnung. In unserem Fall erhält sie aber durch das Speichern im Code2-Abschnitt die Zeichenkodierung UTF-8 und verträgt sich dann nicht mehr mit der .dat
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline
webbird, nasowas
Hallo WBCE Clan,
möchte auch gerne die losungen auf der Webseite einbinden.
Gruß Jan
WBCE 1.6.1, Frontendtemplate: Hortal Responsive, Backendtemplate: Flat Theme, Browser: Firefox Betriebssystem Windows 11 pro
Offline
Das ist, mit Verlaub, nicht direkt "Anfängerniveau". Du brauchst wohl dieses Script aus der im ersten Post verlinkten quelle. Um das dann wie beschrieben einzubinden, brauchst Du in WBCE das Modul "Code2" (https://addons.wbce.org/pages/addons.ph … em&item=37), in das Du dann den oben geposteten Code einfügst.
Die "dat"-Dateien mit den Losungen musst Du über die Medienverwaltung (https://help.wbce.org/pages/de/das-back … medien.php) in ein (über die Medienverwaltung anzulegendes) Verzeichnis "losungen" hochladen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
es funktioniert , ihr seid alle Spitze !!!
https://www.kiga-loewenherz.de
Gruß Jan
WBCE 1.6.1, Frontendtemplate: Hortal Responsive, Backendtemplate: Flat Theme, Browser: Firefox Betriebssystem Windows 11 pro
Offline
florian