2017-10-06 8 views
0

저는 작은 위키를 사용하고 있으며, 사용자들은 덜 혼란 스럽다고 생각하는 인터페이스를 원합니다. 불만 사항은 'Big_news'와 같은 제목의 페이지가 '빅 뉴스'또는 '빅 뉴스'또는 기타 대문자/소문자 순열 인 경우 redlink로 표시되며 일반 색으로 표시되도록하려는 것입니다. 페이지가 있으면 링크. 사용자가 링크를 클릭하면 해당 페이지가 올바르게 표시되지만 미리 페이지가 이미 존재하는지 확인하는 것이 좋습니다.mediawiki - 링크 평가를 대소 문자 구분하지 않음

here, herehere과 같은 솔루션을 구현하려했지만 작동하지 않습니다. 링크는 여전히 페이지에 빨간색 링크로 표시됩니다. [실제로, 나는 몇몇 기사가 오래되었다고 생각한다; mediawiki 1.27에 언급 된 테이블이없는 것 같습니다.]

어떻게 생각 하나할까요?

답변

0

HtmlPageLinkRendererBegin에 연결할 수 있으며 링크 대상을 사용하여 데이터베이스 쿼리를 실행하여 페이지 이름에 대해 대소 문자를 구분하지 않는 일치 항목을 찾습니다 (페이지 제목에서는 내부 링크에만 해당). 일치하는 것이 있으면 대상을 교체하십시오.

0

감사합니다. @ Sam Wilson. 흥미로운 기능처럼 보이지만 추측을 놓치지 않으면 페이지의 모든 단일 링크에 대해 데이터베이스를 쿼리해야합니다. 맞습니까? 그렇다면 성능이 떨어질 것이라고 생각합니다. 어쨌든, 그 후크가 나를 위해 작동하지 않는 것 같아요. 대부분 미디어 위키에 익숙하지 않아서 저의 머리를 긁어 버렸기 때문입니다. 내가 해결할 솔루션은 다음과 같습니다.

1- 변수 $wgLinksIgnoreCaseLocalSettings.php 파일에 추가하십시오. 링크 표시를 대소 문자를 구분하지 않으려면 true으로 설정하십시오. 내가 말한대로

283a284 
>    global $wgLinksIgnoreCase; 
370a373,376 
>    if (!empty($wgLinksIgnoreCase)) { 
>     $mapper = array_combine(array_keys($colours), array_keys($colours)); 
>     $mapper = array_change_key_case($mapper); 
>    } 
373a380,381 
>    if (!empty($wgLinksIgnoreCase) && isset($mapper[strtolower($pdbk)])) 
>     $pdbk = $mapper[strtolower($pdbk)]; 

익숙한 누구 누구 경우 그래서, 소프트웨어를 잘 알고 아니에요 - [위키 미디어 버전 1.29에 대한 정확한 DIFF을 다음과 같이

2 파일 includes/parser/LinkHolderArray.php을 수정 더 우아한 솔루션을 찾으십시오.

+0

LinkCache는 중복 DB 조회를 피하기 위해 사용됩니다. LinkBatch는 DB 조회를 일괄 처리하는 데 사용됩니다. 그렇지만 Title의 제목 정규화에 의존하는 거의 모든 것 (API 제외)을 기대할 수 있습니다. – Tgr

0

당신은 어떻게 $wgCapitalLinks을 사용하고 있는지 확인할 수 있습니다. 모든 소문자 제목은 해당 설정을 기반으로 코드를 분기해야하는 동일한 장소에서 특수 케이스가 필요할 가능성이 있습니다.