我正在开发一个项目,在每次内容发布或更新后请求清除缓存。 问题通常是EZpublish本身就是这样做的,但在我的情况下它并不适用,所以我试图做的是制作工作流事件来做到这一点。
我已经咨询了这个tutorial,但我无法调用我创建的执行函数。
有人知道如何创建在内容发布后调用的工作流事件吗?
答案 0 :(得分:1)
你必须创建一个扩展名,我会称之为#34; yourextension",使用新的事件类型,我会称之为" publishevent"。
注意:如果您在5.0版之前使用eZ Publish,则必须省略" ezpublish_legacy /"在路径
ezpublish_legacy /扩展/ yourextension /事件类型/事件/ 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 /扩展/ yourextension /设置/ workflow.ini.append.php:
<?php /*
[EventSettings]
ExtensionDirectories[]=yourextension
AvailableEventTypes[]=event_publishevent
*/
不要忘记激活您的新扩展程序。
ezpublish_legacy /设置/超驰/ site.ini.append.php:
[ExtensionSettings]
ActiveExtensions[]=yourextension
这对你有帮助吗?
答案 1 :(得分:1)
您可以查看有关如何创建工作流的tutoriel1 和此tutoriel2。 在创建新事件时,管理界面会查找您创建了juste的Type,而不是预先设定的事件类型(多路复用器,approuve ......) 希望这有帮助。
答案 2 :(得分:0)
作为旁注:您是否知道可以使用所谓的“智能视图缓存”调整哪些内容的缓存在发布时过期?有一个ini文件:viewcache.ini。这有点神秘,但在网上的ez4文档中有相当详细的记录。 也许你可以逃脱使用这个功能而没有自定义工作流程?
附注2:您可以查找社区扩展ezworkflowcollection以获取可用于不同事物的许多有用的工作流事件(即使缓存清除不是其中之一)