Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Einen Blocktyp hinzufügen

Einen neuen Blocktyp anlegen, den Redakteure in jedes Layout ziehen können; eine Blockdefinition in der explayouts.ini, eine vorhandene oder neue Handler-Klasse und ein Template, mit der Stelle, an der AvailableBlocks[]…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/build-two-ways/add-a-block-type.md

On this page

This page is a translation. Read the English original

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

  1. Die Definition
  2. Der Handler
  3. Das Template
  4. Aktivieren, leeren, in der Palette finden
  5. Verwenden
  6. Ein eigener Handler

1. Die Definition

extension/mysite/settings/explayouts.ini.append.php:

<?php /* #?ini charset="utf-8"?

[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üsselBedeutet
AvailableBlocks[]die Blocktypen, die der Editor anbietet
Nameder Name in der Palette und am Block
Handlerdie PHP-Klasse, die die Parameter deklariert
ViewTypes[]die Ansichten, die ein Redakteur im Reiter Design wählen kann
Categorydie Gruppe der Palette: basic, components, listing, gallery, containers, placeholders
HasCollection=1der 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>
{/if}

Das 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:

Die Blockpalette: die Gruppe Basic endet mit Notice
Die Blockpalette: die Gruppe Basic endet mit Notice

5. Verwenden

Der Notice-Block im Prefooter abgelegt, noch ohne Inhalt
Der Notice-Block im Prefooter abgelegt, noch ohne Inhalt

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.

Der Notice-Block im Reiter Design: Ansichtstyp warning und der Text im Feld Inhalt
Der Notice-Block im Reiter Design: Ansichtstyp warning und der Text im Feld Inhalt

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>
Der Hinweistext unter dem Band Most popular articles, noch ohne Gestaltung
Der Hinweistext unter dem Band Most popular articles, noch ohne Gestaltung

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

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x