2013-08-12 6 views
3

MediaWiki를 사용하고 있습니다. 위키의 페이지 중 일부는이 페이지의 하단에있는 것과 같은, 하나 개 이상의 대형 탐색 블록을 포함 : 이와 같은MediaWiki의 pagelinks에서 페이지 일부를 제외하십시오.

https://www.eftepedia.nl/

블록은 여러 페이지에 포함되어 있습니다. 이제 페이지가 저장되면 다른 페이지에 대한 링크 목록도 업데이트됩니다 (pagelinks 표). 이러한 참조는 '여기에있는 링크'특별 페이지 및 기타 유사한 페이지에서도 사용됩니다.

하지만 사실은이 블록의 링크가이를 원하지 않습니다. 이 update-links-to-other-pages 프로세스에서 MediaWiki가 페이지의 일부분을 제외시킬 수있는 방법이 있습니까?

특정 클래스를 오버라이드하고 일부 후크를 사용 했으므로 그 작동 원리에 대해 알고 있지만 프로세스의이 부분에 영향을 줄 수있는 올바른 방법을 찾을 수는 없습니다.

모든 시도가 끝나면 배열로 파싱 된 링크를 저장하는 데 사용되는 ParserOutput::addLink을 발견했습니다. 그런 다음 저장시이 배열이 데이터베이스에 병합됩니다. addLink는 두 곳에서 가장 많이 호출되며 에서 호출되며 Parser::internalParse에서 호출됩니다.

정확하게 이해하면 각 텍스트마다 internalParse이 별도로 호출됩니다. 여기에는 별도의 포함이 포함되지만 중첩 된 태그도 포함됩니다. 어쩌면 internalParse이라는 후크를 사용할 수도 있지만 아직 성배를 찾지 못했습니다. Parser 클래스 자체를 수정하지 않고 올바른 방향으로 푸시를 사용하여 문제를 해결할 수 있습니다.

답변

6

이 문제를 해결하는 가장 간단한 방법은 링크에 [[wiki link]] 구문을 사용하지 않는 것입니다. 전체 URL이 [http://like/this like this] 인 외부 링크 구문을 사용하고 class="plainlinks"으로 div 또는 span에 래핑하여 일반 내부 링크처럼 보이게 할 수 있습니다. 템플릿에서

: • 그래도위한 템플릿 확인이 덜 고통스러운하려면 NaviLink을, 당신은 것입니다 :

<span class="plainlinks">[{{fullurle:{{{1}}}}} {{{2|{{{1}}}}}}]</span> 

(미디어 위키의 미친 템플릿 구문 야호) (fullurle의 exmplanation를 들어, https://www.mediawiki.org/wiki/Fullurl#URL_data 참조 탐색 템플릿에서)

, 당신은 그 때 사용합니다 예 :

* {{NaviLink|Efteling Golf course}} 
* {{NaviLink|Haunted Castle (Efteling)|Haunted Castle}} 

대신 t의 그는 NaviLink 템플릿을 사용하여 데이터베이스에 아무 것도 넣지 않고 원하는 링크의 HTML을 출력하는 파서 함수 (후크가 아닌)를 구현할 수도 있습니다. 나는 당신이 이것을하는 이유를 모르지만, 원한다면 https://www.mediawiki.org/wiki/Manual:Parser_functions을보십시오.

추 신 : 내부 텍스트는 포함 된 텍스트 비트에 대해 별도로 호출되지 않습니다. 템플리트 확장은 실제 파서가 결과로 나오는 위키 텍스트에서 실행되기 전에 전처리기에 의해 수행됩니다.

+1

이 제안에 감사드립니다. 템플릿을 만들었지 만 구현 방식은 약간 다르지만 일반적인 아이디어는 '{{{2|{{{1|}}}}}}'입니다. 그래, 나는 그것을 덜 읽을 수있게 만들었다. ;) – GolezTrol

+0

그래도 파서 함수를 만들려고합니다. 그 이유는 같은 위키에 두 개의 URL이 있기 때문입니다.하나는 관리자/편집자 버전이고, 하나는 읽기 전용 버전입니다. 일부 수정 사항은 승인되지 않은 페이지 (FlaggedRev 사용)에 대한 링크가 링크 대신 일반 텍스트로 표시된다는 것입니다. 이 기능은이 '외부'링크로 인해 깨졌습니다. 그 이유는 내가 작성한 후크가이 DIY 링크에 대해 분명히 호출되지 않았기 때문입니다. 그럼에도 불구하고이 솔루션은 현재 잘 작동하며 확실하게 나를 도왔습니다. – GolezTrol