4

MediaWiki を使用しています。wiki の一部のページには、このページの下部にあるような 1 つ以上の大きなナビゲーション ブロックが含まれています。

https://www.eftepedia.nl/

このようなブロックは多くのページに含まれています。現在、ページが保存されると、他のページへのリンクのリストも更新されます (pagelinks表)。これらの参照は、「What links here」の特別ページや、おそらく他の同様のページでも使用されています。

しかし、実際には、これらのブロック内のリンクがそのためにカウントされることは望んでいません。この他のページへのリンクの更新プロセスで、ページの一部を除外するように MediaWiki に影響を与える方法はありますか?

私はいくつかの拡張機能を作成し、特定のクラスをオーバーライドし、いくつかのフックを使用したので、それらがどのように機能するかの基本は知っていますが、プロセスのこの部分に影響を与える適切なフックを見つけることができません.

試みが行われる限り、ParserOutput::addLink解析されたリンクを配列に格納するために使用される が見つかりました。次に、保存時に、この配列がデータベースにマージされます。addLink はいくつかの場所から呼び出されますが、特に からParser::replaceInternalLinks2呼び出されParser::internalParseます。

私が正しく理解していればinternalParse、テキストごとに個別に呼び出されます。これには、個別のインクルードだけでなく、ネストされたタグも含まれます。で呼び出されたフックを使用できるかもしれませinternalParseんが、まだ聖杯を見つけていません。できれば Parser クラス自体を変更せずに、正しい方向へのプッシュを使用して解決できます。

4

1 に答える 1

6

これを回避する最も簡単な方法は[[wiki link]]、リンクの構文を使用しないことです。完全な URL で外部リンク構文を使用[http://like/this like this]し、class="plainlinks". これを簡単にするために、そのためのテンプレートを作成します。

Template:NaviLink では、次のようになります。

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

(mediawiki の常軌を逸したテンプレート構文にはうんざりです) ( の説明については、 https:fullurle //www.mediawiki.org/wiki/Fullurl#URL_data を参照してください)

ナビゲーション テンプレートでは、次のように使用します。

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

NaviLink テンプレートの代わりに、データベースに何も入力せずに、目的のリンクの HTML を出力するパーサー関数 (フックではない) を実装することもできます。なぜこれを行うのかわかりませんが、必要に応じてhttps://www.mediawiki.org/wiki/Manual:Parser_functionsをご覧ください。

PS: internalParse は、含まれているテキストのビットに対して個別に呼び出されません。テンプレートの拡張は、結果のウィキテキストに対して実際のパーサーが実行される前に、プリプロセッサーによって行われます。

于 2013-08-13T10:33:46.350 に答える