web-dev-qa-db-ja.com

MediaWikiインストールでtoggleToc()を使用する方法

MediaWiki 1.29を実行しているWikiサイトを管理していますが、ページの目次を折りたたむ問題があります。

Contentsボックスを維持するのは面白いのですが、それでページをロードするとデフォルトで折りたたまれます。

ここに簡単な解決策があるようです https://www.mediawiki.org/wiki/Manual_talk:Table_of_contents#Improved_Solution 、しかし、私はそれを実装することに失敗し、エラーがどこにあるかわからない誰かが助けることができます。

説明に従ってコードを統合し、MediaWiki:Common.jsがサイトで使用されていることを確認しました。

ページのレンダリング中に、Javaコードがロードおよび実行されていることを確認しましたが、失敗したようです。

ReferenceError: toggleToc is not defined

私もこのページをチェックしました https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users)#MediaWiki_1.29 ですが、表には空のセルがあり、説明する必要がありますtoggleToc();を移行します。移行すべきかすべきかも完全にはわかりません。

このトピックに関するヘルプをいただければ幸いです。

ありがとう

ルカ

1
lucamauri

MediaWikiサポートデスクと相談した後、関数がテーブルにリストされているという事実移行方法列にテキストがないReplaced byがこの関数を意味することを最終的に確認しました永久に削除されました。
これは、私の意見では明確に説明されていません。

そのため、関数はすぐに使用できなくなります。
この関数に興味がある人のために、ソースコードはバージョン1.29より古いMediaWikiパッケージにあります。
関数はファイルに書き込まれます

\resources\src\mediawiki\mediawiki.toc.js

これが他の人が物事を整理するのに役立つことを願っています。

0
lucamauri

上記のメディアwikiリンクでは、次のコードを実装する必要があることを説明しています。

// The enclosed code runs only after the page has been loaded and parsed.
window.addEventListener('DOMContentLoaded', function() {
  try {
    // Detect whether the page's TOC is being displayed.
    if (document.getElementById('toc').getElementsByTagName('ul')[0].style.display != 'none') {
      // Use MW's toggleToc() to hide TOC, change "hide/show" link text, and set cookie.
      toggleToc();
    }
  } catch (exception) {
    // Probably this page doesn't have a TOC, ignore the exception to prevent console clutter.
  }
}, false);

上記のコードをWebサイトに実装しており、適切に機能していない場合、上記のコードを最もよく理解できるのは次のとおりです。

`window.addEventListener('DOMContentLoaded', 

ロードされるページコンテンツをリッスンし、次の機能を実行します


if (document.getElementById('toc').getElementsByTagName('ul')[0].style.display != 'none') {     toggleToc(); 

Name = "toc"の要素がdisplay:noneに設定されていない場合、関数 "toggleToc"を実行します


最初に、name = "toc"で定義された要素がdisplay:noneに設定されていないことを確認する必要があります。次に、ページまたは.jsファイルのどこかで関数toggleTocが設定されていることを確認する必要があります。 toggleTocがまだ設定または定義されていない場合は、このコードを自分で記述するか、オンラインでコードを見つけてページまたは.jsファイルに実装する必要があります。

次の通知を受け取ったため:

ReferenceError: toggleToc is not defined

私の最良の推測は、実際にあなたの.jsファイルやWebページに関数toggleTocを持たないということです。そこにあることを確認するためにチェックします。

お役に立てば幸いです。

1
Michael d