Actions

Difference between revisions of "開発者エリア/ローカルカスタマイゼーション"

From Mahara Wiki

(/local では何ができますか?)
(done.)
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
作成中です - [[User:Mits|mits]] ([[User talk:Mits|talk]])
+
Maharaには'''/local'''ディレクトリが含まれます。これはコアコードを編集せずにMaharaサイトの動作を変更可能にするための複数タイプの'''ローカルカスタマイゼーション'''用フック提供用の中心的な場所です。
 
 
Maharaには '''/local''' ディレクトリが含まれます。これはコアコードを編集せずにMaharaサイトの動作を変更できるようにするための複数タイプの'''ローカルカスタマイゼーション'''用フックを提供するための中心的な場所です。
 
  
 
=== なぜ、/localなのですか? ===
 
=== なぜ、/localなのですか? ===
あなたが新しいウェブサイト管理者の場合、「本当に必要ですか?」と自問することでしょう。私のMaharaサイトをカスタマイズしたい場合、Maharaコードを直接編集してはいかがでしょう?  
+
あなたが新しいウェブサイト管理者である場合、「本当に必要ですか?」と自問することでしょう。私のMaharaサイトをカスタマイズしたい場合、Maharaコードを直接編集してはどうだろう?  
  
その答えは「Maharaのコアコードを修正した場合、アップデートが困難になってしまいます」です。Maharaプロジェクトは定期的に更新をリリースしますが、極めて広範囲にわたる場合もあります。あなたのMaharaコードを全くカスタマイズしていない場合、単に既存のコードを更新済みコードに置換できます。しかし、あなたがMaharaコアファイルをカスタマイズしている場合、そして、私たちがそのファイルを更新している場合、あなたの更新を失ってしまうか、新しいバージョンのファイルの適用方法を見つけ出さなければなりません。特に[https://en.wikipedia.org/wiki/Git_git Git]のような適切なバージョンコントロールを使用することにより、この処理をさらに簡単にできます。しかし、Maharaコアコードの修正を最小限にする方が簡単です。
+
その答えは「Maharaのコアコードを修正した場合、アップデートが困難になってしまいます」です。Maharaプロジェクトは定期的に更新をリリースしますが、極めて広範囲に渡る場合もあります。あなたがMaharaコードを全くカスタマイズしていない場合、単に既存のコードを更新済みコードに置換できます。しかし、あなたがMaharaコアファイルをカスタマイズしている場合、そして、私たちがそのファイルを更新している場合、あなたの更新を失ってしまうか、新しいバージョンのファイルの適用方法を見つけ出さなければなりません。特に[https://en.wikipedia.org/wiki/Git_git Git]のような適切なバージョンコントロールの使用することにより、この処理をさらに簡単にはできます。しかし、Maharaコアコードの修正を最小限にする方が簡単です。
  
/local」ディレクトリはMaharaをカスタマイズするための方法の1つです。プラグインおよびテーマはカスタマイズのための他の主要な方法です。オプションに関する完全なリストは[[Mahara日本語ドキュメント/カスタマイズ|カスタマイズ]]をご覧ください。「/local」ディレクトリはMaharaをカスタマイズするための1つの方法にしかすぎません。プラグインおよびテーマがMaharaをカスタマイズするための主な手段です。オプションの完全なリストに関して[[カスタマイジング]]をご覧ください。
+
/localディレクトリの使用はMaharaをカスタマイズするための方法の1つです。プラグインおよびテーマはカスタマイズのための他の主要な方法です。オプションに関する完全なリストは[[Mahara日本語ドキュメント/カスタマイズ|カスタマイズ]]をご覧ください。/localディレクトリはMaharaをカスタマイズするための方法の1つにしか過ぎません。プラグインおよびテーマがMaharaをカスタマイズするための主な手段です。オプションの完全なリストに関して[[カスタマイジング]]をご覧ください。
  
 
=== /localでは何ができますか? ===
 
=== /localでは何ができますか? ===
 +
過去において、/local内の新しいフックは常にドキュメントが十分に整っているわけではなかったことに留意してください。そのため、あなたにとって最新情報を取得するための最善の方法は実際にコードを調査することです。
  
過去において、/local内の新しいフックは常にドキュメントが十分に整っているわけではなかったことに留意してください。そのため、あなたにとって最新情報を取得するための最善の方法はコードを調査することです。
+
また、あなたがファイルをアップロードできる/local内にはすでに多くのファイルが配置されていることにも留意してください。そのため、あなたがそれらのファイルを編集するには「コアを編集」しなければなりません。しかし、これらのファイルはアップグレード処理中に常にあなた独自のファイルで安全に簡単に上書きできるよう設計されています。
 
 
また、あなたがファイルをアップロードできる /local にはすでに多くのファイルが配置されていることにも留意してください。そのため、あなたがそれらのファイルを編集するには「コアを編集」しなければなりません。しかし、これらのファイルはアップグレード処理中に常にあなた独自のファイルで安全に簡単に上書きできるよう設計されています。
 
  
 
==== フックをインストールする ====
 
==== フックをインストールする ====
 +
ファイル'''local/install.php'''には'''localpreinst()'''および'''localpostinst()'''という名称の関数が含まれます。これらはMaharaのインストール処理中に呼び出されます。localpreinst()はインストール処理の初期段階で呼び出されます。そして、localpostinst()はインストール処理の最終段階で呼び出されます。
  
ファイル '''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/langディレクトリ配下に独自の言語ファイルを配置して既存の[[開発者エリア/言語ストリング|言語ストリング]]をオーバーライドできます。
  
Line 33: Line 27:
  
 
==== ヘルプをカスタムヘルプファイルでオーバーライドする ====
 
==== ヘルプをカスタムヘルプファイルでオーバーライドする ====
 
 
あなたは/local/langディレクトリ配下に独自のヘルプァイルを配置して既存のヘルプファイルのコンテンツをオーバーライドできます。
 
あなたは/local/langディレクトリ配下に独自のヘルプァイルを配置して既存のヘルプファイルのコンテンツをオーバーライドできます。
  
Line 39: Line 32:
  
 
==== カスタムテーマオーバーライド ====
 
==== カスタムテーマオーバーライド ====
 +
あなたは/local/theme/templatesディレクトリをテーマの「テンプレート」ディレクトリとして配下にカスタムテーマを設置できます。同様にあなたはイメージのような静的資源を/local/theme/staticに設置してカスタマイズできます。詳細は[[Customising/Themes/1.10#Local_theme_overrides]]をご覧ください。
  
あなたは/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 ディレクトリに置かれるテンプレートファイルはMahara 1.10以前のバージョンでは現在のテーマディレクトリの下、すべての親テーマの上に順に置かれていました。/local ディレクトリにより既存のページを上書きせずに新しいページを作成できる点で多くの場合において有用です。Mahara 1.10以前のバージョンではプラグインのテンプレートファイルはMaharaに同梱されているテンプレートであっても、/local ディレクトリ経由でカスタマイズできませんでした。現在、Mahara 1.10ではこれらの制限が取り除かれました。/local テーマコンテンツが最初に読み込まれることになり、/local にプラグインのテーマコンテンツを同梱可能となりました。
 
 
 
==== /local/lib.php 内の様々なフック関数 Miscellaneous hook functions in /local/lib.php ====
 
  
 +
==== /local/lib.php内の様々なフック関数 ====
 
Maharaコードベースにはローカル「hook」関数の存在がチェックされる多くの場所を含みます。ローカル「hook」関数が存在する場合、この関数が実行されます。これはサイト管理者がMaharaの主要機能のコアコードを変更せずに変更を提供できることを意味します。
 
Maharaコードベースにはローカル「hook」関数の存在がチェックされる多くの場所を含みます。ローカル「hook」関数が存在する場合、この関数が実行されます。これはサイト管理者がMaharaの主要機能のコアコードを変更せずに変更を提供できることを意味します。
  
Mahara 1.10以降、これらすべては /local/lib.php ファイルのヘッダに文書化されています。以下、いくつかの主要部分です:
+
Mahara 1.10以降、これらすべては/local/lib.phpファイルのヘッダに文書化されています。以下、いくつかの主要部分です:
  
* local_can_remove_viewtype($viewtype): ユーザによる特定タイプのページの削除をブロックできます。
+
* local_can_remove_viewtype($viewtype): ユーザによる特定タイプのページ削除をブロックできます。
* local_get_allowed_blocktypes($category, $view): ページビルダからブロックタイプを削除するため使用できます。Can be used to remove some blocktypes from the page builder.
+
* local_get_allowed_blocktypes($category, $view): ページビルダからブロックタイプカテゴリを削除するため使用できます。
* local_get_allowed_blocktype_categories($view): Can be used to remove some blocktype categories from the page build.r
+
* local_header_top_content(): 戻りデータはほとんどのページ最上部の「head」タグに表示されます。あなたに静止コンテンツの表示のみが必要な場合、Mahara 1.9現在、これは設定オプション「$cfg->additionalhtmlhead」 (lib/config-defaults.phpに記述) を使用して実現できます。
* local_header_top_content(): Returned data is printed at the top of the "head" tag on most pages. (If you only need to print static content, as of Mahara 1.9 you can do this using the $cfg->additionalhtmlhead config option, described in lib/config-defaults.php)
+
* local_main_nav_update(&$menu): メインナビゲーションメニューのコンテンツを修正するため使用できます。
* local_main_nav_update(&$menu): Can be used to modify the contents of the main navigation menu
+
* local_right_nav_update(&$menu): サイドバーのコンテンツを修正するため使用できます。
* local_right_nav_update(&$menu): Can be used to modify the contents of the sidebar
+
* local_register_submit(&$values): 事前登録フックです。$values['extra']に追加されるコンテンツは自動的にusr_registration.extra内のデータベースに保存されます。
* local_register_submit(&$values): Pre-registration hook. Content added to $values['extra'] will be automatically stored in the database in usr_registration.extra
+
* local_post_register($registration): 事前登録フックです。usr_registration.extraに保存されるデータの場所を意味します。これは検索可能であり現在登録中のユーザに適用できます。
* local_post_register($registration): Post-registration hook. Meant to be a place where data stored in usr_registration.extra can be retrieved and applied to the now-registered user.
+
* local_init_user(): グローバル$USERオブジェクト初期化直後のページ読み込み時にコールされるフック関数です。
* local_init_user(): Hook function, called on each pageload immediately after the global $USER object is initiated.
 

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オブジェクト初期化直後のページ読み込み時にコールされるフック関数です。