如何在 EZPublish 中配置工作流程?

How to configure a workflow in EZPublish?

我正在做一个项目,要求在每次内容发布或更新后清除缓存。 事情是通常 EZpublish 自己做,但在我的情况下它是不够的,所以我试图做的是制作一个工作流事件来做这件事。

我已经查阅了这个tutorial但是我无法调用我创建的执行函数。

有人知道如何创建在内容发布后调用的工作流事件吗?

您必须创建一个扩展,我将其命名为 "yourextension",使用新的事件类型,我将其命名为 "publishevent"。

注意:如果您使用的是 5.0 版之前的 eZ Publish,则必须在路径中省略 "ezpublish_legacy/"

ezpublish_legacy/extension/yourextension/eventtypes/event/publishevent/publisheventtype.php:

<?php

/**
 * Class PublishEventType
 */
class PublishEventType extends eZWorkflowEventType
{
    function __construct()
    {
        $this->eZWorkflowEventType( 'publishevent', 'description of what you are doing' );
        $this->setTriggerTypes( array(
            'content' => array(
                'publish' => array( 'after' ),
            )
        ) );
    }

    /**
     * This is where your code goes
     *
     * @param eZWorkflowProcess $process
     * @param eZWorkflowEvent $event
     * @return int
     */
    function execute( $process, $event )
    {
        $parameters = $process->attribute( 'parameter_list' );

        if ( isset( $parameters['object_id'] ) && isset( $parameters['version'] ) )
        {
            $objectId = (int) $parameters['object_id'];
            $version = (int) $parameters['version'];

            // your code goes here
        }

        return eZWorkflowType::STATUS_ACCEPTED;
    }
}

eZWorkflowEventType::registerEventType( 'publishevent', 'PublishEventType' );

ezpublish_legacy/extension/yourextension/settings/workflow.ini.append.php:

<?php /*

[EventSettings]
ExtensionDirectories[]=yourextension
AvailableEventTypes[]=event_publishevent

*/

别忘了激活您的新扩展程序。

ezpublish_legacy/settings/override/site.ini.append.php:

[ExtensionSettings]
ActiveExtensions[]=yourextension

这对你有帮助吗?

您可以查看此 tutoriel1 and this tutoriel2 如何创建工作流。 在创建新事件表单时,管理界面会查找您刚刚创建的类型,而不是预定义的事件类型(多路复用器、批准......) 希望对您有所帮助。

附带说明:您知道可以使用所谓的 'smart view cache' 调整哪些内容的缓存在发布时过期吗?有一个 ini 文件:viewcache.ini。它有点神秘,但在 ez4 在线文档中有相当详细的记录。 也许您可以使用此功能而无需自定义工作流?

旁注 2:您可以查找社区扩展 ezworkflowcollection,了解许多有用的工作流事件,您可以将它们用于不同的事情(即使缓存清除不是其中之一)