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

Von Hand: ein Modul mit einer View

Die Seite /hello/world/<name> - module.php mit einer Richtlinie, eine View, die ihren Parameter prüft und die Fetch-Funktion verwendet, ein Template im Design standard, alles geprüft.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/tutorials/by-hand-module-with-a-view.md

On this page

This page is a translation. Read the English original

Von Hand: ein Modul mit einer View

Tutorial 12. Sie fügen mysite_hello eine Seite hinzu: /hello/world/Ada begrüßt Ada und listet die neuesten Artikel auf, mithilfe der Fetch-Sammlung aus dem vorigen Tutorial. Die Dateien haben php -l bestanden; mit geladenem Kernel wurde das Modul samt seiner View von eZModule::exists( 'hello' ) gefunden, und das Template wurde wie gezeigt gerendert.

1. module.php

extension/mysite_hello/modules/hello/module.php (der Ordner existiert bereits seit der Fetch-Funktion, und ExtensionRepositories[]=mysite_hello registriert ihn):

<?php
$Module = array( 'name' => 'Hello' );

$ViewList = array();
$ViewList['world'] = array(
    'script' => 'world.php',
    'params' => array( 'Name' ),
    'functions' => array( 'read' ),
    'default_navigation_part' => 'ezcontentnavigationpart' );

$FunctionList = array();
$FunctionList['read'] = array();

Die View verlangt die Richtlinie hello/read.

2. Die View

extension/mysite_hello/modules/hello/world.php:

<?php
/** @var eZModule $Module */
$Module = $Params['Module'];

$name = isset( $Params['Name'] ) && is_string( $Params['Name'] ) && $Params['Name'] !== ''
      ? $Params['Name'] : 'world';

$tpl = eZTemplate::factory();
$tpl->setVariable( 'name', $name );
$tpl->setVariable( 'newest', mysiteHelloFunctionCollection::fetchNewest( 'article', 2, 3 )['result'] );

$Result = array();
$Result['content'] = $tpl->fetch( 'design:hello/world.tpl' );
$Result['path'] = array( array( 'text' => ezpI18n::tr( 'extension/mysite_hello', 'Hello' ), 'url' => false ) );

3. Das Template

extension/mysite_hello/design/standard/templates/hello/world.tpl:

<section class="mysite-hello">
    <h1>{'Hello, %name!'|i18n( 'extension/mysite_hello',, hash( '%name', $name|wash ) )}</h1>
    {if $newest|count}
    <h2>{'Newest articles'|i18n( 'extension/mysite_hello' )}</h2>
    <ul>
    {foreach $newest as $node}
        <li><a href={$node.url_alias|ezurl}>{$node.name|wash}</a></li>
    {/foreach}
    </ul>
    {/if}
</section>

und registrieren Sie das Design in extension/mysite_hello/settings/design.ini.append.php:

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

[ExtensionSettings]
DesignExtensions[]=mysite_hello

*/ ?>

Mit dem Namen Ada <b> gerendert, lautete die Überschrift Hello, Ada &lt;b&gt;!: Der Name wird maskiert, bevor er in den übersetzten Satz eingesetzt wird.

4. Einschalten, gewähren, öffnen

php -l extension/mysite_hello/modules/hello/module.php
php -l extension/mysite_hello/modules/hello/world.php
php bin/php/ezcache.php --clear-all

Gewähren Sie unter Benutzer > Rollen und Richtlinien der Rolle Anonymous (oder einer anderen Rolle) hello/read und öffnen Sie dann /hello/world/Ada. Ohne die Richtlinie erhalten Sie die Seite „Zugriff verweigert“, und genau darum geht es in Schritt 1.

5. Wenn es nicht funktioniert

SymptomAbhilfe
„The requested module does not exist“ExtensionRepositories[], Caches
Zugriff verweigerthello/read gewähren
Layout mit leerem Inhaltsbereichder Template-Pfad, DesignExtensions[] und --clear-id=template-override bei einem neuen Template

6. Committen

git -C extension/mysite_hello add modules design settings
git -C extension/mysite_hello commit -m "Added: The page hello/world, greeting a visitor and listing the newest articles"

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