テンプレート機能について
ページ/テンプレート[?]
ウィキエンジンX」で使用しているテンプレートについて
Template[?]
下位ページを作るときだけのものでいい。設定は「ここに下位ページを作るときのテンプレートページ名)」。

Wikiの構築に利用する。閲覧時のページレンダリング用テンプレートや、編集時の入力フォームなど、多くのページに見られる共通部分のこと。

スタイルテーマを適用するときだけのもの。

実体はページ。それをテンプレートとして扱うのはビュー。扱い方は埋め込み要素で内容を入れ替えるだけ。ユースケースクライアントからのリクエストに応じて、どのページテンプレートとして使うか判断する。

設定方法は与えられるページページ/属性領域に、テンプレートページ名を書くこと。

レイアウトビューナビゲーションヘッダー…どれもテンプレートの呼び方。どこで使うか、実装がページかそれともプログラミング言語のコードかによって呼び方を変えているだけ。

下位展開を行なうかどうかもテンプレート次第。

:i/下位展開はビューを表すページ

ビューが使うものの他に、何かを作る元になるものもある。

それ以外の例…

タグ
:t/テンプレート
検索
検索:テンプレート

ツールボックス[?]

テンプレートはViewのもの Edit


MVCのViewクラスが参照、Viewクラスだけが使用する。書くのは管理者

:i/レイアウト/ビュー/テンプレートはどれも同じもの

ページに関連付けるがページからは使わない。ページを扱う側(ユースケースビュークラス)で使う。そこにページ/内容を当てはめる。

テンプレートの種類 Edit


どれもは同じ。どういう順番で埋め込みのネストにするかを分かりやすくするための名称でしかない。

メタな名前で埋め込み Edit


「リクエストされたページページ/属性/閲覧ビューにするページ名」といった指定方法で埋め込み

テンプレートにする属性名(この場合「リクエストされたページ」と「閲覧ビュー」部分)を決めるのはフレームワーク/WikiEngineユースケース

→両方になる。フレームワーク/Webアプリケーションフレームワーク/WikiEngineは分けられないときがある。よくない

ビューのためだけページ/属性ユースケースからビューを呼ぶので、使われるのはユースケースの中とも言える。

ページ/属性には…
なんとかビューテンプレートページ名 → テンプレートページ名

…になるよう記述。

ビューからはリクエストされたページビュー自身の名前を含む属性テンプレートページ名テンプレートページページ/内容.ToHtml()(ビューによっては他の形式)

ビューに対応するテンプレートが最上位テンプレート。ここに他のビューと共有するHTMLを埋め込み要素で埋め込む。(セレクターには「リクエストされたページ」を書けなければならない)

リクエストされたページ埋め込み要素か、その位置の前後でテンプレートを分けておいてコードのほうで前.ToHtml()+ページ.ToHtml()+後.ToHtml()

データと設定はすべてページに書くので、ビューテンプレートページにはある。でもそれだけ。

テンプレートはネストする Edit


レイアウトビューページ/内容 のように、テンプレートはネストする。

テンプレートページとの関連付けはページ/属性で行なうので、ページ/属性の「テンプレート」は複数設定できなければならない。

ページ/属性:『属性名が重複したら』

:i/テンプレートはページ名 Edit


継承できるのは完成した1つのテンプレート継承テンプレート部品を集めたり組んだりはしない。

テンプレートの多重継承は却下 Edit


ページ/属性継承処理にテンプレートのためだけの処理を入れても応用が利かない。通常の属性/継承でいい。

属性継承は上位か下位のいずれかを有効にするだけでいい。(上位にあるテンプレートを全て有効に合成するような)多重継承は不可。深い位置のページでは上位のテンプレートをコピペして追記。これで実用になる。

多重継承分かりにくい上に効果は低い。ページ/属性継承処理なのでページだけが特別扱いする記法を導入するというのも。

ページ/内容埋め込みセレクターと併用するほう)は使う。

ナビゲーションのネスト Edit


テンプレートを複数まとめるには埋め込みで。ナビゲーションとして使うテンプレートに他のテンプレート埋め込み

テンプレートテンプレートを適用することでも可能。

テンプレートページ/内容をどう埋め込むか Edit


埋め込み要素とセレクター(リクエストされたページ名)を使って。

テンプレートに限らずいつでもどこでも有効な要素なので、テンプレートページを呼ぶだけで対象ページも付いてくる。

→…ではビュー別のデータコンテキストを反映できないので、ビュークラスのコードを使う。埋め込み位置だけはテンプレート内に書いておく。CSSで位置指定。埋め込み要素ではなくビュークラスだけが解釈できる記法で。

スタイルテーマを適用するときだけのものなので、ビューとは関わらない。

ーーーー

key-valueペアの集合をページ/内容できればいい。そういう記法があれば、それで書いてデータアクセス可能にする。ひとつのページに適用できるテンプレートはひとつまでなので、そこに書かれているのはすべてひとつのテンプレートに収まるコンテンツとなる。

テンプレートとして読まれる側には内容を普通に書いていい。

テンプレートを読む側は、そのページ/属性ページ名(読まれる側ページの名前)を書く。特定のページ/属性が特別扱いされる。

繰り返し部分のプレースホルダーを無くすには Edit


下位展開ビューに必要な繰り返し部分には、対象ページの内容を埋め込むためのプレースホルダー記法がある。これを不要にするには繰り返し部分を前後に分ける。埋め込み前と埋め込み後。テンプレートだけの独自仕様排除。