2016-09-30 3 views
1

저는 모든 콘텐츠 게시 또는 업데이트 후에 캐시 지우기를 요청하는 프로젝트 작업을하고 있습니다. 문제는 일반적으로 EZpublish가 자체적으로 수행하지만, 제 경우에는 충분하지 않으므로이 작업을 수행하기 위해 워크 플로 이벤트를 만드는 것입니다.EZPublish에서 워크 플로를 구성하는 방법은 무엇입니까?

나는이 tutorial과상의했지만 작성한 실행 기능을 호출 할 수는 없습니다.

누구나 콘텐츠 게시 후 호출되는 워크 플로 이벤트를 만드는 방법에 대해 알고 있습니까?

답변

1

워크 플로를 만드는 방법에 대해서는 tutoriel1tutoriel2을 확인할 수 있습니다. 그리고 새 이벤트 양식을 만들 때 관리 인터페이스에서 미리 정의 된 이벤트 유형이 아닌 유형 (멀티플렉서, 승인 ...) 이 정보가 도움이되기를 바랍니다.

1

확장을 만들어야하는데, 나는 그것을 "yourextension"이라고 부르고 새로운 이벤트 유형으로 "publishevent"라고 부를 것입니다.

참고 :

: 당신이 레즈 버전 5.0 전에 게시를 사용하는 경우는

ezpublish_legacy/확장/yourextension/eventtypes/이벤트 /의 publishEvent/publisheventtype.php 경로에 "/ ezpublish_legacy"을 떠날 필요가

<?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

감사 (캐시 삭제가 그 중 하나가 아닌 경우에도) 당신이 다른 일에 사용할 수있는 유용한 워크 플로우 많은 이벤트에 대한 지역 사회의 확장 ezworkflowcollection를 찾아 볼 수 있습니다, 내가 가진 이 모든 일을했지만 아직 나는 eZLog :: write를 사용하여 실행 함수에 쓰는 texte를 찾을 수 없다. – Mahmoud

+0

@ 마흐무드를 찾고있는 텍스트는 무엇입니까? –

+1

내 작업 흐름을 만들 때 내 실행 함수에'(eZLog :: write ("test"))'를 추가한다. 문제는 "test"라는 단어가 내 "common.log"라는 파일을 찾지 못한다는 것이다. execute 함수가 호출되지 않는다는 것을 의미합니다. 그 이유는 내 이벤트 워크 플로에 유형 멀티플렉서를 사용했기 때문입니다 (감사합니다 @ ADA15) – Mahmoud

0

사이드 노트 : 소위 '스마트보기 캐시'를 사용하여 게시 할 때 어떤 콘텐츠의 캐시가 만료 될지 조정할 수 있다는 것을 알고 계십니까? 거기에 대한 ini 파일 : viewcache.ini 있습니다. 그것은 다소 수수께끼 같지만 온라인 ez4 문서에 대해 잘 설명되어 있습니다. 이 기능과 사용자 지정 워크 플로를 사용하지 않아도 될까요?

사이드 노트 2 : 당신이 대답