2016-06-22 2 views
0

제공되는 검색어를 기반으로 내부 미디어 위키 DB 결과와 외부 SQL 데이터베이스의 결과를 모두 표시하는 플러그인을 작성하려고합니다.Mediawiki 검색 외부 데이터베이스 - prepend hook

나는 모든 검색 코드를 작성했지만 실제로 결과를 표시하는 데 어려움을 겪고 있습니다. Special : Version을 선택했는데 내 확장 프로그램이 나타납니다. 나는이 훅을 시도

:

$wgHooks[ 'SpecialSearchResultsPrepend'][] = 'onSpecialSearchResultsPrepend'; 

내 기능

function onSpecialSearchResultsPrepend($t, $out, $term){ 
    some routine 
} 

입니다, 아직 내가 제대로이 후크에 아무 것도 표시 할 수 없습니다입니다. 또한, 디버그 콘솔에 쓰거나 원시 디버그 텍스트를 인쇄하려고 할 때 내 확장 프로그램에서 아무 출력도 얻지 못합니다.

미디어 위키 문서는 일반 검색 출력을 사용하지 않으려면 false를 반환하도록 지정합니다. 나는 실제로 올바르게 구부려 졌는지 확인하기 위해 이것을 시도했지만, 후크에서 false를 돌려 주면 검색 결과가 비활성화되지 않습니다. 따라서 나는 잘못된 방법으로 후킹을하고 있다고 생각합니다.

이 기능에 연결하는 적절한 방법은 무엇입니까? 별도의 파일, 전역 함수 또는 클래스 내에서 선언했습니다. 아무도 내 문제를 해결하지 못했습니다. 바로 지금, 나는 주 확장 파일에서 'false', 즉 'externalsqlsearch.php'를 반환하려고 시도하고있다.

+1

기본 예 : $ wgHooks [ 'SpecialSearchResultsPrepend 나를 위해,이,

"AutoloadClasses": { "ExternalSQLSearchHooks": "ExternalSQLSearch.hooks.php" }, "Hooks": { "SpecialSearchResultsPrepend": [ "ExternalSQLSearchHooks::onSpecialSearchResultsPrepend" ] }, 

추천하고 ExternalSQLSearch.hooks.php에 베어 예를 보았다 '] [] = function ($ specialSearch, OutputPage $ out) { \t $ out-> addWikiText ('MaxSem이 여기에있었습니다! '); \t false를 반환합니다. }; 제대로 등록하고 echo()가 아닌 출력용으로 $ out을 사용하고 있습니까? – MaxSem

+0

감사합니다. 그 간단한 예제가 효과가있었습니다. 그러나 궁극적으로 필요한 것은이 후크 호출을 확장 파일 자체로 옮기는 것입니다. 웬일인지, 내가 그것을 할 때마다, 확장은로드된다. 그러나 고리는 등록되지 않는다. $ wgSpecialVersionShowHooks를 찾아서 true로 설정 했으므로 이제 적어도 내 후크가 등록되어 있는지 확인할 수 있습니다. –

+0

잘 했어. extensions.json을 통해 후크를 등록해야합니다. 내 대답을 보라. –

답변

0

여기는 Mediawiki 1.26.2에 대한 제 해결 방법입니다. 설명서에서이 항목을 찾을 수 없었지만 다른 확장 기능을 읽지 않고 수집 할 수있었습니다.

후크를 등록하려면 'hooks'섹션의 extensions.json 파일에서이를 지정해야합니다. LocalSettings.php에 넣으면 나를 위해 작동

class ExternalSQLSearchHooks { 

    public static function onSpecialSearchResultsPrepend($t, $out, $term){ 
     $out->addWikiText('Testing'); 
     return true; 
    } 

}