開発者エリア/ローカルカスタマイゼーション: Difference between revisions
From Mahara Wiki
(done.) |
|||
(60 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Maharaには'''/local'''ディレクトリが含まれます。これはコアコードを編集せずにMaharaサイトの動作を変更可能にするための複数タイプの'''ローカルカスタマイゼーション'''用フック提供用の中心的な場所です。 | |||
=== なぜ、/localなのですか? === | |||
あなたが新しいウェブサイト管理者である場合、「本当に必要ですか?」と自問することでしょう。私のMaharaサイトをカスタマイズしたい場合、Maharaコードを直接編集してはどうだろう? | |||
その答えは「Maharaのコアコードを修正した場合、アップデートが困難になってしまいます」です。Maharaプロジェクトは定期的に更新をリリースしますが、極めて広範囲に渡る場合もあります。あなたがMaharaコードを全くカスタマイズしていない場合、単に既存のコードを更新済みコードに置換できます。しかし、あなたがMaharaコアファイルをカスタマイズしている場合、そして、私たちがそのファイルを更新している場合、あなたの更新を失ってしまうか、新しいバージョンのファイルの適用方法を見つけ出さなければなりません。特に[https://en.wikipedia.org/wiki/Git_git Git]のような適切なバージョンコントロールの使用することにより、この処理をさらに簡単にはできます。しかし、Maharaコアコードの修正を最小限にする方が簡単です。 | |||
/localディレクトリの使用はMaharaをカスタマイズするための方法の1つです。プラグインおよびテーマはカスタマイズのための他の主要な方法です。オプションに関する完全なリストは[[Mahara日本語ドキュメント/カスタマイズ|カスタマイズ]]をご覧ください。/localディレクトリはMaharaをカスタマイズするための方法の1つにしか過ぎません。プラグインおよびテーマがMaharaをカスタマイズするための主な手段です。オプションの完全なリストに関して[[カスタマイジング]]をご覧ください。 | |||
=== /localでは何ができますか? === | |||
過去において、/local内の新しいフックは常にドキュメントが十分に整っているわけではなかったことに留意してください。そのため、あなたにとって最新情報を取得するための最善の方法は実際にコードを調査することです。 | |||
また、あなたがファイルをアップロードできる/local内にはすでに多くのファイルが配置されていることにも留意してください。そのため、あなたがそれらのファイルを編集するには「コアを編集」しなければなりません。しかし、これらのファイルはアップグレード処理中に常にあなた独自のファイルで安全に簡単に上書きできるよう設計されています。 | |||
また、あなたがファイルをアップロードできる / | |||
==== フックをインストールする ==== | ==== フックをインストールする ==== | ||
ファイル'''local/install.php'''には'''localpreinst()'''および'''localpostinst()'''という名称の関数が含まれます。これらはMaharaのインストール処理中に呼び出されます。localpreinst()はインストール処理の初期段階で呼び出されます。そして、localpostinst()はインストール処理の最終段階で呼び出されます。 | |||
これらのメソッドはは空のまま定義されています。あなたの独自コードを追加するため、事前および事後インストール処理として空のメソッドにオーバーライドできます。 | |||
==== DBフック ==== | ==== DBフック ==== | ||
/localディレクトリには独自の「version.php」「insatall.xml」および「upgrade.php」ファイルがあります。これらのファイルは標準のMaharaプラグインに対するのと同じように動作します。Maharaの初回インストール時、データベース構造の定義されたlocal/install.xmlが作成されます。また、local/version.phpのバージョンナンバーが (設定値「localversion」として) データベースに保存されます。local/version.phpのバージョンが増加した場合、Maharaはこれを検知してlocal/upgrade.phpの適切なアップグレードセクションを実行するためのアップグレードスクリプトを実行するよう管理者に促します。 | /localディレクトリには独自の「version.php」「insatall.xml」および「upgrade.php」ファイルがあります。これらのファイルは標準のMaharaプラグインに対するのと同じように動作します。Maharaの初回インストール時、データベース構造の定義されたlocal/install.xmlが作成されます。また、local/version.phpのバージョンナンバーが (設定値「localversion」として) データベースに保存されます。local/version.phpのバージョンが増加した場合、Maharaはこれを検知してlocal/upgrade.phpの適切なアップグレードセクションを実行するためのアップグレードスクリプトを実行するよう管理者に促します。 | ||
==== カスタム言語ストリング | ==== カスタム言語ストリング ==== | ||
あなたは/local/langディレクトリ配下に独自の言語ファイルを配置して既存の[[開発者エリア/言語ストリング|言語ストリング]]をオーバーライドできます。 | |||
あなたは /local/ | |||
詳細は[[開発者エリア/言語ストリング#/localのカスタム言語ストリング]]をご覧ください。 | |||
==== | ==== ヘルプをカスタムヘルプファイルでオーバーライドする ==== | ||
あなたは/local/langディレクトリ配下に独自のヘルプァイルを配置して既存のヘルプファイルのコンテンツをオーバーライドできます。 | |||
詳細は[[開発者エリア/言語ストリング#/local のカスタムヘルプファイル]]をご覧ください。 | |||
==== カスタムテーマオーバーライド ==== | |||
あなたは/local/theme/templatesディレクトリをテーマの「テンプレート」ディレクトリとして配下にカスタムテーマを設置できます。同様にあなたはイメージのような静的資源を/local/theme/staticに設置してカスタマイズできます。詳細は[[Customising/Themes/1.10#Local_theme_overrides]]をご覧ください。 | |||
このように/localディレクトリに置かれるテンプレートファイルはMahara 1.10以前のバージョンでは現在のテーマディレクトリの下、すべての親テーマの上に順に置かれていました。既存のページを上書きせずに新しいページを作成できる点で多くの場合において/localディレクトリは有用です。Mahara 1.10以前のバージョンではプラグインのテンプレートファイルはMaharaに同梱されているテンプレートであっても、/localディレクトリ経由ではカスタマイズできませんでした。現在、Mahara 1.10ではこれらの制限が取り除かれました。/local テーマコンテンツが最初に読み込まれることになり、/localにプラグインのテーマコンテンツを同梱可能となりました。 | |||
==== /local/lib.php内の様々なフック関数 ==== | |||
Maharaコードベースにはローカル「hook」関数の存在がチェックされる多くの場所を含みます。ローカル「hook」関数が存在する場合、この関数が実行されます。これはサイト管理者がMaharaの主要機能のコアコードを変更せずに変更を提供できることを意味します。 | |||
Mahara 1.10以降、これらすべては/local/lib.phpファイルのヘッダに文書化されています。以下、いくつかの主要部分です: | |||
* local_can_remove_viewtype($viewtype): | * local_can_remove_viewtype($viewtype): ユーザによる特定タイプのページ削除をブロックできます。 | ||
* local_get_allowed_blocktypes($category, $view): | * local_get_allowed_blocktypes($category, $view): ページビルダからブロックタイプカテゴリを削除するため使用できます。 | ||
* local_header_top_content(): 戻りデータはほとんどのページ最上部の「head」タグに表示されます。あなたに静止コンテンツの表示のみが必要な場合、Mahara 1.9現在、これは設定オプション「$cfg->additionalhtmlhead」 (lib/config-defaults.phpに記述) を使用して実現できます。 | |||
* local_header_top_content(): | * local_main_nav_update(&$menu): メインナビゲーションメニューのコンテンツを修正するため使用できます。 | ||
* local_main_nav_update(&$menu): | * local_right_nav_update(&$menu): サイドバーのコンテンツを修正するため使用できます。 | ||
* local_right_nav_update(&$menu): | * local_register_submit(&$values): 事前登録フックです。$values['extra']に追加されるコンテンツは自動的にusr_registration.extra内のデータベースに保存されます。 | ||
* local_register_submit(&$values): | * local_post_register($registration): 事前登録フックです。usr_registration.extraに保存されるデータの場所を意味します。これは検索可能であり現在登録中のユーザに適用できます。 | ||
* local_post_register($registration): | * local_init_user(): グローバル$USERオブジェクト初期化直後のページ読み込み時にコールされるフック関数です。 | ||
* local_init_user(): |
Latest revision as of 05:39, 27 September 2020
Maharaには/localディレクトリが含まれます。これはコアコードを編集せずにMaharaサイトの動作を変更可能にするための複数タイプのローカルカスタマイゼーション用フック提供用の中心的な場所です。
なぜ、/localなのですか?
あなたが新しいウェブサイト管理者である場合、「本当に必要ですか?」と自問することでしょう。私のMaharaサイトをカスタマイズしたい場合、Maharaコードを直接編集してはどうだろう?
その答えは「Maharaのコアコードを修正した場合、アップデートが困難になってしまいます」です。Maharaプロジェクトは定期的に更新をリリースしますが、極めて広範囲に渡る場合もあります。あなたがMaharaコードを全くカスタマイズしていない場合、単に既存のコードを更新済みコードに置換できます。しかし、あなたがMaharaコアファイルをカスタマイズしている場合、そして、私たちがそのファイルを更新している場合、あなたの更新を失ってしまうか、新しいバージョンのファイルの適用方法を見つけ出さなければなりません。特にGitのような適切なバージョンコントロールの使用することにより、この処理をさらに簡単にはできます。しかし、Maharaコアコードの修正を最小限にする方が簡単です。
/localディレクトリの使用はMaharaをカスタマイズするための方法の1つです。プラグインおよびテーマはカスタマイズのための他の主要な方法です。オプションに関する完全なリストはカスタマイズをご覧ください。/localディレクトリはMaharaをカスタマイズするための方法の1つにしか過ぎません。プラグインおよびテーマがMaharaをカスタマイズするための主な手段です。オプションの完全なリストに関してカスタマイジングをご覧ください。
/localでは何ができますか?
過去において、/local内の新しいフックは常にドキュメントが十分に整っているわけではなかったことに留意してください。そのため、あなたにとって最新情報を取得するための最善の方法は実際にコードを調査することです。
また、あなたがファイルをアップロードできる/local内にはすでに多くのファイルが配置されていることにも留意してください。そのため、あなたがそれらのファイルを編集するには「コアを編集」しなければなりません。しかし、これらのファイルはアップグレード処理中に常にあなた独自のファイルで安全に簡単に上書きできるよう設計されています。
フックをインストールする
ファイルlocal/install.phpにはlocalpreinst()およびlocalpostinst()という名称の関数が含まれます。これらはMaharaのインストール処理中に呼び出されます。localpreinst()はインストール処理の初期段階で呼び出されます。そして、localpostinst()はインストール処理の最終段階で呼び出されます。
これらのメソッドはは空のまま定義されています。あなたの独自コードを追加するため、事前および事後インストール処理として空のメソッドにオーバーライドできます。
DBフック
/localディレクトリには独自の「version.php」「insatall.xml」および「upgrade.php」ファイルがあります。これらのファイルは標準のMaharaプラグインに対するのと同じように動作します。Maharaの初回インストール時、データベース構造の定義されたlocal/install.xmlが作成されます。また、local/version.phpのバージョンナンバーが (設定値「localversion」として) データベースに保存されます。local/version.phpのバージョンが増加した場合、Maharaはこれを検知してlocal/upgrade.phpの適切なアップグレードセクションを実行するためのアップグレードスクリプトを実行するよう管理者に促します。
カスタム言語ストリング
あなたは/local/langディレクトリ配下に独自の言語ファイルを配置して既存の言語ストリングをオーバーライドできます。
詳細は開発者エリア/言語ストリング#/localのカスタム言語ストリングをご覧ください。
ヘルプをカスタムヘルプファイルでオーバーライドする
あなたは/local/langディレクトリ配下に独自のヘルプァイルを配置して既存のヘルプファイルのコンテンツをオーバーライドできます。
詳細は開発者エリア/言語ストリング#/local のカスタムヘルプファイルをご覧ください。
カスタムテーマオーバーライド
あなたは/local/theme/templatesディレクトリをテーマの「テンプレート」ディレクトリとして配下にカスタムテーマを設置できます。同様にあなたはイメージのような静的資源を/local/theme/staticに設置してカスタマイズできます。詳細はCustomising/Themes/1.10#Local_theme_overridesをご覧ください。
このように/localディレクトリに置かれるテンプレートファイルはMahara 1.10以前のバージョンでは現在のテーマディレクトリの下、すべての親テーマの上に順に置かれていました。既存のページを上書きせずに新しいページを作成できる点で多くの場合において/localディレクトリは有用です。Mahara 1.10以前のバージョンではプラグインのテンプレートファイルはMaharaに同梱されているテンプレートであっても、/localディレクトリ経由ではカスタマイズできませんでした。現在、Mahara 1.10ではこれらの制限が取り除かれました。/local テーマコンテンツが最初に読み込まれることになり、/localにプラグインのテーマコンテンツを同梱可能となりました。
/local/lib.php内の様々なフック関数
Maharaコードベースにはローカル「hook」関数の存在がチェックされる多くの場所を含みます。ローカル「hook」関数が存在する場合、この関数が実行されます。これはサイト管理者がMaharaの主要機能のコアコードを変更せずに変更を提供できることを意味します。
Mahara 1.10以降、これらすべては/local/lib.phpファイルのヘッダに文書化されています。以下、いくつかの主要部分です:
- local_can_remove_viewtype($viewtype): ユーザによる特定タイプのページ削除をブロックできます。
- local_get_allowed_blocktypes($category, $view): ページビルダからブロックタイプカテゴリを削除するため使用できます。
- local_header_top_content(): 戻りデータはほとんどのページ最上部の「head」タグに表示されます。あなたに静止コンテンツの表示のみが必要な場合、Mahara 1.9現在、これは設定オプション「$cfg->additionalhtmlhead」 (lib/config-defaults.phpに記述) を使用して実現できます。
- local_main_nav_update(&$menu): メインナビゲーションメニューのコンテンツを修正するため使用できます。
- local_right_nav_update(&$menu): サイドバーのコンテンツを修正するため使用できます。
- local_register_submit(&$values): 事前登録フックです。$values['extra']に追加されるコンテンツは自動的にusr_registration.extra内のデータベースに保存されます。
- local_post_register($registration): 事前登録フックです。usr_registration.extraに保存されるデータの場所を意味します。これは検索可能であり現在登録中のユーザに適用できます。
- local_init_user(): グローバル$USERオブジェクト初期化直後のページ読み込み時にコールされるフック関数です。