Actions

開発者エリア/ローカルカスタマイゼーション

From Mahara Wiki

作成中です - mits (talk)

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内の様々なフック関数 Miscellaneous hook functions in /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オブジェクト初期化直後のページ読み込みの際にコールされるフック関数です。