Wenn Sie Vorlagen ändern möchten, müssen Sie eines wissen und sich daran erinnern: Nachdem Sie Ihre Änderungen geschrieben haben und bevor Sie sie testen, müssen Sie den Inhalt des app/cache/twig/
-Verzeichnisses löschen.
Andernfalls bleibt der Cache in der Nähe und Sie werden keine (oder Sie werden nur einige sehen) Ihrer Änderungen sehen, was Sie glauben lassen könnte, dass sie nicht wirksam werden.
Diese Bereinigung wird auch ausgeführt, wenn Sie die "Archive/Cache cleanup" -Option auf dem Hauptadministrationsbildschirm Ihres Chamilo-Portals verwenden ("System" -Block).
Alternativ können Sie Chash (ein Befehlszeilentool für Chamilo) mit dem folgenden Befehl verwenden:
Das heißt, wenn Sie Chash 6 installiert haben.
Schließlich gibt es Möglichkeiten, bei denen Sie möchten, dass die Vorlage etwas für Sie tut, das nicht sehr kompliziert ist, aber auf einer Art Verarbeitung beruht. Dafür gibt es Modifikatoren.
Zum Beispiel und wahrscheinlich der gebräuchlichste Modifikator in vorhandenen tpl-Dateien: get_lang, nimmt den angegebenen Wert und verwendet die interne Prozedur von Chamilo, um ihn zu übersetzen und die Übersetzung als Ergebnis anzuzeigen, wo das Tag genau dort platziert wurde.
Zum Beispiel könnten Sie einen Abschnitt wie diesen haben, der einen Teil des Headers darstellt:
In diesem Fall wird der Begriff « Home » von Chamilos get_lang() Funktion übersetzt, bevor er auf dem Bildschirm angezeigt wird. Der resultierende Code für diesen tpl-Block unter Berücksichtigung früherer Beispiele auf Französisch würde ungefähr so aussehen:
Wenn Sie Sprachbegriffe mit mehreren einzufügenden Variablen verwenden (zum Beispiel « DateFromXToY »), müssen Sie zwei Modifikatoren kombinieren:
Wo DateX und DateY Variablen sind, die Sie zuvor « assigned » zu Ihrem Template haben.
Beispiele hierfür finden Sie in main/template/default/skill/skill_info.tpl.
Bei der Entwicklung von Plugins mit .tpl (was empfohlen wird) ist der Anwendungsfall etwas anders. Wenn Sie Variablen verwenden, die nur im Ordner lang/ des Plugins definiert wurden (siehe Abschnitt Sprachvariablen auf Seite 50) und um sicherzustellen, dass auch die Elternsprachen berücksichtigt werden (falls die Benutzer Ihres Plugins eine Untersprache verwenden - siehe "Sub-languages" für verwandte Informationen), müssen Sie verwende den modifizierer get_plugin_lang.
Dieser Modifikator verwendet jedoch einen zusätzlichen Parameter, den Namen des Plugins Klasse. Wenn wir also einen der vorherigen Fälle wiederverwenden und sagen, dass wir an einem Plugin arbeiten, das einen Ordner namens plugins/homepage-looks/ enthält, aber darin heißt die Hauptklasse HomepageLockupGin:
... und beschließe, dass der französische Begriff “Accueil” (“Home”, in einem Webkontext) durch Plugin-spezifische Übersetzungen übersetzt werden soll, dann wäre unsere erste Reaktion, dies zu tun:
Dies wird jedoch bei Untersprachen keine Plugin-spezifischen Übersetzungen berücksichtigen. Tun Sie das stattdessen:
Auf diese Weise wird Chamilo speziell nach einer im Plugin definierten Übersetzung suchen, und wenn keine Übersetzung für die vom Benutzer erstellte Untersprache gefunden wird, sucht es nach einer übergeordneten Sprache, die es verwenden kann, und wird schließlich auf Englisch gesetzt, wenn keiner dieser beiden Schritte funktioniert.
Zusammenfassend sollten alle Ihre Plugins den Modifikator get_plugin_lang anstelle des Modifikators get_lang verwenden, wenn eine Übersetzung speziell im Plugin definiert ist.
Chamilo verwendet seit Version 1.10 die Twig-Templating-Engine für die meisten (und in Zukunft alle) seiner Schnittstelle.
Um die Vorlage in Chamilo zu aktualisieren, können Sie eines von zwei Dingen: Definieren Sie einige Vorlagendateien in main/template/override/
NEU ODER kopieren Sie den default
-Ordner und ändern Sie eine Zeile in app/config/configuration.php
, indem Sie folgendermaßen folgende Schritte ausführen:
Auf diese Weise können Sie alles in Ihrer neuen Vorlage bearbeiten, während die ursprüngliche Vorlage verfügbar bleibt, und Sie vermeiden auch, dass Ihre Vorlage während Ihres nächsten Chamilo-Upgrades überschrieben wird.
Es ist jedoch wichtig zu verstehen, dass jede benutzerdefinierte Vorlage beibehalten werden muss: Wenn in Chamilo eine neue TPL-Datei in der Standard/Vorlage erstellt wird, muss diese neue TPL-Datei zu Ihrer benutzerdefinierten Vorlage hinzugefügt werden. Im Falle des override/-Ordners muss, obwohl es nicht erforderlich ist, die entsprechende Datei zu erstellen, dennoch sicherstellen, dass der default./.tpl-Datei keine neuen Informationen hinzugefügt wurden, die sonst nicht in der Überschreibung erscheinen würden. Diese Änderungen können im Verlauf der Änderungen im Verzeichnis default/ auf Github nachverfolgt werden:
Im Verzeichnis default finden Sie die folgenden Verzeichnisse, die wir bei Bedarf erklären (die meisten von ihnen sind selbsterklärend).
Admin
Tagesordnung
auth → alles was mit Authentifizierungsformularen und -prozessen zu tun hat
Kurs_Beschreibung
erstellen_kurs
Exportieren
Formular
Glossar
index → Homepage für anonyme Nutzer und Ankündigungen
layout → Kopfzeile, Fußzeile, Banner und mehr sind hier gespeichert
learnpfad
verknüpfen
mail_editor
Notizbuch
Seiten
sozial
Fertigkeit
userportal → Liste der Kurse im « My courses » Tab
arbeiten
Die Struktur einer typischen Seite wird daher dem Folgenden nahe kommen. Wir verwenden hier eine verkürzte Version von main/template/default/layout/layout_2_col.tpl
, um der Dokumentation willen. layout_2_col
bedeutet « layout for 2 colums page » und wird ausgewählt, wenn wir Dinge wie die Kursliste anzeigen möchten, da wir auf diesem Bildschirm zwei Spalten haben: das Seitenmenü und die Liste der Kurse.
Alle normalen HTML-Tags werden so angezeigt, wie es ist. Keine Notwendigkeit für einen Trick.
Wie Sie im Beispiel sehen können, können einige « include » -Anweisungen gefunden werden. Sie erhalten die angegebene Datei und legen den Inhalt genau dort ab, wo Sie den Anruf abgegeben haben. Dies ist praktisch, um andere bereits mehrlagerte Blöcke wiederzuverwenden.
Da wir möchten, dass dieses Vorlagensystem für uns praktisch ist und wir am Ende unserer Skripte nicht immer alle gängigen Variablen zuweisen möchten, die wir am Ende unserer Skripte benötigen, enthält Chamilo eine Reihe vordefinierter Variablen und Arrays, die Sie verwenden können.
Hier ist eine Liste dieser Variablen und Arrays... Nicht, dass es vielleicht nicht erschöpfend wäre und wir Ihnen derzeit nicht helfen können, diese aufzulisten, aber Sie könnten in main/inc/lib/template.lib.php hacken und nach allen $this->assign ('wörtlich', $variable); **_ Aufrufe, um es herauszufinden.
Das Array _u enthält allgemeine Informationen über den Benutzer. Sie könnten den Vornamen des Benutzers in jedem tpl drucken lassen, indem Sie die folgende Syntax verwenden:
Hier ist eine vollständige Liste der enthaltenen Werte zusammen mit einem Beispiel für den Wert, den Sie von ihnen erhalten. Wie Sie sehen werden, werden einige davon unter einem etwas anderen Namen dupliziert. Wir empfehlen, die Variablen in Kleinbuchstaben immer zu verwenden, da andere in Zukunft schrittweise bereinigt werden sollten.
Dieses Array enthält eine Liste verschiedener Formen von Pfaden, die Sie möglicherweise auf Vorlagenebene benötigen, um beispielsweise mit anderen Ressourcen zu verknüpfen.
Sie können die Grundlage für das Kursverzeichnis erhalten, das in jedem tpl gedruckt werden soll, indem Sie die folgende Syntax verwenden:
Beachten Sie, dass Systempfade, obwohl sie sonst in den PHP-Skripten leicht verfügbar sind, hier nicht bereitgestellt werden, da sie den Endbenutzern (auch nicht im HTML-Quellcode) angezeigt werden sollten.
Dieses Array enthält einige Systemvariablen, die allgemeine Plattforminformationen darstellen
dh Sie können den Site-Namen (wie in den globalen Einstellungen konfiguriert) in jedem tpl drucken, indem Sie die folgende Syntax verwenden:
Dieses Array (nur ab 1.9.8
vorhanden) enthält Informationen über den aktuellen Kurs.
Sie können überprüfen, ob der aktuelle Kurs definiert ist (dh wenn sich der Benutzer gerade in einem Kurs befindet), indem Sie die Variable course_is_set verwenden:
Das_c Array sieht so aus:
Wie Sie sehen, enthält es auch die Sitzungs-ID. Die Sitzungs-ID ist immer 0, wenn wir überhaupt nicht in einer Sitzung sind.
Sie können auch aus der tpl die {{ course_code }}
-Variable verwenden, die {{ _c.code }}
entspricht.
Obwohl es bereits etwas komplexer ist, könnten Sie entscheiden, ob Sie einen Link zu einem Kurs anzeigen möchten oder nicht, indem Sie dessen Sichtbarkeit überprüfen:
Wie Sie sehen, haben wir hier mehrere Variablen kombiniert, darunter eine aus dem_s-Array, um eine Bedingung zu schreiben, die dem Benutzer einen vollständigen Link zur Kurs-Homepage zeigt, nur wenn der Kurs eine Sichtbarkeit von « 1 » hat.
Andere Variablen werden einzeln definiert, sind aber immer in jedem Template verfügbar.
Wie bei den vorherigen Gruppen sollte die folgende Liste durch die bereitgestellten Beispielwerte selbsterklärend sein. In einigen Fällen fügen wir nach einem « // » -Zeichen einen Kommentar hinzu, um Ihnen weitere Informationen zu geben.
dh Sie können den Namen des aktuell verwendeten CSS abrufen (und so Elemente aus dem Ordner images/dort abrufen), indem Sie einfach die folgende Syntax verwenden: