如何在 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,了解许多有用的工作流事件,您可以将它们用于不同的事情(即使缓存清除不是其中之一)
我正在做一个项目,要求在每次内容发布或更新后清除缓存。 事情是通常 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,了解许多有用的工作流事件,您可以将它们用于不同的事情(即使缓存清除不是其中之一)