Processwire vfm-online.de
Autor: michael.hafner@vfm-online.de
Aktuelle Fassung
Vorversionen
Inhalt
- Einleitung (Admins, Nutzer:innen)
- Allgemeine Hinweise (Admins, Nutzer:innen)
- Pflege www.vfm-online.de (Admins, Nutzer:innen)
- Grundsätzliches, Allgemeines (Admins, Nutzer:innen)
- Seitenübergreifend verwendbare Inhalte (Admins, Nutzer:innen)
- Startseite (Admins, Nutzer:innen)
- Gern mal vergessen... (Admins, Nutzer:innen)
- Administration www.vfm-online.de (Admins, Nutzer:innen)
- Installation (Admins)
- Grundlagen zum Zusammenspiel von Frontend und Backend (Admins, Nutzer:innen)
- Grundlagen zum Zusammenspiel von Frontend und Backend (Admins)
- Nutzerverwaltung (Admins)
- ANHANG: Module (Admins)
- ANHANG: Site-Konfiguration (Admins)
- ANHANG: Bekannte Probleme, Workarounds (Admins)
- ANHANG: Änderung der Default-Sprache (Admins)
Zweck des Dokuments
Diese Notizen entstehen während der Einrichtung des Systems. Sie verstehen sich
nicht als vollständige Systemdokumentation, und sie richten sich nicht ausschließlich
an Entwickler-, Administrator- oder Endnutzer:innen.
Der Großteil des Textes dient als Gedankenstütze für administrative oder Entwicklungsaufgaben.
Ein Teil des Textes ist für Anwender:innen geschrieben, die in der Pflegeoberfläche mehr tun,
als Inhalte zu erfassen - also zum Beispiel Felder anlegen oder Templates definieren. Abschnitte dieser
Art sind im Inhaltsverzeichnis gesondert ausgewiesen.
Das Dokument kann und soll von seinen Leser:innen nach Bedarf ergänzt bzw. aktualisiert werden.
Da keine automatische Versionierung erfolgt, gilt folgende Regel:
- Das aktuelle Dokument trägt immer den Namen "vfmProcesswireDok.html"
- Das aktuelle Dokument ist unter
http://vfm-online.de/cms/documentation/vfmProcesswireDok.html abgelegt.
- Bearbeiter:innen speichern nach der Bearbeitung ihre Version zusätzlich unter der nächsten
freien Versionsnummer im Verzeichnis und tragen sich, Versionsnummer und Bearbeitungsdatum in der Bearbeitungshistorie am
Kopf des Dokuments ein.
Konventionen
Notation in diesem Dokument
- Variable Elemente (z.B. eines Pfades) werden in eckige Klammern ("[]") eingeschlossen.
- Optionale Elemente werden in geschweifte Klammern ("{}")eingeschlossen.
- Alternative Elemente werden durch das Pipe-Zeichen ("|") getrennt.
Entwicklungsname des Projekts
Der Entwicklungsname des Projekts ist "otlet" (nach Paul Otlet (23.08.1868-10.12.1944)).
Der String "otlet" wird überall verwendet, wo Abgrenzungen gegen Namensraum und -konventionen
von Processwire notwendig sind oder deutlich gemacht werden sollen:
- Klassennamen beginnen mit "Otlet_".
- Variablennamen beginnen mit "otlet_" oder "ot".
- Projekteigene Pfadnamen beginnen mit "otlet_".
- Platzhalter in HTML-Templates werden von den Tags <otlet> und </otlet> begrenzt.
- Usw.
Pfadangaben
Das Dokument gibt Verzeichnispfade relativ zum Hauptverzeichnis von Processwire an.
Ein realer Pfad "/mnt/web023/a0/21/546221/htdocs/cms/processwire/site/config-dev.php"
erscheint im Dokument also als "site/config-dev.php".
Begriffe, Abkürzungen
- Backend
- Die Pflege- und Administrationsoberfläche des Systems.
- Frontend
- Die Website, die die Inhalte des Systems anzeigt.
- BE = Backend
- FE = Backend
- PW = Processwire
Positionierung und Benennung von Seiten, Redirects
"Titel"* ($page->title) ist ein Pflichtfeld jedes Templates und jeder Seite. Es wird (sofern
nicht anders konfiguriert) für die Seitenanzeige im Hierarchiebaum des BE und für das
Menü des FE verwendet. Die dort eingetragenen Titel müssen folglich so kurz sein,
dass sie die Navigation nicht erschweren bzw. nicht überfrachten. Da viele Titel der
Seite (auch nach Abzug der h&auuml;ufigen Untertitel) recht lang sind, enthalten die
meisten Templates/Seiten ein weiteres/ mehrere weitere Titelfelder.
PW ermöglicht das Verschieben in der Hierarchie wie auch das Umbenennen von Seiten.
("Umbenennung" meint hier nicht eine Änderung des Titels, sondern des Seitennamens (BE, Editiermodus,
Tab "Einstellungen", Feld "Name"*.) In beiden Fällen führt PW die URLs der alten Version der Seite
weiterhin mit (damit die Seite auch unter diesen Adressen weiterhin aufgerufen werden kann). Ist dies nicht
gewünscht (z.B. wo lediglich eine Kopiervorlage dupliziert wurde), müssen diese URLs manuell gelöscht
werden (BE, Bearbeitungsmodus, Tab "Einstellungen" > "What other URLs redirect to this page?").
An dieser Stelle können auch zusätzliche URLs angegeben werden, unter denen eine Seite
aufgerufen werden können soll. (NB: Die Redirects
können nur innerhalb des PW-Pfads gesetzt werden, nicht üBer die gesamte Domain. Beispiel:
Ein Eintrag "tagung-2021" bewirkt, dass die Seite unter "https://www.vfm-online.de/cms/processwire/tagung-2021"
aufgerufen werden kann, nicht unter "https://vfm-online.de/tagung-2021.)
Verweise auf andere Seiten aus der Seiten-Hierarchie auf (z.B. auf die alte vfm-Seite) können durch Anlegen
einer Seite mit dem Template "vfm_externer_verweis" ("vfm Externer Verweis") gesetzt werden. Dieses
Template entält ein URL-Feld, auf dessen Feldwert der Seitenaufruf weiterleitet.
Die Linkliste ermöglicht die Verwaltung oft verwendeter Links. Links dieser Liste werden in den
den Servicelink-Spalten der Startseite verwendet, können aber auch in beliebige andere Templates
über das Repeater-Feld "Servicelink" eingebunden werden.
Fußzeile: Servicespalten
Die Fußzeile der Startseite enthält mehrere Spalten mit Servicelinks. Diese Links
werden der allgemeinen Linkliste entnommen.
Manche allgemeine Regeln vergessen sich gern bei der Arbeit. Dieser Abschnitt dient als
Notizzettel für kleine Fehler.
- Seite kopiert oder verschoben. - Seitenname angepasst und Redirect geprüft? (Mehr...)
- Die Dokumentation von Processwire: https://processwire.com/docs/
- PW schreibt seitenspezifische Logs in "site/assets/logs"
- Das System schreibt dort auch ein eigenes Log, "otlet.log"
Das System wurde am 09.09.2020 in Version 3.0.165 installiert.
Schritte
- Download von https://processwire.com/download/core/ (ZIP)
- Entpacken Zip in htdocs/cms
- Start Installscript per https://www.vfm-online.de/cms/processwire/install.php
Basiskonfiguration
Die Basiskonfiguration nach Aufruf Installscript:
- Site installation profile: Multi-Language
- Strato Database: DB4274940
- Strato Database User: U4274940
- DB Host: rdbms.strato.de
(Nicht: localhost !)
(cf. https://www.strato.de/faq/hosting/so-nutzen-sie-unsere-mysql-datenbank/))
- DB Port: 3306
- DB Charset: UTF8
- DB Engine: MyISAM
- Timezone: Europe/Berlin
- File permissions: Directories 755, Files 644
- HTTP Host Names: www.vfm-online.de, vfm-online.de
- Debug mode: enabled
Grundregel (Admins)
PW gliedert sich in zwei Hauptverzeichnisse, "/site" und "/wire". Das Verzeichnis "/site"
Gehört dem Projekt, es ist von PW-Updates nicht betroffen; hier und nur hier findet die seitenspezifische
Konfiguration statt, hier werden Templates und Scripte abgelegt. Das Verzeichnis "/wire"
gehört der Anwendung Processwire, es wird bei Updates von PW überschrieben, hier
ändert das Projekt nichts.
- Inhalte, die das Frontend (FE; die Seite) anzeigt, werden im Backend (BE) erfasst.
- Im BE erfasste Inhalte werden in Feldern gespeichert.
- Einige Felder sind von PW vordefiniert; der BE-User kann weitere Felder hinzufügen.
- Es können beliebig viele Felder hinzugefügt werden.
- Felder werden im BE unter "Verwaltung" > "Felder" > "Neues Feld hinzufügen" angelegt.
- Beim Hinzufügen eines Feldes legt der BE-User einen Datentyp fest, der
angibt, welche Art von Daten ein Feld speichern kann. Datentypen sind z.B. "Text"
(für einfache Zeichenfolgen), "Datum" (für Kalenderdaten), "Options"
(für vordefinierte Listen zugelassener Einträge).
- Der Typ wird bei der Anlage des Feldes unter "Typ" angegeben.
- Fehlt ein benötigter Feldtyp in der Liste, muss er möglicherweise
installiert werden: "Module" > "Core", Listeneinträge, die mit "FieldType" beginnen.
- Ein neu definiertes Feld ist nicht ohne weitere Schritte nutzbar. Es muss zunächst in
ein "Template" eingebunden werden.
- Ein Template ist (im wesentlichen) eine Liste von Feldern, die einer Seite zugeordnet wird. Siehe hierzu Kap.
Templates
- Um ein Feld einem Template hinzuzufügen, im BE "Verwaltung" > "Templates" > [Name des Templates]
aufrufen, dann Liste "Feld hinzufügen" öffnen.
- Ein Feld kann mehreren Templates hinzugefügt werden.
Template Sets
Das System arbeitet mit externen HTML-Templates (z.Z. Bootstrap Moderna,
https://bootstrapmade.com/free-bootstrap-template-corporate-moderna/).
Ladeprozess
Bei einem Frontend-Aufruf mit delayed output (im Gegensatz zu direct output) lädt PW
defaultmäßig (ab Werk) folgende Dateien in der angegebenen Reihenfolge:
site/templates/_init.php |
|
site/templates/_func.php |
Geladen per Include von "site/templates/_init.php" |
site/templates/_main.php |
|
Hinweise:
- Näheres zur Funktion dieser Dateien:
https://processwire.com/docs/front-end/output/delayed/
-
Das Laden dieser Dateien kann per Template-Konfiguration im Backend unterbunden bzw.
durch das Laden anderer Dateien ersetzt werden (s. Reiter Dateien).
- PHP-Dateien in "site/templates" werden von PW i.d.R. als Templates interpretiert und in der Konfigurationsumgebung
für Templates entsprechend ausgewiesen. PHP-Dateien, deren Name mit einem Unterstrich beginnt, werden hingegen
nicht als Templates interpretiert und dementsprechend nicht gelistet.
Diese Dateien wurden unverändert gelassen, um jederzeit auf das Basis-Template "ab Werk"
zurückgreifen zu können.
Die vfm-Seite verwendet im Regelfalls das folgende Ladeverfahren:
site/templates/_vfm_init.php |
|
site/templates/_func.php |
Geladen per Include in "site/templates/_vfm_init.php" |
site/templates/_otletlib.php |
|
site/templates/_main.php |
|
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_init.php |
Geladen per Include in "site/templates/_vfm_main.php" |
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_func.php |
Geladen per Include in "site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_init.php" |
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_main.php |
Geladen per Include in "site/templates/_vfm_main.php" |
Aktives Templateset-Verzeichnis: Das Aktive Templateset wird in site/config.php in der Variable
$otlet_buffer['active_templateset'] definiert (z.B. $otlet_buffer['active_templateset'] = 'moderna';)
und von dort in $config->otlet_active_templateset sowie in $config['otlet']['active_templateset'] geladen.
Durch Aufruf der Funktion otlet_templateset($templateset) kann der Wert in $config->otlet_active_templateset
zur Laufzeit geändert werden, ohne die Konfiguration anzupassen. Das Verzeichnis des aktiven
Templateset ist über die Variablen $config['dirs']['rel']['templatesets'] oder
$config->otlet_active_templateset_dir. abrufbar. $config->otlet_active_templateset_dir wird analog zur
Laufzeitanpassung des Templateset-Namens durch Aufruf von otlet_templateset($templateset)
angepasst.
|
Die angepassten Dateien "_vfm_[*].php" in "site/templates" spielen in einer ähnlichen Weise zusammen,
wie das Konstrukt der Processwire-Basicpage (Default ab Werk), leiten aber die Steuerung weiter an eine
wiederum gleich konzipierte Dateiengruppe im Verzeichis des aktiven Templatesets. Sie bilden
eine Abstraktionsschicht, die es ermöglicht, das Templateset durch eine einfache Konfigurationseinstellung
zu wechseln, ohne die Verweise in den Templates des PW-Backends ebenfalls ändern zu müssen.
Sie erlauben außerdem, designspezifische PHP-Funktionen (angesiedelt in "site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_func.php")
von designübergreifenden (angesiedelt in "site/templates/_func.php" und site"/templates/_otletlib.php")
sauber voneinander zu trennen.
Aufgaben und Anbindung der geladenen Dateien
site/templates/_vfm_init.php |
Definition designübergreifender Variablen, die nicht zur Basiskonfiguration
gehören. Derzeit: "$otlet_title = $page->get('headline|title');", "$otlet_content = $page->body;"
und "$otlet_homepage = $pages->get('/');".
|
Diese Datei wird in der Templateverwaltung des PW-Backends in vfm-Templates als Preload definiert:
"Verwaltung" > "Templates" >" > [Templatename] > "Dateien" > "Datei voranstellen":
Eintrag "_vfm_init.php2, "Deaktiviere automatisches Voranstellen von Datei: _init.php" ankreuzen.
|
site/templates/_func.php |
Diese Datei stellt Funktionen bereit, die unabhängig vom gewählten Templateset
für das Rendern der Seite benötigt werden (z.B. eine Ladefunktion für
die Einzeldateien des aktiven Seitentemplates).
|
|
site/templates/_otletlib.php |
Diese Datei stellt allgemeine Funktionen bereit, die nicht unmittelbar dem Rendern
der Seite dienen (I/O-Funktionen, Logging, Konverter usw.).
|
|
site/templates/_main.php |
Diese Datei liest den Namen des aktiven Templatesets und leitet die Steuerung an die Dateien
"_vfm_init.php" und "_vfm_main.php" des betreffenden Templateverzeichnisses weiter.
|
Diese Datei wird in der Templateverwaltung des PW-Backends in vfm-Templates als Preload definiert:
"Verwaltung" > "Templates" >" > [Templatename] > "Dateien" > "Datei anhängen":
Eintrag "_vfm_main.php", "Deaktiviere automatisches Anhängen von Datei: _main.php" ankreuzen.
|
site/templates/[Aktives Seitentemplate] |
Dateien der Namensform "vfm_[Name].php" (z.B. "vfm_home.php") leiten ihren Aufruf an eine gleichnamige Datei im Verzeichnis
"site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]" weiter.
|
Automatische Einbindung durch PW zur Laufzeit, gesteuert durch Namensgleichheit von
Backend-Template und PHP-Datei. Beispielsweise bewirkt die Bindung einer Seite an
das Template "vfmHome" im Backend, dass beim Aufruf der Seite im Frontend die
Datei "site/templates/vfmHome.php" aufgerufen wirde.
|
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_init.php |
Diese Datei übernimmt die Aufgaben der PW-Defaultdatei "site/templates/_init.php", also
die Initialisierung von Einstellungen, die für das Rendern der Seite mit dem aktiven
Layout (Templateset) erforderlich sind. Beispielsweise liest sie alle HTML-Templates des Maintemplates
(des gleichbleibenden Teils des Seitendesigns) in das Array $otlet_templates_main und stellt ein
Array $otlet_templates_page für alle HTML-Templates der gerade aufgerufenen Seite bereit.
Sie lädt außerdem (ebenfalls analog zu "site/templates/_init.php") die Datei
"site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_func.php".
|
|
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_func.php |
Diese Datei übernimmt die Aufgaben der PW-Defaultdatei "site/templates/_func.php", also
die Bereitstellung von Funktionen, die für das Rendern der Seite mit dem aktiven
Layout (Templateset) erforderlich sind.
|
|
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/_vfm_main.php |
Diese Datei übernimmt die Aufgaben der PW-Defaultdatei "site/templates/_main.php":
Sie enthät den gesamten HTML- und PHP-Code, der für die Anzeige des statischen
Teils der Seite (Header, Footer, Menü etc.) erforderlich sind. Sie bindet außerdem
den Inhalt der gerade aufgerufenen Seite in den variablen Teil des Designs ein ("echo $otlet_content;").
|
|
site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]/[Aktives Seitentemplate] |
Dateien dieser Namensform (z.B. "vfm_home.php") werden von einer gleichnamigen Datei
in "site/templates" aufgerufen. Sie lesen den Inhalt der aufgerufenen Seite
aus der PW-Datenbank und tragen ihn in ein HTML-Template in einem gleichnamigen Verzeichnis
in "site/templates/otlet_templatesets/[Aktives Templateset-Verzeichnis]" ein.
|
|
Beispiel-Ablauf (leicht vereinfacht, ohne _func-Dateien):
- Das aktive Templateset ist "Moderna".
- Eine Seite "Startseite" im PW-Backend ist an das Template "vfm_home" gebunden.
- "Startseite" wird im PW-Frontend aufgerufen.
- PW ruft (auf Anweisung im Backend-Template "vfm_home") die Datei "site/templates/_vfm_init.php" ("Datei #1") auf.
- "Datei #1" ruft
"site/templates/otlet_templatesets/moderna/_vfm_init.php" ("Datei #2") auf.
- "Datei #2" liest die HTML-Templates in
"site/templates/otlet_templatesets/moderna/_vfm_main" in ein PHP-Array.
- PW ruft die Datei "site/templates/vfm_home.php" ("Datei #3") auf.
- "Datei #3" leitet den Aufruf an
die Datei "site/templates/otlet_templatesets/moderna/vfm_home.php" ("Datei #4") weiter.
- "Datei #4" liest die HTML-Templates in
"site/templates/otlet_templatesets/moderna/vfm_home" in ein PHP-Array.
- "Datei #4" liest alle anzuzeigenden
Inhalte von "Startseite" aus der PW-Datenbank.
- "Datei #4" trägt die gelesenen Datenbankinhalte
in die Templates im Array zu "site/templates/otlet_templatesets/moderna/vfm_home" ein.
- "Datei #4" speichert den erzeugten HTML-Code in der
PHP-Variable "$otlet_content".
- PW ruft (auf Anweisung im Backend-Template "vfm_home") die Datei "site/templates/_vfm_main.php"
("Datei #5") auf.
- "Datei #5" ruft
"site/templates/otlet_templatesets/moderna/_vfm_main.php" ("Datei #6") auf.
- "Datei #6" gibt den HTML-Code
statischen Seitenteils (Header, Footer, Menü etc.) und die von "Datei #4" erzeugte Variable "$otlet_content" an das
Frontend aus.
Grundkonzept
Die Nutzerverwaltung basiert auf drei Bausteinen:
Berechtigungen (Permissions) |
Eine Berechtigung erlaubt einem Nutzer die Ausfürung einer bestimmten Aktion im System: Seiten (in einem bestimmten Bereich) einzusehen,
Seiten (einer bestimmten Art) anzulegen, Seiten zu ändern usw..
|
Rollen (Roles) |
Rollen bündeln Berechtigungen unter einem Namen.
|
Nutzer (Users) |
Nutzer sind (aus Sicht des Systems) Gruppen von Rollen, die mit einem Namen und Authentifizierungsinformation
verknüpft sind.
|
- Einem Nutzer sind eine (Guest) bis mehrere Rollen zugeordnet.
- Einer Rolle sind null bis mehrere Nutzer zugeordnet.
- Einer Rolle sind null bis mehrere Berechtigungen zugeordnet.
- Eine Berechtigung ist einer bis mehreren Rollen zugeordnet.
|
Registrierungsverfahren: Teil 1
- Eine Person ruft über den Menüpunkt "Anmelden | Registrieren" das Anmeldefenster auf.
- Sie wählt die Option "Register for an account".
- Sie trägt sich mit ihrer Mailadresse ein, wählt ein Passwort und sendet das Formular ab.
- Sie erhät eine E-Mail mit einem Bestätigungslink bzw. einem Confirmation Code (z.B. BYRjLbNaacWRHo4xyvDu6DZQeLeBft1kQVFJDsuL).
- Sie bestätigt ihre Registrierung per Link oder Eintrag des Confirmation Codes in das Formular.
Registrierungsverfahren: Teil 2
- Nach Schritt 1 sind dem neuen Nutzer automatisch die Rollen "Guest" und "Login-Register" zugeordnet.
- Fall A: Alle Rollen, die dem neuen Nutzer zugeordnet werden sollen, exisitieren bereits. In diesem Fall
werden dem Nutzer unter "Zugriff" > "Benutzer" > [Name des Nutzers] > "Benutzerrollen" alle Rollen
zugewiesen, der er erhalten soll.
- Fall B: Eine oder mehrere Rollen, die dem neuen Nutzer zugeordnet werden sollen, exisitieren noch nicht.
In diesem Fall wird eine neue Rolle unter "Zugriff" > "Benutzerrollen" > "Neu hinzufügen" angelegt
und mit Berechtigungen ausgestattet. Danach weiter wie in Fall A.
Zugriffsgeschützter Content (Frontend)
Grundsätzlich verknüpfen sich FE-Zugriffsrechte in PW mit Rollen und Templates. Eine Unterscheidung im Zugriffsrecht zwischen
mehreren Seiten gleichen Templates oder zwischen einzelnen Seitenabschnitten ist nicht vorgesehen. Da beim vfm der Zugriff auf Seminar-Material,
Tagungsinformation usw. in der Regel auf Teilnehmer und Organisatoren beschränkt ist, wurde dieses Rechtekonzept erweitert.
-
Es wurden die User-Rollen "vfm_event_teilnehmer" und "vfm_event_planer" eingeführt.
-
Das Template User wurde um ein Feld "user_freigebenegeschuetzteinhalte" erweitert. Über dieses Feld können User- und Event-Seiten
miteinander verknüpft werden.
-
User, die über die Rollen "superuser" oder "vfm_event_planer" (Liste wird evt. erweitert) verfügen, sehen grunds&aauml;tzlich alle Inhalte, die sich auf
zu einem Event (eine Tagung, eine Fortbildung) gehören.
-
User, die über die Rolle "vfm_event_teilnehmer" verfügen, und die mit der Hauptseite eines Events verknüpft sind,
sehen die geschützen Inhalte der Seite und aller ihrer Unterseiten.
-
Er wird umgesetzt, indem das Template einer Seite das Rendering der Seiteninhalte vom Vorhandensein der o.a. Rollen bzw.
Verknüpfungen abhängig macht (Funktionen otlet_page_check_readaccess_protectedcontent(), otlet_event_check_readaccess_protectedcontent()).
Der Schutz muss also bei der Template-Entwicklung realisiert werden und gilt dann für alle Seiten des Templates. Er kann für jede
jeder beliebigen Funktion genutzt werden.
-
Der Zugriffsschutz konkurriert nicht mit der Standard-Rechteverwaltung durch PW. Er lässt sich beliebig mit ihm kombinieren.
-
Derzeit sind ausschließlich Verknüpfungen zur Event-Seiten der Templates "vfm_event_tagung" und "vfm_event_fortbildung" möglich.
Die Lisste der Templates kann jedoch erweitert werden.
Anwendung des Leseschutzes auf Textfelder (Voll-/Rich-Textfeld, andere) und Template-Textteile:
- Texte, die in einen Wrapper mit Leselevel eingeschlossen sind, werden abhängig von der User-Rolle ausgegeben oder nicht.
- Derzeit vorgesehen sind Level von 0 (Rolle guest), 1 (Rolle vfm_event_teilnehmer), 2 (vfm_event_planer), 3 (vfm_redakteur) und 10 (superuser).
- Beispiel: <otlet:leselevel:1>Diesen Satz sehen keine Gäste</otlet:leselevel:1>, sondern nur Nutzer mit der Rolle vfm_event_teilnehmer oder höer.
- Das Tag-Paar "<teilnehmer>{...}</teilnehmer>" ist eine Abkürzung für "<otlet:leselevel:1>{...}</otlet:leselevel:1>".
- Die Rechteprüfung soll vor Ende des Inhalts durch das PW-Template erfolgen.
www.vfm-online.de verwendet folgende (Site-)Module
LanguageDefault |
Änderung der PW-Default-Sprache von Englisch zu Deutsch.
|
https://processwire-recipes.com/recipes/change-homepages-default-language/. Siehe unten |
Login Register Pro |
FE-Registrierung und Profilpflege (Self service).
|
https://processwire.com/store/login-register-pro/ |
VFM Rechnungssteller |
Erzeugung einer Teilnahme-Rechnung (HTML, PDF), Zustellung per E-Mail.
|
Homegrown |
Das System ist mehrsprachig aufgesetzt; die Default-Sprache in Processwire ist Englisch. Dieser default wurde wie folgt geändert:
Change homepage's default language
Problem
You have a multi-language site, and started with for example English as primary, and French as secondary language
(so the English homepage is example.org/, the French one example.org/fr). Later in the project you want to set French as primary.
Solution
Here is what you can do to redirect the home page '/' to the German home page:
Set page names for both languages for the home page ('en' for English, 'de' for German)
In the LanguageSupportPageNames settings, choose the option "No - Root URL performs a redirect to: /name/".
When you go to the root url '/' it will redirect you to '/en/'
Finally, create a module to hook into Session::redirect to force the redirection of the root url to the French
translation as follows:
'LanguageDefault',
'version' => 1,
'summary' => 'A work around to changing the default language.',
'href' => 'https://processwire.com/talk/topic/9322-change-default-language-for-homepage/?p=89717',
'singular' => true,
'autoload' => true,
);
}
/**
* Initialize the module
*
* ProcessWire calls this when the module is loaded. For 'autoload' modules, this will be called
* when ProcessWire's API is ready. As a result, this is a good place to attach hooks.
*
*/
public function init() {
$this->session->addHookBefore('redirect', $this, 'setDefaultLanguage');
// The hook checks whether you are viewing the home page, and whether you are redirecting to the English url,
// and if so, it changes the url to the French url
}
public function setDefaultLanguage($event) {
if ($this->page->id == 1 && $event->arguments(0) == $this->page->localUrl('default')) {
$event->arguments(0, $this->page->localUrl('de'));
}
}
}
Quelle (angepasst): https://processwire-recipes.com/recipes/change-homepages-default-language/
Anmerkungen, Hinweise
- Die seitenspezifische Konfiguration von Processwire erfolgt in der Datei "site/config.php"
- Gemäß dem usus in Processwire enden Pfad-/URL-Variablen mit einem Slash: "/"; Anschließende
Pfadsegmente müssen diesen also nicht selbst setzen.
- Während der Entwicklung kann eine weitere Konfig-Datei angelegt werden, "site/config-dev.php".
Ist diese vorhanden, liest PW sie anstelle der Datei "site/config.php".
- Auf die Konfigurationsparameter kann in PHP mit "$config->get('otlet');" zugegriffen werden (um die
gesamte Konfiguration in ein Array zu laden) oder mit "$config['otlet']['{Name des Parameters}']" (um
auf einen einzelnen Wert zuzugreifen). In Funktionen muss $config zuvor als global referenziert werden:
"global $config".
- Das aktive Templateset kann zur Laufzeit (also ohne Änderung der Standardkonfiguration)
durch Aufruf der Funktion "otlet_templateset({Templateset-Name})" (mit Name des Templatesets; s.u.)
definiert werden. Diese Angabe schreibt "$config->otlet_active_templateset" (und die zugeh&oum;rigen
Pfadangaben) um, ohne "$config['otlet']['active_templateset']" zu verändern.
- In gleicher Weise kann der PW-Selector für die Seitensuche situativ per
"otlet_sitesearch_active_selector ('{Selektorname}')" angepasst werden (Änderung von
"$config->otlet_sitesearch_active_selector").
- Seitensuche-Selektoren werden per "otlet_update_sitesearch_selectors([Selektorname], [Selektorname])"
(üblicherweise in "_vfm_init.php") in "$config['otlet']['sitesearch_selectors']" gespeichert.
Konfiguration
// Kopie aus site/config.php | site/config-dev.php
$otlet_buffer = array();
$otlet_buffer['names'] = array(
'prodname' => 'Otlet',
'prodversion' => '0.1'
);
$otlet_buffer['active_templateset'] = 'moderna';
$otlet_buffer['sitesearch_active_selector'] = 'standard';
$otlet_buffer['params'] = array(
// 0 = no messages, 1 = vital/fatal, 2 = important, 3 = details, 4 = pedantic
'msglevel' => 3,
);
$otlet_buffer['urls'] = array(
'templates' => $config->urls->templates,
'templatesets' => $config->urls->templates.'otlet_templatesets/',
'active_templateset' => $config->urls->templates.'otlet_templatesets/'.$otlet_buffer['active_templateset'].'/',
'images' => $config->urls->templates.'otlet_images/',
'styles' => $config->urls->templates.'otlet_styles/',
);
$otlet_buffer['dirs'] = array(
'rel' => array(
'templatesets' => 'otlet_templatesets/',
'active_templateset' => 'otlet_templatesets/'.$otlet_buffer['active_templateset'].'/',
)
);
$otlet_buffer['files'] = array(
'mainlog' => $config->paths->logs.'otlet.log',
'debuglog' => $config->paths->logs.'debug.log',
'logo_home' => $config->urls->templates.'otlet_images/vfm-logo.png',
'logo_std' => $config->urls->templates.'otlet_images/vfm-logo.png',
'favicon' => $config->urls->templates.'otlet_images/favicon.ico',
);
$otlet_buffer['placeholders'] = array(
'openingtag' => '',
'closingtag' => ''
);
$otlet_buffer['sitesearch_selectors'] = array(
'standard' => "title|body~=".$otlet_buffer['placeholders']['openingtag']."q".$otlet_buffer['placeholders']['closingtag'].", limit=50",
);
$otlet_buffer['messages'] = array(
0 => array('Variable not set', 3),
1 => array('File included', 4),
2 => array('Change of templateset', 2),
3 => array('Message Level is', 1),
4 => array('Active template set is', 1),
5 => array($otlet_buffer['names']['prodname'].' '.$otlet_buffer['names']['prodversion'].' started', 1),
6 => array('Person not found', 1),
7 => array('No vfm address found', 1),
);
$config->otlet_active_templateset = $otlet_buffer['active_templateset'];
$config->otlet_active_templateset_dir = $otlet_buffer['dirs']['rel']['templatesets'].$config->otlet_active_templateset.'/';
$config->otlet_active_templateset_url = $otlet_buffer['urls']['templatesets'].$config->otlet_active_templateset.'/';
$config->otlet_sitesearch_active_selector = $otlet_buffer['sitesearch_active_selector'];
$config->otlet_active_subtemplates = array();
$config->otlet = $otlet_buffer;
unset($otlet_buffer);
function otlet_templateset($otTemplateset = '') {
global $config;
if($otTemplateset) {
$config->otlet_active_templateset = $otTemplateset;
$config->otlet_active_templateset_dir = $config['dirs']['rel']['templatesets'].$otTemplateset.'/';
$config->otlet_active_templateset_url = $config['urls']['templatesets'].$otTemplateset.'/';
}
return $config->get('otlet_active_templateset');
}
function otlet_sitesearch_active_selector ($otSelector = '') {
global $config;
if($otSelector) $config->otlet_sitesearch_active_selector = $otSelector;
return $config->otlet_sitesearch_active_selector;
}
function otlet_update_sitesearch_selectors ($otSelector_name, $otSelector) {
global $config;
if(!$otSelector_name || $otSelector) return '';
$config['sitesearch_selectors'][$otSelector_name] = $otSelector;
return $config['sitesearch_selectors'][$otSelector_name];
}
// Ende Kopie aus site/config.php | site/config-dev.php