Я работаю над проектом, который запрашивает очистку кешей после каждой публикации или обновления контента.
Дело в том, что обычно EZpublish делает это самостоятельно, но в моем случае этого не достаточно, поэтому я пытался сделать событие рабочего процесса, чтобы сделать это.
Я консультировался с этим руководство но я не могу вызвать функцию execute, которую создаю.
У кого-нибудь есть идея, как создать событие рабочего процесса, которое вызывается после публикации контента?
Вы можете проверить это tutoriel1 и это tutoriel2 о том, как создать рабочий процесс.
И при создании новой формы события интерфейс администратора ищет тип, который вы только что создали, а не предопределенные типы событий (мультиплексор, approuve ….)
Надеюсь, это поможет.
Вы должны создать расширение, я назову его «yourextension», с новым типом события, я назову его «publishevent».
Примечание: если вы используете eZ Publish до версии 5.0, вы должны пропустить «ezpublish_legacy /» в путях
ezpublish_legacy / продление / yourextension / eventtypes / событие / 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
Вам это поможет?
В качестве примечания: знаете ли вы, что вы можете настроить, какой кэш содержимого истекает после публикации, используя так называемый «кэш интеллектуального просмотра»? Для этого есть INI-файл: viewcache.ini. Это немного загадочно, но достаточно хорошо документировано в онлайн-документах ez4.
Может быть, вы можете обойтись без использования этой функциональности и без пользовательских рабочих процессов?
Примечание 2: вы можете найти в расширении сообщества ezworkflowcollection множество полезных событий рабочего процесса, которые вы можете использовать для разных целей (даже если очистка кэша не входит в их число)