Einen Blocktyp hinzufügen
Ein Blocktyp hat drei Teile: eine Definition in der explayouts.ini, eine Handler-Klasse, die seine Parameter
deklariert, und ein Template pro Design. Das Beispiel ist ein Notice-Block: ein kurzer Text in einem hervorgehobenen
Kasten, in zwei Ansichtstypen, info und warning. Er verwendet einen vorhandenen Handler wieder, es wird also kein PHP geschrieben.
Inhalt
- Die Definition
- Der Handler
- Das Template
- Aktivieren, leeren, in der Palette finden
- Verwenden
- Ein eigener Handler
1. Die Definition
extension/mysite/settings/explayouts.ini.append.php:
[BlockSettings]
AvailableBlocks[]=notice
# A new block type: a highlighted notice with a text an editor types
[BlockDefinition_notice]
Name=Notice
Handler=expLayoutsTextBlockHandler
ViewTypes[]=info
ViewTypes[]=warning
Category=basic
*/ ?>| Schlüssel | Bedeutet |
|---|---|
AvailableBlocks[] | die Blocktypen, die der Editor anbietet |
Name | der Name in der Palette und am Block |
Handler | die PHP-Klasse, die die Parameter deklariert |
ViewTypes[] | die Ansichten, die ein Redakteur im Reiter Design wählen kann |
Category | die Gruppe der Palette: basic, components, listing, gallery, containers, placeholders |
HasCollection=1 | der Block hat Einträge (wie List) |
IsContainer=1 und Placeholders[] | der Block enthält andere Blöcke (wie Column) |
Wo die Zeile zählt. Seit explayouts 1.4.42 beginnt die eigene explayouts.ini.append.php von explayouts
AvailableBlocks[] (ebenso AvailableQueries[], SiteAccessMatch[] und AllowedTemplateRoots[]) nicht mehr mit einer
Rücksetzzeile. Das AvailableBlocks[]=notice Ihrer Erweiterung bleibt erhalten, wo auch immer die Erweiterung in
ActiveExtensions[] steht: Für Blöcke spielt die Position keine Rolle mehr, und ein doppelt aufgeführter Block wird
einmal angeboten (./console exp:ini where explayouts.ini/BlockSettings/AvailableBlocks admin zeigt die wirksame
Liste). Um die ganze Liste zu ersetzen, schreiben Sie die Rücksetzzeile dorthin, wo sie nach allen Erweiterungen
gelesen wird: in settings/override/explayouts.ini.append.php oder einen Siteaccess
(./console exp:ini clear explayouts.ini/BlockSettings/AvailableBlocks[] <scope>). Für Template-Overrides und
DesignExtensions[] zählt die Reihenfolge der Erweiterungen weiterhin
(Ihre eigene Design-Erweiterung).
2. Der Handler
expLayoutsTextBlockHandler deklariert einen Parameter:
'content' => array( 'name' => 'Content', 'type' => 'textarea', 'default' => '' ),Der Editor baut das Formular des Blocks aus getParameters() des Handlers; das Feld erscheint im Reiter Design.
3. Das Template
Das Media-Design bindet für jeden Block explayouts/block/<definition>.tpl ein, das Template ist also
extension/mysite/design/media/templates/explayouts/block/notice.tpl:
if and( is_set( $block.parameters.content ), $block.parameters.content|ne( '' ) )
<aside class="notice notice-$block.view_type|wash" role="note">
<p>$block.parameters.content|wash|nl2br</p>
</aside>
/ifDas block.tpl des Designs umschließt es mit <div class="ngl-block ngl-notice ngl-vt-<view type> ..."> und wendet die
gemeinsamen Optionen an (Abstände, CSS-Klasse, Container).
4. Aktivieren, leeren, in der Palette finden
./console exp:cache clear --tag=template,content,iniÖffnen Sie ein Layout im Editor, und die Gruppe Basic der Palette hat Notice:

5. Verwenden

Ziehen Sie Notice in eine Zone. Er kommt mit seinem ersten Ansichtstyp (info) an; wählen Sie ihn aus, öffnen Sie
Design, wählen Sie warning, tippen Sie den Text in Inhalt (der Parameter content) ein und klicken Sie auf
Layout veröffentlichen.

Die veröffentlichte Seite stellt dar:
<div class="ngl-block ngl-notice ngl-vt-warning whitespace-top-none whitespace-bottom-none">
<div class="container">
<aside class="notice notice-warning" role="note"><p>Prices of the training plans change on 1 November.</p></aside>
</div>
</div>
Er bleibt schlicht, bis das Design .notice gestaltet (Ihre Blöcke gestalten).
Ein eigener Handler
Für andere Felder schreiben Sie eine Klasse, die expLayoutsBlockHandlerInterface implementiert, mit getParameters() (die
Felder: name, type, default) und getValues( $block ) (was das Template in $block.values bekommt), legen sie in
extension/mysite/classes/ ab, führen php bin/php/ezpgenerateautoloads.php -e aus und nennen sie in Handler=. Die
Handler in extension/explayouts/classes/ (zum Beispiel explayoutstextblockhandler.php, explayoutstplblockhandler.php)
sind kurze Beispiele.
Verwandte Seiten
- Einen Ansichtstyp hinzufügen
- Wie ein Block seinen Templates zugeordnet wird
- Eigene Template-Blöcke
- 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.