MediaWiki ナビゲーション メニューに「印刷可能バージョン」を追加する方法

MediaWiki ナビゲーション メニューに「印刷可能バージョン」を追加する方法
MediaWiki ナビゲーション メニューに「印刷可能バージョン」を追加する方法

MediaWiki ナビゲーション メニューの拡張

MediaWiki ナビゲーション メニューをカスタマイズすると、ユーザー エクスペリエンスが大幅に向上し、よりアクセスしやすく機能的なツールが可能になります。 MediaWiki 1.39 を Timeless テーマで実行している場合、「印刷可能バージョン」などの特定のオプションを追加するのが難しいと感じるかもしれません。サイドバー メニューの構成が独特であるため、このタスクは簡単ではありません。

管理者の共通の目標の 1 つは、印刷可能なページに簡単にアクセスできる方法をユーザーに提供することです。この機能は、学術Wikiや企業Wikiなど、オフライン資料やハードコピー資料が頻繁に参照される環境には不可欠です。ただし、多くの人は、このプロセスが予想より直感的ではないと感じています。 🖨️

このガイドでは、「印刷可能なバージョン」リンクをナビゲーション メニュー、特に「ランダム ページ」オプションに組み込む方法を説明します。 MediaWiki:Sidebar を使用して変更するには、その構文と Timeless テーマ内での動作をしっかりと理解する必要があります。

行き詰まったり、問題が発生したりしても、心配しないでください。このウォークスルーを終えると、変更を実装する方法がわかるだけでなく、MediaWiki サイドバーがどのように機能するかについても理解できるようになります。この実際的な機能強化について詳しく見ていきましょう。 🌟

指示 使用例
$wgHooks['SkinBuildSidebar'][] このコマンドは、レンダリング中にサイドバー構造を変更できるようにするカスタム フックを MediaWiki に登録します。これは、ナビゲーション メニューを動的にカスタマイズすることに特有です。
$skin->$skin->msg() MediaWiki 内のローカライズされたメッセージまたはリンクを取得します。このコンテキストでは、組み込みの言語設定を使用して、「印刷可能バージョン」機能の URL を動的に取得します。
document.addEventListener('DOMContentLoaded') DOM が完全にロードされた後にのみ JavaScript ロジックが実行されるようにします。これは、既存のナビゲーション メニューを動的に変更する場合に重要です。
document.createElement() li タグや a タグなどの新しい HTML 要素を作成し、フロントエンド ソリューションのナビゲーション メニューに動的に追加します。
arrayHasKey 単体テストで使用され、配列内に特定のキーが存在するかどうかを確認し、「印刷可能なバージョン」オプションがサイドバー構造に正しく追加されたことを確認します。
if (!defined('MEDIAWIKI')) スクリプトが MediaWiki フレームワーク内で実行されるようにし、無許可またはスタンドアロンでの実行を防ぎます。
$GLOBALS['wgHooks'] MediaWiki 内のグローバル フックにアクセスし、開発者がアプリケーションのライフサイクルの特定の時点で機能を動的に追加または変更できるようにします。
link.href 新しく作成されたハイパーリンクの URL を JavaScript で動的に設定し、?printable=yes のようなクエリ パラメータを追加して印刷可能なバージョンをアクティブにします。
SkinBuildSidebar サイドバー要素の直接操作を可能にする特定の MediaWiki フック。新しいリンクやメニュー項目の追加に非常に適しています。
TestCase::createMock() 単体テスト用のモック オブジェクトを作成し、MediaWiki の Skin クラスをシミュレートして、完全な MediaWiki インスタンスを必要とせずにサイドバーの変更を検証します。

MediaWiki ナビゲーション メニューをカスタマイズする方法

上記で提供されたスクリプトは、「ランダム ページ」リンクの下に「印刷可能なバージョン」オプションを追加することにより、MediaWiki ナビゲーション メニューを強化することに重点を置いています。この変更は、フックを使用したバックエンドのカスタマイズまたは JavaScript を使用したフロントエンド スクリプトを通じて実現できます。たとえば、PHP スクリプトは $wgフック 配列と「SkinBuildSidebar」フックを使用して、新しいナビゲーション項目を動的に挿入します。このアプローチにより、追加機能が既存のサイドバー構造とシームレスに統合され、Timeless テーマなどのさまざまなスキンに適応することが保証されます。 🖥️

