2014-09-17 3 views
1

MediaWiki에 직원 목록을 표시하는 PHP 스크립트가 있습니다. 또한 특수 페이지가있어서 어떤 사용자가 직원인지를 관리 할 수 ​​있으며 그 점이 잘 작동합니다. 그러나 특별한 페이지에서 백엔드 변경을하면 변경 사항은 해당 페이지를 편집하고 아무 것도 변경하지 않을 때까지 태그가 삽입 된 위키 페이지에 표시되지 않고 저장됩니다.MediaWiki에서 기사로드시 스크립트 새로 고침

내가 잘못 걸려 있기 때문일 수 있습니다. 대신이 고리를 사용하려고하는데 작동하지 않는 것 같습니다. http://www.mediawiki.org/wiki/Manual:Hooks/ArticlePageDataBefore

지금이 고리를 사용하고 있습니다. 변수 이름을 변경해도 작동하지 않습니다.

$wgHooks['ParserFirstCallInit'][] = 'wfEmployeesParserInit'; 

// Hook our callback function into the parser 
function wfEmployeesParserInit(Parser $parser) { 
    // When the parser sees the <sample> tag, it executes 
    // the wfEmployeesRender function (see below) 
    $parser->setHook('employees', 'wfEmployeesRender'); 
     // Always return true from this function. The return value does not denote 
     // success or otherwise have meaning - it just must always be true. 
    return true; 
} 

// Execute 
function wfEmployeesRender($input, array $args, Parser $parser, PPFrame $frame) { 
    ... 

답변

1

감사합니다. 해결책을 찾았습니다.

$wgHooks['ParserFirstCallInit'][] = 'wfNewsParserInit'; 

function wfNewsRender($input, array $args, Parser $parser, PPFrame $frame) 
{ 
    $parser->disableCache(); 
    ... 
+0

귀하의 요구에 충분할지라도 이것이 아마도 최적의 해결책이 아님에 유의하십시오. 이 방법의 문제점은 표시된 데이터가 변경되지 않은 경우에도 확장 기능을 사용하는 모든 페이지가 표시 될 때마다 다시 표시되도록하는 것입니다. 데이터가 자주 변경되지 않는 경우 (예 : 특수 페이지를 통한 수동 편집) 확장 프로그램을 사용하여 페이지 목록을 저장하고 데이터를 업데이트하는 프로세스가 파서 캐시에서 페이지를 제거하는 것이 좋습니다. –

+0

당신이 옳습니다, 그것은 최선의 해결책이 아닐 수도 있습니다. 그러나이 프로젝트는 최대 50 명의 사용자와 3 ~ 4 명의 사용자로 제한되므로이 경우에는 문제가되지 않습니다. –

1

훅은 여기에 책임이 없습니다. 오히려 그것은 MediaWiki의 페이지 캐싱입니다 - 편집되거나주기적인 캐시 삭제가 발생하지 않으면 페이지는 업데이트되지 않습니다. 이 문제를 해결하는 데는 몇 가지 방법이 있습니다. null 편집을 할 수 있습니다. 캐싱을 끌 수 있습니다. MW가 페이지를 다시 렌더링하도록하는 영향을받는 페이지의 내용을 제거 할 수 있습니다. 이러한 방법의 세부 사항

몇 가지 유용한 링크 :

Mediawiki API: Purge

How do I disable caching for pages using my extension?

MW Manual: Purge

How to prevent MW from caching pages

+0

감사합니다. 나는 당신에게 아직 링크를 읽지 않았다. 그러나 어쩌면 당신은 전에 이것을 대답 할 수있다. 내 특수 페이지 스크립트를 변경하면 업데이트하고 싶습니다. 거기에서 강제로 재 캐시 할 수 있습니까? 그럼 해결할 것입니다 :) 그리고 고마워, 나는 이것에 대해 며칠 동안 고생했습니다. –