2017-10-06 3 views
0

私は小さなwikiを実行しているので、わかりやすいインターフェースが欲しいです。 「Big_news」のようなタイトルのページは、リンクが「Big News」や「Big News」などの大文字小文字順列の場合は赤いリンクとして表示され、通常の色で表示されるようにしたいという苦情がありますページが存在する場合はリンクします。ユーザーがリンクをクリックすると、適切なページが正しく表示されますが、ページがすでに存在していることを確認することをお勧めします。mediawiki - リンク評価で大文字と小文字を区別しないようにする

here,herehereなどのソリューションを実装しようとしましたが、機能しません。リンクは引き続きページ上に赤いリンクとして表示されます。 [確かに、いくつかの記事は古くなっていると思います。 mediawiki 1.27に記載されている表がないようです。]

どのように私はこれを行うことについて行くかもしれない任意のアイデア?

答えて

0

HtmlPageLinkRendererBeginをフックして、リンクターゲットを使用してデータベースクエリを実行して、ページ名の大文字と小文字を区別しない一致を検索することができます(ページタイトルでは内部リンクでのみ行う必要があります)。一致するものがあればターゲットを置き換えます。

0

チップのおかげで、@サム・ウィルソン。興味深い機能のように見えますが、私の推測が間違っていなければ、ページ内のすべてのリンクをデータベースに照会する必要があります。もしそうなら、私はパフォーマンスが低下すると思います。とにかく、そのフックは私のために働くようには思われませんでした[主にメディアウィキの私の不慣れが私の頭を傷つけてしまったからです...]。私が思いついた解決策は以下の通りです:

1 - 変数$wgLinksIgnoreCaseLocalSettings.phpファイルに追加します。リンク表示を大文字と小文字を区別しないで表示する場合は、これをtrueに設定してください。

2 - 次のように[ウィキメディアバージョン1.29のための正確な差分]ファイルincludes/parser/LinkHolderArray.phpを変更する - 私は誰もが馴染みのあるので、もし私は、ソフトウェアに精通していないよ、と言うよう

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)]; 

をそれはより洗練された解決策を見つけると、チャイムインすること自由に感じてください。

+0

LinkCacheは、DB参照の重複を避けるために使用されます。 LinkBatchは、DBルックアップをバッチするために使用されます。しかし、私はほとんどすべて(APIを除いて)タイトルの正規化に頼っていると思うので、それを変えるだけで逃げることができます。 – Tgr

0

あなたはどのように$wgCapitalLinksが使用されているか見ることができます。すべての小文字のタイトルは、その設定に基づいてコードを分岐する必要がある同じ場所に特別なケーシングが必要になる可能性があります。

関連する問題