フロントエンド JavaScript ソリューションは、DOM が完全に読み込まれた後のナビゲーション メニューをターゲットとする、より動的な代替手段を提供します。次のようなコマンドを使用することで、 document.createElement 新しく作成したリスト項目をナビゲーション メニューに追加する場合、このメソッドではバックエンド コードを変更する必要はありません。たとえば、大学の Wiki では、コース資料にアクセスする学生向けに「印刷可能バージョン」機能を迅速に導入して、ライブ サイトへの中断を最小限に抑えることができます。この柔軟性により、バックエンド アクセスが制限されている、または利用できない状況に最適です。 📄

提供されるスクリプトのもう 1 つの重要な側面は、モジュール性とベスト プラクティスに重点を置いている点です。 PHP スクリプトには、MediaWiki フレームワーク内でのみ実行されるようにするためのエラー処理が含まれています。同様に、JavaScript ロジックはナビゲーション メニューを変更する前にその存在を検証するため、実行時エラーのリスクが軽減されます。たとえば、企業 Wiki では、サイドバーが従業員がプロジェクトのドキュメントやレポートにアクセスするための中心的なナビゲーション ハブとなることが多いため、信頼性を確保することが非常に重要です。

単体テストは、「印刷可能なバージョン」リンクがさまざまなシナリオで正しく追加されていることを確認することでスクリプトを補完します。これらのテストでは、モック オブジェクトを使用して MediaWiki 環境をシミュレートすることで、ソリューションがさまざまな構成で動作することを確認します。このテスト プロセスは、展開の問題に対する安全策を提供するため、複数の Wiki を管理する開発者にとって特に価値があります。最終的に、PHP バックエンド フック、フロントエンド JavaScript、または堅牢な単体テストを通じて、スクリプトは最適なパフォーマンスと信頼性で MediaWiki ナビゲーションを強化する多用途の方法を提供します。 🌟

MediaWiki ナビゲーションに「印刷可能なバージョン」オプションを追加する

PHP を使用して MediaWiki サイドバー構成を変更するサーバー側スクリプト。

<?php
// Load MediaWiki's core files
if ( !defined( 'MEDIAWIKI' ) ) {
    die( 'This script must be run from within MediaWiki.' );
}

// Hook into the Sidebar generation
$wgHooks['SkinBuildSidebar'][] = function ( &$sidebar, $skin ) {
    // Add the "Printable version" link below "Random page"
    $sidebar['navigation'][] = [
        'text' => 'Printable version',
        'href' => $skin->msg( 'printable' )->inContentLanguage()->text(),
        'id' => 'n-printable-version'
    ];
    return true;
};

// Save this script in a custom extension or LocalSettings.php
?>

新しいリンクを追加するための MediaWiki サイドバー構成の使用

Timeless テーマの MediaWiki:Sidebar ページを手動で編集する方法。

* navigation
 mainpage|mainpage-description
 recentchanges-url|recentchanges
 randompage-url|randompage
 printable-version|Printable version
* SEARCH
* TOOLBOX
// Save changes in the MediaWiki:Sidebar special page.
// Ensure "printable-version" message key is properly defined.

動的フロントエンドJavaScriptソリューション

JavaScript を使用して「印刷可能なバージョン」オプションを動的に追加するクライアント側スクリプト。

document.addEventListener('DOMContentLoaded', function () {
    const navList = document.querySelector('.mw-portlet-navigation ul');
    if (navList) {
        const printableItem = document.createElement('li');
        printableItem.id = 'n-printable-version';
        const link = document.createElement('a');
        link.href = window.location.href + '?printable=yes';
        link.textContent = 'Printable version';
        printableItem.appendChild(link);
        navList.appendChild(printableItem);
    }
});

サイドバー変更の単体テスト

バックエンドでの「印刷可能なバージョン」の統合を検証するための PHP 単体テスト。

use PHPUnit\Framework\TestCase;

class SidebarTest extends TestCase {
    public function testPrintableVersionLinkExists() {
        $sidebar = []; // Simulate Sidebar data structure
        $skinMock = $this->createMock(Skin::class);
        $callback = $GLOBALS['wgHooks']['SkinBuildSidebar'][0];
        $this->assertTrue($callback($sidebar, $skinMock));
        $this->assertArrayHasKey('Printable version', $sidebar['navigation']);
    }
}
// Run using PHPUnit to ensure robust testing.

