2013-08-05 3 views
1

나는 다양한 이벤트를 처리 할 수있는 자체 플러그인이있는 플러그인을 만들고 있습니다.Joomla : 플러그인 용 플러그인 - '광고'하는 방법은 무엇입니까?

이제이 플러그인이 자신의 "명령"을 추가 할 수있게 할 생각입니다. 그러나 나는 그것을 가장 효율적으로 다루는 방법을 궁금해. 어쨌든 기사에서 검색하는 내 명령 목록이 있습니다. 내가 어쨌든 DoWhatYouWant($article) -event를 트리거해야합니까? 아니면 어쨌든 검색 (및 params 구문 분석)을 수행 할 때 전역 명령 목록을 작성한 다음 "ExecuteCommand($article,$cmd,$params)"이벤트를 트리거 할 수 있습니까? 더 좋게 들리 겠지만 (필자의 프로그램이 무엇을 찾을 지 알 수 있도록)이 명령리스트를 만들어야 할 것입니다. 그래서 모든 플러그인이 어떻게 든 할 수있는 '광고'를해야합니다. 즉, 그것이 처리 할 수있는 명령 - 그리고 나는 그것이 어떻게 행해질 수 있는지 전혀 모른다.

더 나은 (더 표준화 된?) 접근법이 있습니까?

답변

2

당신이 당신의 플러그인을 가져 오는 경우가

JPluginHelper::importPlugin('mycmdplugins'); 

다음 당신은 당신이 지금 알고있는 $의 CMDS 변수로

$cmds = JDispatcher::getInstance()->trigger('onMyAwesomeCmds'); 

처럼 서브 플러그인에서 지원 가능한 모든 명령을받을 수있는 플러그인 도우미에게 여물 어떤 명령이 하위 플러그인에서 지원되며 기사를 구문 분석 할 수 있습니다. 그럼 할 수있어

foreach ($cmds as $cmd) { 
    preg_match_all("{".$cmd."*}", $article->text, $matches, PREG_SET_ORDER); 
    if (!empty($matches)) { 
    JDispatcher::getInstance()->trigger('onMyAwesome'.ucfirst($cmd), array($article, $params)); 
    } 
} 

더 많은 반복 작업을 제거하려면 추가 플러그인이 플러그인 폴더의 기본 클래스를 확장하는 것이 좋습니다.

+0

알려진 명령 집합을 처리하는 플러그인을 처리합니다. 하지만 내 주요 관심사는 플러그인이 자신의 명령을 추가 할 수있게하는 것입니다. 플러그인에 대해서는 신경 쓰지 말고 (반복 작업을 제거하기 위해) 아니면 다른 플러그인 (DoWhatYouWant' 접근법)으로 남겨 두어야합니까? – MBaas

+0

함수를 동적으로 호출하는 방법을 코드로 업데이트했습니다. 이제 다른 플러그인이 edit 명령에 대해 onMyAwesomeEdit을 구현할 수 있습니까? 이 방법을 사용하면 메인 플러그인은이 명령에 플러그인을 사용할 수 있는지 여부를 알 필요가 없습니다. – Laoneo

+0

죄송합니다 - 어쩌면 제 영어가이 설명을하기에는 너무 나쁘거나 어쩌면 너무 많은 가정을하고있었습니다. 희망을 갖고 명확하게하는 데 도움이되는 예제를 추가했습니다. 동적 인 코드는별로 도움이 안된다. 플러그인이 $ cmd가 명령어라는 것을 알지 못하기 때문에 - {텍스트}를 모두 해석하려고 시도하지 않는 한 - 너무 많은 시간이 걸린다. 프로그램이 "실제 후보자"만 볼 수있게 해주는 더 나은 디자인을 찾고 있습니다 ... – MBaas