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 Workflow-Ereignis

Ein Workflow-Ereignistyp „Log publishing“ von Hand - die Klasse, die Registrierung, das Ansichts-Template, ein Workflow und ein Trigger sowie die Protokollzeile, die er schreibt.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/tutorials/by-hand-workflow-event.md

On this page

This page is a translation. Read the English original

Von Hand: ein Workflow-Ereignis

Tutorial 15. Sie fügen einen Ereignistyp hinzu, der für jede veröffentlichte Version eine Zeile in var/log/mysite_hello.log schreibt. Die Klasse hat php -l bestanden; mit geladenem Kernel hat eZWorkflowType::createType( 'event_mysitepublishlog' ) sie erzeugt, und isAllowed( 'content', 'publish', 'after' ) gab wahr zurück (und falsch für before).

1. Die Klasse

extension/mysite_hello/eventtypes/event/mysitepublishlog/mysitepublishlogtype.php:

<?php
/**
 * Workflow event "Log publishing": writes one line per published version to var/log/mysite_hello.log.
 * Use it on the trigger content / publish / after.
 */
class mysitePublishLogType extends eZWorkflowEventType
{
    const WORKFLOW_TYPE_STRING = 'mysitepublishlog';

    public function __construct()
    {
        parent::__construct( self::WORKFLOW_TYPE_STRING,
                             ezpI18n::tr( 'extension/mysite_hello', 'Log publishing' ) );
        $this->setTriggerTypes( array( 'content' => array( 'publish' => array( 'after' ) ) ) );
    }

    public function execute( $process, $event )
    {
        $parameters = $process->attribute( 'parameter_list' );
        $objectID = isset( $parameters['object_id'] ) ? (int)$parameters['object_id'] : 0;
        $version = isset( $parameters['version'] ) ? (int)$parameters['version'] : 0;

        $object = eZContentObject::fetch( $objectID );
        if ( !$object instanceof eZContentObject )
        {
            // nothing to log; let the operation continue
            return eZWorkflowType::STATUS_ACCEPTED;
        }

        eZLog::write( sprintf( 'Published object %d version %d: %s', $objectID, $version, $object->attribute( 'name' ) ),
                      'mysite_hello.log' );

        return eZWorkflowType::STATUS_ACCEPTED;
    }
}

eZWorkflowEventType::registerEventType( mysitePublishLogType::WORKFLOW_TYPE_STRING, 'mysitePublishLogType' );

2. Die Registrierung

extension/mysite_hello/settings/workflow.ini.append.php:

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

[EventSettings]
ExtensionDirectories[]=mysite_hello
AvailableEventTypes[]=event_mysitepublishlog

*/ ?>

3. Das Template, das der Workflow-Editor zeigt

extension/mysite_hello/design/standard/templates/workflow/eventtype/view/event_mysitepublishlog.tpl:

<div class="element">
    <p>{'Log publishing'|i18n( 'extension/mysite_hello' )}</p>
</div>

Ein Ereignis ohne Einstellungen braucht kein Bearbeitungs-Template; fügen Sie workflow/eventtype/edit/event_mysitepublishlog.tpl hinzu, sobald es Einstellungen erhält (Workflow-Ereignistypen).

4. Einschalten und verdrahten

php -l extension/mysite_hello/eventtypes/event/mysitepublishlog/mysitepublishlogtype.php
php bin/php/ezcache.php --clear-all
  1. Setup > Workflows: Legen Sie in einer Workflow-Gruppe „Log publishing“ an, fügen Sie das Ereignis „Log publishing“ hinzu und speichern Sie.

  2. Setup > Trigger: Wählen Sie für content / publish / after den Workflow und speichern Sie.

  3. Veröffentlichen Sie einen Artikel, dann:

    tail -n 3 var/log/mysite_hello.log

    zeigt eine Zeile Published object <id> version <n>: <name>.

5. Den Trigger danach entfernen

Ein Trigger läuft bei jeder Veröffentlichung auf der Website. Wenn Sie mit dem Ausprobieren fertig sind, setzen Sie den Trigger wieder auf keinen Workflow zurück.

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