テーマ下テンプレートという概念

テーマ

 状態:  閲覧数:1,427  投稿日:2010-04-09  更新日:
携帯対応を始めて、初めて知った「テーマ下テンプレート」という概念。
携帯だけの機能かと思ったら、どうやらそういうことでもないらしい。

テンプレートを触っていると、バージョンアップとか「物凄く大変」という印象が非常に強かったのだが、そんな問題など、とっくの昔にクリアされていたらしい…。
全然、知らなかった…。

[size=large][color=000000]・DBテンプレートの優先順位[/color][/size]
1) /html/themes/(theme)/templates/(dirname)_(tpl_name)
2) /html/themes/(theme)/templates/(trustdirname)/(tpl_name)
3) 選択されたテンプレートセット内の(tpl_name)
4) defaultテンプレートセット内の(tpl_name)
▼Xoops Users Group Japan - Re: d3forumにWizmobileからゲストによる投稿
  http://www.xugj.org/modules/QandA/index.php?post_id=5639


そもそも、テンプレートは、2種類に大別される。
[size=large][color=0033FF]1.DBテンプレート[/color][/size]
[size=large][color=FF6600]2.ファイルテンプレート[/color][/size]


2.ファイルテンプレートは、さらに2種類に大別される。
[size=large][color=FF6600]2-1.モジュールテンプレート[/color][/size]
[size=large][color=FF6600]2-2.テーマ下テンプレート
[/color][/size]



[size=large][color=0033FF]1.DBテンプレート[/color][/size]
モジュールのtemplates/以下に置かれたファイルから読み出したテンプレートデータをデータベース内に保持する方法。ファイルとしては確認できないが、altsysやテンプレート管理などから確認は出来る。具体的には、下記更新タイミング時に、「XOOPS_ROOT_PATH/modules/(dirname)/templates/に置かれたファイル群」から、データベース内にコピーされる。(既にあった、defaultテンプレートセットのテンプレート内容は上書きされる)

[size=large][color=FF6600]2.ファイルテンプレート[/color][/size]
* 任意の場所にあるファイルを直接テンプレートとして利用する方法
* 更新タイミングも任意

[size=large][color=FF6600]2-1.モジュールテンプレート[/color][/size]
モジュール作者が提供するデフォルトテンプレート。この場所のファイルを書き換えると、モジュールアップデート時に上書き処理することにより、修正内容が消し飛んでしまう可能性があるため、大変危険。
▼Xoops Users Group Japan - 正しいテンプレートカスタマイズ方法 [基本知識] - XUGJ Wiki
  http://www.xugj.org/modules/xpwiki/?%E6%AD%A3%E3%81%97%E3%81%84%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E6%96%B9%E6%B3%95&word=%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%20%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88

[size=large][color=FF6600]2-2.テーマ下テンプレート[/color][/size]
{XOOPS_ROOT_PATH}/themes/{themeset}/templates/
XOOPS の仕様で、themes ディレクトリの中に templates フォルダを作成し、モジュールのテンプレートをコピーする(テンプレートファイルを置く)と、
DBテンプレートやモジュールテンプレートより優先されて、配置したテンプレートファイルが有効になる、というもの。また、アップグレードの際、モジュールフォルダ毎上書きしても、テンプレート修正が消し飛んだりしないので大変便利。d3モジュールの場合は、(モジュールインスタンス名)_(テンプレート名)となることに注意。また、変更を加えるつもりのない、すべてのテンプレートをコピーすると、モジュールのバージョンアップでテンプレートに変更があっても、テーマ下テンプレートが優先されてしまうため、非効率的(カスタマイズするテンプレートのみコピーする方がよい)。なお、同機能は、preloadであるHdXoopsTplHook.class.phpとsmatyプラグインである resource.db.phpにより実現されている。

□HD のテーマ下テンプレートの仕様(d3モジュールの共通テンプレート)
自由なディレクトリ名をつけることができる d3モジュールでは、(モジュールインスタンス名)_(テンプレート名)とすることで、どのモジュールインスタンスのテンプレートなのかを明示して操作。

なお、たくさんのモジュールインスタンスをインストールしていて、全部に共通の変更なんだけど、それぞれ分用意するのが大変な場合、には、themes/YOURTHEME/templates/(モジュール名)ディレクトリを用意し、そこに prefix を持たないファイル名でテンプレートを用意することで、ひとつのモジュールに共通のテンプレートを用意することができる。

例えば、pico モジュールを複数インストールしていて、そのすべての pico で、パンくずの構造をかえたいというような場合、themes/YOURTHEME/templates/pico/ を用意して、そこに inc_breadcrumbs.html を設置し、編集することでインストールしているすべての pico のパンくずを編集可能となる。
▽Xoops Users Group Japan - ホダ塾ディストリビューション [ホダ塾ディストリビューションとは] - XUGJ Wiki
  http://www.xugj.org/modules/xpwiki/?%E3%83%9B%E3%83%80%E5%A1%BE%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3&word=%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%20%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88

□例
▽d3forumのdirnameをどのように変更していたとしても適用
  /templates/d3forum/block_list_forums.html
▽複数のd3forumを利用していて、そのうちの一つだけ異なるテンプレートを利用したい場合
  /templates/d3forum_block_list_forums.html
▼MBXoops - テーマ下テンプレートとは
  http://mbxoops.net/modules/pico/index.php?content_id=29

□テンプレートセット
テンプレートをまとめたもの。defaultテンプレートセットのみが特別で、全種類のテンプレートを持っている。default以外のテンプレートセットは任意のテンプレートのみを持つことができる。
サイト毎に、どのテンプレートセットを利用するかを指定。
・PC-「管理者メニュー」-「互換モジュール」-「デフォルトのテンプレート・セット」
・MB-「管理者メニュー」-「携帯対応モジュール」-「一般設定」-「テンプレートセット」
※MBのdefaultは、PCと同じテンプレを指しているわけではなく、携帯用のテンプレートセット設定する意。
※MBテンプレで、「設定なし」を選択した場合の挙動は不明(PCでは、選択なしを選べない)。

▼Xoops Users Group Japan - 5. テンプレート
  http://www.xugj.org/modules/manual1/content/index.php?id=39


■2011.2.11.追記
テーマ下テンプレートまとめ
▼d3forumインストール
 テーマ下→d3forum
▼d3forumをforumとディレクトリ名を変更してインストール
 テーマ下→forum
▼d3forumをforumとディレクトリ名を変更してインストールした上に、mod_rewriteで、talkへ変更
 テーマ下→forum


メインテーマの「ホーム」を「トップページ」へ変更したい

「FLASH×外部テキスト読込」で試行錯誤した際のメモ/XOOPS