Die Operatoren von ezjscore im Detail
Die Erweiterung ezjscore (im Kernel-Repository enthalten, extension/ezjscore/) registriert in
extension/ezjscore/autoloads/eztemplateautoload.php zwölf Operatoren; ihre settings/site.ini.append.php fügt die Erweiterung zu
[TemplateSettings] ExtensionAutoloadPath[] hinzu. Sie existieren nur, solange ezjscore eine aktive Erweiterung ist, was jedes
mitgelieferte Design voraussetzt. Für die Sicht des Designers lesen Sie zuerst
ezjscore template operators und
The ezcss and ezscript operators; diese Seite dokumentiert jeden
Parameter.
| Klasse | Datei | Operatoren |
|---|---|---|
ezjscPackerTemplateFunctions | autoloads/ezjscpackertemplatefunctions.php | die acht Packer-Operatoren |
ezjscEncodingTemplateFunctions | autoloads/ezjscencodingtemplatefunctions.php | json_encode, xml_encode, node_encode |
ezjscAccessTemplateFunctions | autoloads/ezjscaccesstemplatefunctions.php | has_access_to_limitation |
Inhalt
- Packstufen und Dateinamen
- Die Packer-Operatoren: ezscript, ezcss, ezscriptfiles, ezcssfiles, ezscript_require, ezcss_require, ezscript_load, ezcss_load
- Die Encoder: json_encode, xml_encode, node_encode
- Zugriff: has_access_to_limitation
Packstufen und Dateinamen
Alle Packer-Operatoren übergeben ihre Dateiliste an ezjscPacker (extension/ezjscore/classes/ezjscpacker.php).
- Ein Dateiname wird wie bei
ezdesignim Ordnerjavascript/bzw.stylesheets/jeder Design-Basis gesucht. Ein Name wieezjsc::jqueryist ein Aufruf einer Serverfunktion (ezjscServer-Funktionen, die in derezjscore.iniaufgeführt sind), deren Ergebnis eine Liste von Dateien ist; Arrays innerhalb der Liste werden eingeebnet. pack_level0 verlinkt die Dateien so, wie sie sind. Oberhalb von 0 werden die Dateien im Cache-Ordner (var/<site>/cache/public/) zu einer Datei zusammengefügt, und höhere Stufen minimieren sie zusätzlich.ezjscore.ini[eZJSCore] Packer=disablederzwingt 0, eine Zahl an dieser Stelle ersetzt jedespack_level; istPackernicht gesetzt, erzwingt[TemplateSettings] DevelopmentMode=enabledden Wert 0. Auf einer Entwicklungsinstallation giltPacker=enabled, also entscheidet der Parameter.- Beim Packen wird die zusammengefügte Datei geschrieben, wenn eine Liste zum ersten Mal verwendet wird. Die Beispiele auf dieser
Seite verwenden
pack_level0, damit sie nichts schreiben. - An die Links wird keine Versionsabfrage angehängt; eine geänderte Datei erhält einen neuen gepackten Namen, weil der Name die Zeitstempel der Dateien enthält.
Packer setting: [ezini( 'eZJSCore', 'Packer', 'ezjscore.ini' )]Ausgabe:
Packer setting: [enabled]Die Packer-Operatoren
ezscript
Generierte Seite: ezscript.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
script_array | Array | ja | |
type | Zeichenkette | nein | text/javascript |
language | Zeichenkette | nein | leer (nur auf Wunsch, kein gültiges HTML5) |
charset | Zeichenkette | nein | utf-8 |
pack_level | Ganzzahl | nein | 2 |
- Eingabe: keine. Gibt zurück:
<script>-Tags (ezjscPacker::buildJavascriptTag()). Der Operator berücksichtigt nicht, was zuvor angefordert oder geladen wurde.
ezcss
Generierte Seite: ezcss.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
css_array | Array | ja | |
media | Zeichenkette | nein | all |
type | Zeichenkette | nein | text/css |
rel | Zeichenkette | nein | stylesheet |
charset | Zeichenkette | nein | leer (veraltet) |
pack_level | Ganzzahl | nein | 3 |
- Eingabe: keine. Gibt zurück:
<link>-Tags (ezjscPacker::buildStylesheetTag());mediaentfällt, wenn esallist.
ezscriptfiles
Generierte Seite: ezscriptfiles.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
script_array | Array | ja | |
pack_level | Ganzzahl | nein | 2 |
ignore_loaded | Boolean | nein | false |
- Gibt zurück: die Liste der Adressen statt Tags. Ohne
ignore_loadedwerden nur die Dateien zurückgegeben (und vermerkt), die auf dieser Seite noch nicht angefordert oder geladen wurden.
ezcssfiles
Generierte Seite: ezcssfiles.
Dasselbe für Stylesheets: css_array, pack_level (Standard 3), ignore_loaded.
1 ezcssfiles( array( 'core.css', 'debug.css' ), 0, true() )|implode( ' ' )
2 ezscriptfiles( array( 'ezjsc::jquery' ), 0, true() )|implode( ' ' )
3 ezcss( array( 'core.css' ), 'screen', 'text/css', 'stylesheet', '', 0 )
4 ezscript( array( 'ezjsc::jquery' ), 'text/javascript', '', 'utf-8', 0 )Ausgabe:
1 /extension/ezwebin/design/ezwebin/stylesheets/core.css /design/standard/stylesheets/debug.css
2 /extension/expui/design/standard/lib/jquery/jquery-4.0.0.min.js /extension/expui/design/standard/lib/jquery/jquery-migrate-4.0.2.js
3 <link rel="stylesheet" href="/extension/ezwebin/design/ezwebin/stylesheets/core.css" media="screen">
4 <script src="/extension/expui/design/standard/lib/jquery/jquery-4.0.0.min.js"></script>
<script src="/extension/expui/design/standard/lib/jquery/jquery-migrate-4.0.2.js"></script>ezscript_require
Generierte Seite: ezscript_require.
Die Parameter von ezscript. Solange ezscript_load auf der Seite noch nicht gelaufen ist, gibt der Operator nichts aus und hängt
die Dateien an js_files in der persistenten Variablen an, sodass ein View-Template ein Skript anfordern kann, das der
Pagelayout später ausgibt. Nachdem ezscript_load gelaufen ist, gibt er Tags für die noch nicht geladenen Dateien aus.
ezcss_require
Generierte Seite: ezcss_require.
Dasselbe für Stylesheets (css_files), mit den Parametern von ezcss.
ezscript_load
Generierte Seite: ezscript_load.
Die Parameter von ezscript, wobei script_array optional ist. Der erste Aufruf auf einer Seite stellt seine eigenen Dateien
vor die angeforderten, gibt Tags für alle aus und markiert die Skripte als geladen; spätere Aufrufe geben nur Dateien aus, die
noch nicht geladen sind.
ezcss_load
Generierte Seite: ezcss_load.
Dasselbe für Stylesheets, mit den Parametern von ezcss, wobei css_array optional ist.
Die vermerkten Listen liegen in der persistenten Variablen: in einem View-Template $persistent_variable, im Pagelayout
$module_result.content_info.persistent_variable (ezjscPackerTemplateFunctions::setPersistentArray()), sodass sie den
View-Cache überdauern. Eine persistente Variable, die kein Hash ist, wird mit dem Fehler „persistent_variable was not an array“
zurückgesetzt. Die folgende Reihenfolge zeigt den ganzen Ablauf in einem Template:
def $persistent_variable = hash()
1 require: [ezcss_require( array( 'debug.css' ) )]
2 load: ezcss_load( array( 'core.css' ), 'all', 'text/css', 'stylesheet', '', 0 )
3 remembered: $persistent_variable.css_files|implode( ', ' )
4 require after load: ezcss_require( array( 'pagelayout.css' ), 'all', 'text/css', 'stylesheet', '', 0 )
5 again: [ezcss_require( array( 'pagelayout.css' ), 'all', 'text/css', 'stylesheet', '', 0 )]Ausgabe:
1 require: []
2 load: <link rel="stylesheet" href="/extension/ezwebin/design/ezwebin/stylesheets/core.css">
<link rel="stylesheet" href="/design/standard/stylesheets/debug.css">
3 remembered: core.css, debug.css
4 require after load: <link rel="stylesheet" href="/extension/ezwebin/design/ezwebin/stylesheets/pagelayout.css">
5 again: []Zeile 5 ist leer, weil pagelayout.css bereits in Zeile 4 ausgegeben wurde.
Die Encoder
json_encode
Generierte Seite: json_encode.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
hash | Hash | ja | leeres Array |
- Eingabe: nicht verwendet: Übergeben Sie den Wert als Parameter. Gibt zurück: das Ergebnis von PHPs
json_encode()für diesen Wert. Objekte ohne öffentliche Eigenschaften werden zu{}; übergeben Sie Hashes und Arrays.
Das Ergebnis ist JSON und nicht für HTML maskiert: Innerhalb eines Blocks <script type="application/json"> ist das genau
richtig; in einem Attribut maskieren Sie es mit wash.
xml_encode
Generierte Seite: xml_encode.
Derselbe Parameter. Gibt zurück: ein XML-Dokument mit einem Element <root> und einem Element pro Schlüssel
(ezjscAjaxContent::xmlEncode(); Listeneinträge werden zu Elementen <child>).
node_encode
Generierte Seite: node_encode.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
node | Objekt | ja | |
params | Hash | nein | leer |
type | Zeichenkette | nein | json |
- Eingabe: keine. Gibt zurück: einen Knoten, ein Inhaltsobjekt oder eine Liste davon, vereinfacht durch
ezjscAjaxContent::simplify(): JSON fürtypejson, XML fürxml, das Array selbst für jeden anderen Wert. - params:
dataMap(einzuschließende Attributbezeichner,array( 'all' )für alle),dataMapType(Filter nach Datentyp),fetchPath,fetchSection,fetchChildrenCount,loadImagesmitimageSizesundimagePreGenerateSizes(Standardsmall),imageDataTypes,fetchNodeFunction.
Mit loadImages werden die aufgeführten Bildgrößen erzeugt, wenn sie noch nicht existieren, wodurch Bilddateien geschrieben werden:
Fordern Sie nur Aliase an, die die Bilder bereits haben.
def $node = fetch( 'content', 'node', hash( 'node_id', 90 ) )
1 json_encode( hash( 'title', $node.name, 'children', $node.children_count, 'tags', array( 'a', 'b' ) ) )
2 xml_encode( hash( 'title', $node.name, 'id', $node.node_id ) )
def $data = node_encode( $node, hash( 'dataMap', array( 'title' ) ), false() )
3 node_encode as array: foreach $data as $k => $v$kdelimiter /delimiter/foreach
4 node_encode as JSON: node_encode( $node, hash(), 'json' )|count_chars characters, starts node_encode( $node, hash(), 'json' )|extract_left( 40 )Ausgabe:
1 {"title":"Privacy Policy","children":0,"tags":["a","b"]}
2 <?xml version="1.0" encoding="UTF-8"?>
<root><title>Privacy Policy</title><id>90</id></root>3 node_encode as array: name id contentobject_id contentobject_remote_id contentobject_state main_node_id version modified published section_id current_language owner_id class_id class_name path_identification_string translations initial_language can_edit class_identifier is_container node_id parent_node_id node_remote_id url_alias url depth priority hidden_status_string is_hidden is_invisible path children_count image_attributes data_map
4 node_encode as JSON: 838 characters, starts {"name":"Privacy Policy","id":88,"contenZugriff
has_access_to_limitation
Generierte Seite: has_access_to_limitation.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
module | Zeichenkette | ja | leer |
function | Zeichenkette | ja | leer |
limitations | Array (Hash) | ja | leer |
debug | Boolean | nein | false |
- Eingabe: keine. Gibt zurück:
trueoderfalsefür den aktuellen Benutzer.
Zuerst entscheidet hasAccessTo(): yes und no werden unverändert zurückgegeben. Bei Zugriff limited werden die Werte aller
Richtlinien pro übergebenem Limitierungsschlüssel zusammengeführt; der Aufruf ergibt true, wenn jeder übergebene Wert unter den
zusammengeführten Werten ist (Subtree und User_Subtree passen, wenn Ihre Pfadzeichenkette einen der erlaubten Pfade enthält).
Limitierungsschlüssel der Richtlinien, die Sie nicht übergeben haben, werden ignoriert (mit debug in der Debug-Ausgabe vermerkt).
Auf einer Entwicklungsinstallation liest die anonyme Rolle die Sektionen 1, 3 und 67, daher wird Sektion 2 abgelehnt:
def $access = fetch( 'user', 'has_access_to', hash( 'module', 'content', 'function', 'read' ) )
anonymous content/read: $access|choose( 'no', 'yes' )
1 section 1: has_access_to_limitation( 'content', 'read', hash( 'Section', 1 ) )|choose( 'no', 'yes' )
2 section 3: has_access_to_limitation( 'content', 'read', hash( 'Section', 3 ) )|choose( 'no', 'yes' )
3 section 2: has_access_to_limitation( 'content', 'read', hash( 'Section', 2 ) )|choose( 'no', 'yes' )
4 content/edit: has_access_to_limitation( 'content', 'edit', hash( 'Section', 1 ) )|choose( 'no', 'yes' )Ausgabe:
anonymous content/read: yes
1 section 1: yes
2 section 3: yes
3 section 2: no
4 content/edit: noVerwandte Seiten
- ezjscore-Template-Operatoren für Designer
- JSON-Endpunkte mit ezjscore
- Die persistente Variable
- Alle Template-Operatoren (generiert)
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.