Opened 12 years ago
Closed 12 years ago
#2892 closed enhancement (fixed)
特定のモジュールの特定のテンプレートをプラグインなどから自由に拡張できるようにする
Reported by: | ebihara | Owned by: | ebihara |
---|---|---|---|
Priority: | major | Milestone: | OpenPNE3alpha2 |
Component: | 指定しない | Version: | |
Keywords: | Cc: |
Description (last modified by )
特定のモジュールの特定のテンプレートをプラグインなどから自由に拡張できるようにする
Change History (12)
comment:1 Changed 12 years ago by
Owner: | changed from nobody to ebihara |
---|---|
Status: | new → assigned |
comment:2 follow-up: 3 Changed 12 years ago by
以下のような形での実現を考えています。
- パーツ(OpenPNE2 における simpleBox など)を、テンプレート部品としてヘルパーによって読み込むようにする
- タイトルや本文などはヘルパーのパラメータとして渡す
- 読み込むパーツは General, List など抽象的な名前によって指定される。具体的なパーツの見た目は、パラメータによって形を変えていく
- simpleBox に 日付を与えると diaryDetailBox になるなど
- パーツのテンプレート部品の各部分をパーシャルによって拡張できるようにする
- アプリケーションのモジュール内もしくはプラグインのモジュールに内にある特定の命名規則のファイルをすべて自動で読み込む
comment:3 follow-up: 4 Changed 12 years ago by
Replying to ebihara:
- パーツのテンプレート部品の各部分をパーシャルによって拡張できるようにする
- アプリケーションのモジュール内もしくはプラグインのモジュールに内にある特定の命名規則のファイルをすべて自動で読み込む
ですが、コンポーネントスロットの利用も視野に入れて考えます。
comment:4 follow-up: 5 Changed 12 years ago by
Replying to ebihara:
Replying to ebihara:
- パーツのテンプレート部品の各部分をパーシャルによって拡張できるようにする
- アプリケーションのモジュール内もしくはプラグインのモジュールに内にある特定の命名規則のファイルをすべて自動で読み込む
ですが、コンポーネントスロットの利用も視野に入れて考えます。
おそらくコンポーネントスロットで実現可能です。プラグイン側から、特定モジュールの特定アクションの特定パーツの拡張領域に独自のテンプレート部品を組み込むことは可能でした。
問題はひとつのコンポーネントスロットに複数のテンプレート部品を埋め込むことができない点(sideMenu というコンポーネントスロット領域に対して複数の sideMenu コンポーネントスロットを埋め込むことはできず、最後に読み込まれたもので上書きされてしまう)で、これについては何かしらの手段で解決をする必要があります。
comment:5 Changed 12 years ago by
Replying to ebihara:
Replying to ebihara:
Replying to ebihara:
- パーツのテンプレート部品の各部分をパーシャルによって拡張できるようにする
- アプリケーションのモジュール内もしくはプラグインのモジュールに内にある特定の命名規則のファイルをすべて自動で読み込む
ですが、コンポーネントスロットの利用も視野に入れて考えます。
おそらくコンポーネントスロットで実現可能です。プラグイン側から、特定モジュールの特定アクションの特定パーツの拡張領域に独自のテンプレート部品を組み込むことは可能でした。
問題はひとつのコンポーネントスロットに複数のテンプレート部品を埋め込むことができない点(sideMenu というコンポーネントスロット領域に対して複数の sideMenu コンポーネントスロットを埋め込むことはできず、最後に読み込まれたもので上書きされてしまう)で、これについては何かしらの手段で解決をする必要があります。
- アプリケーションのモジュール内もしくはプラグインのモジュールに内にある特定の命名規則のファイルをすべて自動で読み込む
- ひとつのコンポーネントスロットに複数のテンプレート部品を埋め込む
以上の OpenPNE 独特のニーズから考えて、コンポーネントスロットの仕組みを更に拡張した OpenPNE 独自の仕組みを用意し、それを利用する方向で実現してみようと考えています。
comment:6 Changed 12 years ago by
あまりいい手が思い浮かばないので、ひとまずログイン画面は
- 実験的にログイン用のパーツを作成しコンポーネントスロットによる拡張が可能な形にする
- 1. で提示した仕組みを利用して認証プラグイン毎にログイン画面を拡張できるようにする
という形で実装しようと思います。
comment:7 Changed 12 years ago by
Description: | modified (diff) |
---|
r7979 で実験的にログイン画面を拡張できるようにする機構を追加しました。
comment:8 Changed 12 years ago by
Description: | modified (diff) |
---|---|
Priority: | minor → major |
Summary: | 特定のモジュールの特定のテンプレートやアクションに対して、特定のモジュールから自由に拡張できるようにする → 特定のモジュールの特定のテンプレートに対してプラグインなどから自由に拡張できるようにする |
このチケットの対応範囲を、「テンプレート・アクション」から「テンプレート」のみに限定します。
comment:9 Changed 12 years ago by
Description: | modified (diff) |
---|---|
Summary: | 特定のモジュールの特定のテンプレートに対してプラグインなどから自由に拡張できるようにする → 特定のモジュールの特定のテンプレートをプラグインなどから自由に拡張できるようにする |
comment:10 Changed 12 years ago by
ロジック(アクション)の拡張についてはここでは考慮しないようにし、スロットの仕組みを利用していくことでスマートな実装になるように思えます。
- ひとつのスロットに複数のテンプレート部品を埋め込むことができるようなヘルパーを記述する
- パーツ側の拡張領域では、通常の include_slot() ではなく、 1. で作成したヘルパーを使ってテンプレート部品を読み込む
考慮しなければならないのは、テンプレート部品がプラグインに存在する場合、プラグインが(OpenPNEから見て)有効であるかどうかということです。これについては 1. を実装していく過程で整えていきたいと思います。
comment:11 Changed 12 years ago by
comment:12 Changed 12 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
テンプレートを拡張する機構については #2863 の対応に必要です(ログインアクションにおいて新規登録用アクションへのナビゲーションを変更する必要があるため)。
しばらくは #2863 と平行して取り組んでいきます。