2016-09-30 5 views
1

Я работаю над проектом, который запрашивает очистку кэшей после каждой публикации или обновления контента. Дело в том, что обычно EZpublish делает это сам по себе, но в моем случае этого недостаточно, поэтому я пытаюсь сделать это событие рабочего процесса.Как настроить рабочий процесс в EZPublish?

Я консультировался с этим tutorial, но я не могу вызвать функцию execute, которую я создаю.

Есть ли у кого-нибудь идеи, как создать событие рабочего процесса, которое вызывается после публикации контента?

ответ

1

Вы можете проверить это tutoriel1 и это tutoriel2 о том, как создать рабочий процесс. И при создании новой формы события интерфейс администрирования ищет тип, который вы создали juste, а не предваряемые типы событий (мультиплексор, Approuve ....) Надейтесь на эту помощь.

1

Вы должны создать расширение, я назову его «yourextension», с новым типом события, я назову его «publishevent».

Примечание: если вы используете Ez Опубликовать до версии 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 

ли это поможет?

+0

спасибо за ответ, у меня есть сделал все это, но все же я не могу найти тексет, который я пишу в функции выполнения, используя eZLog :: write. – Mahmoud

+0

Какой текст вы ищете @Mahmoud? –

+1

Когда я создаю свой рабочий процесс, я добавляю эту строку '(eZLog :: write (« test »))' в моей функции execute, проблема в том, что я никогда не нахожу слово «test» в моем файле «common.log», что означает, что функция execute никогда не вызывается. И это потому, что я использовал мультиплексор Type для моего рабочего процесса Event (спасибо @ ADA15, я заметил это) – Mahmoud

0

В качестве побочного примечания: знаете ли вы, что вы можете настроить кэширование содержимого этого содержимого после публикации с использованием так называемого «интеллектуального кэша просмотров»? Для этого есть файл ini: viewcache.ini. Это немного загадочно, но довольно хорошо документировано в документах ez4 в Интернете. Возможно, вам удастся использовать эту функциональность и не выполнять собственные рабочие процессы?

Примечание стороны 2: вы можете посмотреть расширение сообщества ezworkflowcollection за много полезных события рабочих процессов, которые можно использовать для различных вещей (даже если кэш клиринг не один из них)

 Смежные вопросы

  • Нет связанных вопросов^_^