トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-sitetemplate/4

ページの作成や編集にはユーザ登録が必要です。

任意名のページをサイドバーに表示するテンプレート(例)

  • 投稿者: A_M
  • カテゴリ: 新規
  • 優先度: 低
  • 状態: 提案
  • 日時: 2005年10月20日 11時56分43秒

 内容

ページを同一Wikiでたくさん管理していくと、ページ毎にサイドメニューを差し替えたい場合もあります。

テンプレート/テーマ変更プラグインを活用すれば、この「サイドメニューの差し替え」を実現できます。

  • tDiary のテーマが 使えます
  • 特別ページ「Menu」を「Menu2」に差し替えます。
    • ここでの公開は、通常サイドバーに表示されるページが「Menu」という名前ではなく、「Menu2」とする例としてアップしています。

サマリには任意名のページをと書きましたが、HTML::Templateモジュールのパラメータとして影響するようですので、半角英数字のページ名でなければ動かないかもしれません。(未確認)

 サンプル

なし(デフォルトとの違いは、サイドバーとして取り込むページが異なるだけです)

 パッケージ

default2.zip(1039)

  • tmpl/default2/default2.tmpl
  • tmpl/default2/default2_handyphone.tmpl(保存名だけ変更)

アップロードしたテンプレートは次項「サイドバー表示の原理」でも記述しますが、Menu 部分を Menu2 に置換え処理しただけのものです。

 動作条件

次のプラグインを活用すると、ページ毎に使い分けできます。

  • BugTrack-plugin/161 - テンプレート/スタイル変更プラグイン(KG 氏)

サイドバー表示の原理

フロントエンドCGI(wiki.cgi)を見ると、サイドバー表示の原理が見えてきます。以下、行番号は全て FreeStyleWiki3.5.9 の wiki.cgi のものとして示します。

258行で、HTML::Template モジュールの出力を行っています(メイン部分のWikiソースがHTMLに変換されている)。この段階では、ヘッダ部や、フッタ部、サイドメニュー部はパースされていないのです。

ちなみに、HTML::Template モジュール用の前処理として、

Wikiに管理されるページは全て 「EXIST_PAGE_(ページ名)」 という名前のパラメータに

「ページが存在するなら真、存在しないなら偽」という具合に処理されています。

260行以降で、<!--FSWIKI_INCLUDE PAGE="(保存ページ名)"--> をパースし、正規表現で置換しています。

つまり、テンプレート内の処理に影響する記述を変更するだけで済みます。

	<!--TMPL_IF NAME="EXIST_PAGE_Menu"-->
	↓
	<!--TMPL_IF NAME="EXIST_PAGE_Menu2"-->
及び
	<!--FSWIKI_INCLUDE PAGE="Menu"-->
	↓
	<!--FSWIKI_INCLUDE PAGE="Menu2"-->

修正に祭して注意点

ケアレスミスにご注意ください。テンプレート内の 「<!--TMPL_VAR NAME="MENU"-->」 という記述は、管理メニューになります。

 ライセンス

GPLです。

 コメント

お名前: コメント:
default2.zip

最終更新時間:2014年01月27日 18時51分55秒