XOOPS / XOOPS Cubeでテーマファイルを管理画面から編集する
XOOPS / XOOPS Cubeは、管理画面から多くの操作ができるのがポイントなのだけど、いくつかできないことがある。
そのひとつに、サイトの全体構造を決めるテーマファイルが、標準機能ではファイルをFTPなどで直接書き替えるしかない、ということがある。
(ほかには、mydownloadsモジュールなどダウンロード系のモジュールを使う際に、標準ではファイルのアップロードが管理画面からできない、というのがあるが、それはまた別に記事を書くことにする)
そのひとつに、サイトの全体構造を決めるテーマファイルが、標準機能ではファイルをFTPなどで直接書き替えるしかない、ということがある。
(ほかには、mydownloadsモジュールなどダウンロード系のモジュールを使う際に、標準ではファイルのアップロードが管理画面からできない、というのがあるが、それはまた別に記事を書くことにする)
そこで登場するのが、PEAK XOOPSで配布されているdbthemeモジュールである。このモジュールは、テーマファイルをデータベース化して、管理画面からの編集を可能にするモジュールである。
HTMLテーマはもちろん、CSSファイルも管理画面から編集できるので、
なお、このモジュールは、同じくPEAK XOOPSで配布されているaltsysモジュールをインストールしていないと使うことができないので、その点は注意が必要だ。
(おそらく、LinuxのRPMのような関連性チェックはないので、その点はご了承を・・・)
さて、肝心の使い方であるが、まずはdbthemeモジュールをPEAK XOOPSからダウンロードして、解凍して適切に配置してサーバにアップロードした上で、管理画面からインストールをする。
altsysモジュールがインストールされていない場合や最新版でない場合は、こちらも同じくPEAK XOOPSからダウンロードしてインストールする。
いずれのモジュールもXOOPS_TRUST_PATHの設定と、XOOPS_TRUST_PATHの設定に沿った適切なファイル配置が必要なので、わからない人はご自身で調べること。
また、いずれもD3モジュールなので、ディレクトリ名はかなり自由に設定でき、複数設置も可能だ。
さて、おそらく、これだけでそれまで使っていたテーマファイルがデータベースに格納されて、テーマフックブロックが配置されてデータベーステーマの適用が開始されるはずだが、一応チェック項目を。
自分用のメモでもあり、勘違いなどもあるかもしれないので、違う部分があったらご指摘くださいませ
(1)dbthemeモジュールの一般設定で、ベーステーマがそれまで使っていたテーマ名になっていることを確認。違うテーマを元にデータベースを作成したい場合は、一般設定のベーステーマを元にしたいデータベース名にした上で、dbthemeモジュールのアップデートをする。
2008.8.4追記
ベーステーマは、dbthemeモジュールに同梱のnewbase0dbが選ばれる。なので、それまで使っていたテーマ(default等)に差し替える場合は、ベーステーマをdefault等に変更して、モジュール管理画面からアップデートする。
(2)dbthemeモジュールのブロック管理/アクセス権限で、テーマフックブロックが左ブロックの優先度0、表示対象が全ページになっていることを確認。さらに、すべてのグループでdbthemeモジュールアクセス権限とテーマフックブロックにチェックが入っていることを確認。
私はよく、ゲストに権限を与え忘れて、ログアウトしたら表示されない・・・みたいなことをやってしまいます。
(3)dbthemeモジュールのテンプレート管理より、情報が設定されている部分を探して(dbtheme_theme.htmlなど)を探して、CSSにdbthemeのものが指定されていなければ、指定する。
ただし、テーマによっては変更不要の場合もある。
(例)
<link rel="stylesheet" type="text/css" media="all" href="<{$xoops_themecss}>" />
↑自動的にdbtheme内のテンプレートstyle.cssが適用されるので、変更不要。
<link rel="stylesheet" type="text/css" href="<{$xoops_dbthemecssurl}>common.css" />
↑CSS名は、dbthemeモジュールのテンプレート管理で表示されるテンプレート名の「_」以下の部分とする。
上記の例では、テンプレート名がdbtheme_common.cssなので、common.cssとする
※互換モジュールの全般設定(XOOPS 2の場合はsystemモジュールの一般設定)にある「デフォルト・サイトテーマ」は、テーマフックブロックの設定によって上書きされるので、設定・変更不要。
さて、これで、管理画面から自由にテーマファイルをいじることができます!!
変更するときは、dbthemeモジュールのキャッシュなど指定しないように。
あと、私の経験からすると、CSSは何度も読み込むので、セキュリティ対策用のモジュールであるprotectorモジュールでDoS攻撃とみなされてCSSの読み込みができなくなってしまうことがある。
だいぶ長いこと、サーバ負荷が原因でCSSを読まないのかと思っていたけど、protectorモジュールが原因だったなんて。
対処の仕方はいくつか考えられるが、私はprotectorモジュールの一般設定から「DoS監視の対象から外すモジュール」に「dbtheme」(ディレクトリ名を変えている場合は、そのディレクトリ名)を設定しているので、ひとつの選択肢として参考にしてほしい。
HTMLテーマはもちろん、CSSファイルも管理画面から編集できるので、
なお、このモジュールは、同じくPEAK XOOPSで配布されているaltsysモジュールをインストールしていないと使うことができないので、その点は注意が必要だ。
(おそらく、LinuxのRPMのような関連性チェックはないので、その点はご了承を・・・)
さて、肝心の使い方であるが、まずはdbthemeモジュールをPEAK XOOPSからダウンロードして、解凍して適切に配置してサーバにアップロードした上で、管理画面からインストールをする。
altsysモジュールがインストールされていない場合や最新版でない場合は、こちらも同じくPEAK XOOPSからダウンロードしてインストールする。
いずれのモジュールもXOOPS_TRUST_PATHの設定と、XOOPS_TRUST_PATHの設定に沿った適切なファイル配置が必要なので、わからない人はご自身で調べること。
また、いずれもD3モジュールなので、ディレクトリ名はかなり自由に設定でき、複数設置も可能だ。
さて、おそらく、これだけでそれまで使っていたテーマファイルがデータベースに格納されて、テーマフックブロックが配置されてデータベーステーマの適用が開始されるはずだが、一応チェック項目を。
自分用のメモでもあり、勘違いなどもあるかもしれないので、違う部分があったらご指摘くださいませ
(1)dbthemeモジュールの一般設定で、ベーステーマがそれまで使っていたテーマ名になっていることを確認。違うテーマを元にデータベースを作成したい場合は、一般設定のベーステーマを元にしたいデータベース名にした上で、dbthemeモジュールのアップデートをする。
2008.8.4追記
ベーステーマは、dbthemeモジュールに同梱のnewbase0dbが選ばれる。なので、それまで使っていたテーマ(default等)に差し替える場合は、ベーステーマをdefault等に変更して、モジュール管理画面からアップデートする。
(2)dbthemeモジュールのブロック管理/アクセス権限で、テーマフックブロックが左ブロックの優先度0、表示対象が全ページになっていることを確認。さらに、すべてのグループでdbthemeモジュールアクセス権限とテーマフックブロックにチェックが入っていることを確認。
私はよく、ゲストに権限を与え忘れて、ログアウトしたら表示されない・・・みたいなことをやってしまいます。
(3)dbthemeモジュールのテンプレート管理より、情報が設定されている部分を探して(dbtheme_theme.htmlなど)を探して、CSSにdbthemeのものが指定されていなければ、指定する。
ただし、テーマによっては変更不要の場合もある。
(例)
<link rel="stylesheet" type="text/css" media="all" href="<{$xoops_themecss}>" />
↑自動的にdbtheme内のテンプレートstyle.cssが適用されるので、変更不要。
<link rel="stylesheet" type="text/css" href="<{$xoops_dbthemecssurl}>common.css" />
↑CSS名は、dbthemeモジュールのテンプレート管理で表示されるテンプレート名の「_」以下の部分とする。
上記の例では、テンプレート名がdbtheme_common.cssなので、common.cssとする
※互換モジュールの全般設定(XOOPS 2の場合はsystemモジュールの一般設定)にある「デフォルト・サイトテーマ」は、テーマフックブロックの設定によって上書きされるので、設定・変更不要。
さて、これで、管理画面から自由にテーマファイルをいじることができます!!
変更するときは、dbthemeモジュールのキャッシュなど指定しないように。
あと、私の経験からすると、CSSは何度も読み込むので、セキュリティ対策用のモジュールであるprotectorモジュールでDoS攻撃とみなされてCSSの読み込みができなくなってしまうことがある。
だいぶ長いこと、サーバ負荷が原因でCSSを読まないのかと思っていたけど、protectorモジュールが原因だったなんて。
対処の仕方はいくつか考えられるが、私はprotectorモジュールの一般設定から「DoS監視の対象から外すモジュール」に「dbtheme」(ディレクトリ名を変えている場合は、そのディレクトリ名)を設定しているので、ひとつの選択肢として参考にしてほしい。