高度なカスタマイズによる MediaWiki の強化

MediaWiki インスタンスにカスタム機能を追加すると、単純なナビゲーション メニューの変更を超えることができます。たとえば、管理者は多くの場合、エクスポート オプションの統合やユーザーの役割に基づいたレイアウトのカスタマイズなど、特定のユーザーのニーズに合わせて機能を強化する方法を模索します。 「印刷可能バージョン」の追加を含むこれらの機能強化は、Wiki をより動的でユーザーフレンドリーにするために不可欠です。新しいリンクの統合 MediaWiki サイドバー 大学ポータルや社内文書の固有の要件に合わせてカスタマイズできます。

検討する価値のある領域の 1 つは、新しく追加されたメニュー オプションのローカライズです。たとえば、「印刷可能なバージョン」ラベルがユーザーの言語設定に基づいて動的に翻訳されるようにすると、包括性の層が追加されます。 MediaWiki の組み込みローカリゼーション メソッドを使用する (次のような) $skin->msg()を使用すると、開発者はカスタマイズを MediaWiki の世界標準に合わせることができます。これは、従業員や寄稿者が複数の言語で Wiki にアクセスする多国籍組織で特に役立ちます。 🌍

もう 1 つの重要な考慮事項は、カスタマイズと選択した MediaWiki テーマの間の相互作用です。の 時代を超えたテーマたとえば、互換性を確保するために変更を徹底的にテストする必要がある独自の構造を使用しています。たとえば、「印刷可能なバージョン」のような視覚的に目立つナビゲーション要素は、デバイス間で外観を維持するために追加の CSS 調整が必要になる場合があります。これらの微妙な変更により、ユーザーのデバイスや画面サイズに関係なく、インターフェイスが直感的でプロフェッショナルなままになることが保証されます。 📱

MediaWiki のカスタマイズに関するよくある質問

  1. MediaWiki サイドバーを編集するにはどうすればよいですか?
  2. MediaWiki:Sidebar ページを変更することでサイドバーを編集できます。次のようなコマンドを使用します * navigation そして option|label 新しいリンクを定義します。
  3. 「Timeless」テーマとは何ですか? それはカスタマイズにどのような影響を与えますか?
  4. Timeless テーマは、レスポンシブ デザインを備えた最新の MediaWiki スキンです。サイドバーの変更などのカスタマイズでは、正しく表示されることを確認するために追加のテストが必要になる場合があります。
  5. 新しいサイドバー オプションのローカライズを追加することはできますか?
  6. はい、使用できます $skin->msg() メニュー項目のローカライズされたラベルを取得し、多言語 Wiki との互換性を確保します。
  7. バックエンドコードを変更せずに新しい機能を追加できますか?
  8. はい、フロントエンド JavaScript ソリューションを使用するのと同様です document.createElement() バックエンドを変更せずにリンクや機能を動的に追加できます。
  9. 新しいサイドバー機能をテストするにはどうすればよいですか?
  10. PHP 単体テストまたは PHPUnit などのテスト フレームワークを使用して、サイドバーの変更をシミュレートし、期待どおりに動作することを確認します。

MediaWiki ナビゲーションを洗練する

MediaWiki ナビゲーションに「印刷可能なバージョン」オプションを追加すると、Wiki の使いやすさと構成が向上します。ここで詳しく説明するアプローチでは、PHP スクリプトから JavaScript まで、すべての管理者がカスタマイズにアクセスでき、効果的です。

ローカライズとテーマの互換性を優先することで、Wiki はさまざまな視聴者にとって信頼できるリソースになります。これらの機能強化により、機能が向上するだけでなく、よく管理されアクセスしやすいプラットフォームを反映して、ユーザーフレンドリーなエクスペリエンスも提供されます。 🌟

出典と参考文献
  1. サイドバーのカスタマイズに関する公式 MediaWiki ドキュメント: MediaWiki サイドバー マニュアル
  2. コミュニティのディスカッションと Timeless テーマの構成例: MediaWiki タイムレス テーマ
  3. ナビゲーション メニューのレイアウトを示すサンプル画像: ナビゲーションメニューの例
  4. フックと拡張機能に関する PHP ドキュメント: PHPマニュアル