WBCE CMS – Way Better Content Editing.
You are not logged in.
Wie schon in https://forum.wbce.org/viewtopic.php?id=5454 erwähnt, habe ich das Template caminar-wbce etwas erweitert.
Mein Ziel war es, das Template etwas einfacher an die jeweilige Umgebung anpasspar zu machen, also z.B. über Tools im Backend.
Anregungen dazu habe ich u.A. aus https://forum.wbce.org/viewtopic.php?id=4297.
Für den Footer setze ich dazu einerseits die Datei config.php als auch das Modul GlobalStrings Manager ein.
In der config.php gibt es ein (optionales) zusätzliches define:
[== PHP ==]
define('COPYRIGHT_PERIOD', '2021–2024');
Wenn der Eintrag vorhanden ist, wird der Inhalt als Copyright-Jahresangabe verwendet, wenn nicht, wird das aktuelle Jahr ausgegeben.
Und im GlobalStrings Manager sind folgende shorttext-Einträge angelegt:
tmpl_facebook_url
tmpl_instagram_url
tmpl_twitter_url
tmpl_mailto_url
Alle Einträge verhalten sich gleich: Wenn etwas (also eine URL) enthalten ist, wird das entsprechende Icon mit der URL im Footer angezeigt. Wenn er leer ist, wird kein Icon angezeigt.
tmpl_mailto_url könnte z.B. eine der folgenden URLs enthalten:
/pages/kontakt.php
mailto:meinname@example.com
Hier der dazu gehörige Teil der index.php:
[== HTML ==]
<footer id="footer">
<div class="container">
<ul class="icons">
<?php if(!function_exists("getStringByName")){ $sFile = WB_PATH."/modules/global_strings/include.php"; if(is_file($sFile)) require_once $sFile; } ?>
<?php $tfu=trim(getStringByName('tmpl_twitter_url')); if($tfu != '') {echo '<li><a href="'.$tfu.'" class="icon fa-twitter"><span class="label">Twitter</span></a></li>';} ?>
<?php $tfu=trim(getStringByName('tmpl_facebook_url')); if($tfu != '') {echo '<li><a href="'.$tfu.'" class="icon fa-facebook"><span class="label">Facebook</span></a></li>';} ?>
<?php $tfu=trim(getStringByName('tmpl_instagram_url')); if($tfu != '') {echo '<li><a href="'.$tfu.'" class="icon fa-instagram"><span class="label">Instagram</span></a></li>';} ?>
<?php $tfu=trim(getStringByName('tmpl_mailto_url')); if($tfu != '') {echo '<li><a href="[[string?name=tmpl_mailto_url]]" title="Kontakt"><span class="icon fa-envelope-o"><span class="label">Email</span></span></a></li>';} ?>
</ul>
</div>
<div class="copyright">
© <?php if(defined('COPYRIGHT_PERIOD')) { echo COPYRIGHT_PERIOD; } else { echo date('Y'); } echo ' '. WEBSITE_TITLE; ?> · All rights reserved · Template design by <a href="https://templated.co">TEMPLATED</a>.
</div>
<?php page_footer(); ?>
</footer>
Ausserdem wollte ich das Styling etwas variabler gestalten (können), ohne direkt auf den CSS-Dateien auf dem Server arbeiten zu müssen.
Und es sollte möglich sein, unterschiedliche Styling-Details (wie z.B. das Hintergrundbild) seitenabhängig einstellen zu können.
Dazu habe ich mir Folgendes gebaut: Im Verzeichnis /media/css, welches ja über das Backend-Tool "Medien" gut erreichbar ist, können CSS-Dateien liegen, die automatisch mit eingebunden werden, wenn sie einer bestimmten Namenskonvention genügen. Im Dateinamen ist das Template und optional der Seitenname enthalten.
Diese Dateien lassen sich relativ bequem vom Backend auf den lokalen Computer laden, editieren und wieder hochladen.
(Ja, ich weiß, dass es ein Modul zum Editieren auf dem Server gibt, aber das ist mir für die Anwender-Admins zu "gefährlich".)
Hier der entsprechend Code mit weiteren Details:
[== PHP ==]
<?php
// Load optional custom css-file(s)
// - for all pages (complementing the original main.css above
// - and/or dependent on the current page - to be able to have different styles/backgrounds
// - located in /media/css to be reachable via backend
// - named like:
//
// template name page link
// ----------------|-----------|----------|
// caminar-wbce-gsm-main-custom # loaded on all pages
// caminar-wbce-gsm-main-custom-about-me # loaded only on page "About me"
$custom_filename_base = "/media/css/". TEMPLATE . "-main-custom";
$custom_filename_pages = ["", str_replace('/','-',$wb->page['link'])];
/* loop through the above array with two elements: empty for main and then any other pages */
foreach ($custom_filename_pages as $cfp) {
if (file_exists(WB_PATH.$custom_filename_base.$cfp.".css")) echo "\t".'<link href="'.$custom_filename_base.$cfp.'.css" rel="stylesheet" type="text/css" />'."\n";
}
?>
Ich habe das Template erst einmal "caminar-wbce-gsm" genannt und fahre mit der angehängten Version 1.12 fort...
Last edited by chriz (23.07.2024 12:55:10)
Offline
florian, berny
Das ist ziemlich cool, was Du Dir da überlegt hast, Respekt.
Einzig mit der Ergänzung der config.php hadere ich etwas, die ist eigentlich sakrosankt und auch nicht unbedingt der Ort, wo Nutzys templatespezifische Angaben hinterlegen können/sollten. (Wenn da ein Semikolon oder ein Hochkomma vergessen wird, ist die ganze Seite "weg", Hülfe!)
Magst Du für die Copyright-Zeile nicht evtl. auch noch auf der Basis vom GSM etwas implementieren?
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Das mit der config.php war mein erster Ansatz, den ich schon länger da drin hatte. Den GSM kenne ich ja erst seit ein paar Tagen...
Okay, die "Gefahr" für die ganze Seite sehe ich ein. Ich bau' das auch noch um.
Offline
Angehängt die Version 1.13, bei der kein Eintrag in der config.php mehr verwendet wird. Stattdessen gibt es den zusätzlichen GSM-Eintrag
tmpl_copyright_period
Was mir bei Templates aufgefallen ist: Sie haben alle keine Versionshistorie in der info.php.
Ich hatte hier in caminar-wbce-gsm eine eingetragen, weil ich das sinnvoll finde.
Aber dann werden diese Kommentare vor Ende der Installation im Backend kurz irgendwie, unformatiert angezeigt.
Bei Modulen ist das nicht der Fall!? Auf den ersten Blick unterscheiden sich load_module() und load_template() nicht sehr.
Vermutlich ist das der Grund, warum Templates keine History eingetragen haben?
Das schaue ich mir jedenfalls noch genauer an...
Edit: Ich habe gerade (07:52 Uhr) noch einmal die Datei ausgetauscht. Nun ist eine erste Version von readme.txt enthalten.
Last edited by chriz (24.07.2024 07:53:00)
Offline
Danke. Ich hab's jetzt mal im Template-Verzeichnis ergänzt.
Mir ist noch aufgefallen, dass es eine Exception gibt, wenn der GSM nicht installiert ist. Vielleicht könntest Du das noch abfangen.
Wegen der Template-History oder auch Modul-History - da hat sich irgendwie nie wer richtig Gedanken drüber gemacht. Es gibt ja auch kein einheitliches Schema dafür, das gibt ja jede*r mehr oder weniger nach Gutdünken an - wenn überhaupt. Wenn Dir da was Intelligentes einfällt, gern.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Wohl ca. eine Minute, nachdem Du es hier heruntergeladen hattest, habe ich noch einen Edit gemacht und ein readme in der Zip-Datei ergänzt. Erstmal nur auf Deutsch. Englisch kommt noch. Das mit der Exception schaue ich mir an.
Übrigens: Auf https://templates.wbce.org/template-suche/ fehlt ein "d" beim "and":
On this website templates for WBCE CMS can be tested an downloaded.
Offline
florian
Zum Testen der Exception habe den GSM nun deinstalliert und wieder installiert.
Da stimmt etwas nicht!
Wenn ich jetzt den GSM starte, sind dort erwartungsgemäß keine Einträge (mehr) vorhanden, aber ein Neuanlegen der Einträge für das Template werden abgelehnt, weil angeblich schon verwendet. Auch ein Deinstallieren des Templates hilft nicht.
Wo genau der GSM nun die Einträge noch "sieht", weiß ich noch nicht, evtl. wurde die DB bein Deinstallieren nicht entsprechend bereinigt?
Auch das Errorlog hat wieder Meldungen vom GSM.
Ich versuche, da heute noch mehr Details herauszufinden. Später am Tage...
Offline
Okay, der GlobalStrings Manager löscht beim Deinstallieren eine seiner Tabellen ('_fields') nicht. Das habe ich im uninstall.php nachgetragen. Nun klappt es wieder.
Da der GSM aber immer noch Warnungen im Errorlog ausgab, habe ich im GSM noch weitere Änderungen vorgenommen. Bei meiner Installation ist es jetzt "ruhig" im Errorlog.
Edit: Ich hatte den GSM in Version 0.8.6 hier angehängt . Und nun wieder gelöscht. Ich möchte erst noch genauer testen.
Außerdem habe ich nun einen evtl. noch nicht installierten GSM im Template abgefangen. Dafür gibt's Version 1.14 angehängt.
Last edited by chriz (24.07.2024 15:37:49)
Offline
Hat ein bisschen länger gedauert...
Ich habe meine gesamte Testumgebung neu aufgesetzt. Es ist interessant, wieviele "Altlasten" beim Basteln und Testen so erzeugt werden, die später gerne mal dazwschenfunken. Oder man sich nicht erinnert, was alles so installiert ist...
So habe ich nun u.a. gemerkt, dass sich der Font-Awesome Support geändert hat. Seit caminar-wbce 1.10 (oder evtl. auch schon etwas früher) ist fa nicht mehr im Original-wbce-Template enthalten. Sondern es muss im Template auf das in WBCE enthaltene fa verwiesen werden.
In dem Rahmen habe ich auch den localfont_inlude von v0.2 auf 0.5 upgedated.
Angehängt ist Version 0.15
Offline
Sondern es muss im Template auf das in WBCE enthaltene fa verwiesen werden.
Hm, nein, eigentlich nicht, zumindest so lange der CKEditor installiert ist. Durch den wird dann im Frontend automatisch das bei WBCE inkludierte FontAwesome 4.7.1 mit geladen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Das habe ich inzwischen auch herausgefunden. Siehe https://forum.wbce.org/viewtopic.php?pid=44234#p44234
Ich habe den Link hier im Template wieder entfernt.
Last edited by chriz (27.07.2024 07:45:28)
Offline
Ich würde gerne bei der Installation des Templates die benötigten GlobalStrings schon automatisch anlegen.
Dazu würde ich ein install.php im Template anlegen. Aber das müsste dann halt auch ausgeführt werden...
Folgende Zeilen aus admin/modules/install.php
[== PHP ==]
// Run the modules install // upgrade script if there is one
if (file_exists($module_dir . '/' . $action . '.php')) {
require($module_dir . '/' . $action . '.php');
}
sind aber im admin/templates/install.php nicht vorhanden, da bisher wohl bei Templates keine install.php vorgesehen ist.
Wäre es eine zukünftige Option, ein install.php bzw. upgrade.php bei Templates zu erlauben?
Last edited by chriz (29.07.2024 07:33:08)
Offline
Hm, das ist aus Sicheheitsgründen glaube ich nicht so ohne weiteres umsetzbar. Bzw. nur in Verbindung mit einer Überprüfung, ob der User, der gerade ein Template installieren/updaten will, auch die Berechtigung zur Modulinstallation hat. Andernfalls würde das Berechtigungskonzept umgangen und böswillige Nutzys könnten nach Belieben Module/Scripte installieren.
Was Du machen kannst ist, eine precheck.php integrieren und bei der Templateinstallation zumindest prüfen, ob der GSM installiert ist.
$PRECHECK['WB_ADDONS'] = array('global_strings');
Da der GSM (noch) keine Import-/Exüportfunktion für die STrings hat, ist das allerdings bestenfalls nur die halbe Miete...
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Danke für den Erinnerer an das Berechtigungskonzept!
Bisher habe ich damit noch nichts gemacht und es daher nicht auf dem Schirm gehabt.
Dann ist klar, dass es so nicht gehen kann/wird. War ja nur 'ne Idee...
Offline