xoopsの構成と変更
xoopsの外観
1、モジュール
まず基本的にXOOPSのコンテンツは各モジュールにアクセスすることで表示されます。基本的にメイン表示部分に該当モジュールのindex.phpの中身が表示されます。各モジュールごとに表示するブロック、位置、アクセス権限をそれぞれ設定することで、ユーザーがアクセスしてきたモジュールによって、またアクセスしてきたユーザーの権限によって表示するブロックとその位置を細かく調整することができます。
2、テーマ
XOOPSのテーマは、theme.htmlというテンプレートファイルとそれにリンクしているCSSファイル、それとテーマ内に配置する画像などがひとまとまりになったフォルダです。これを読み込むことでサイトの大枠のデザインが決まることになります。テーマのXOOPSへのインストールは上記のようなフォルダをXOOPS内のthemesディレクトリに入れると完了です。
3、テンプレート
XOOPSでは、各モジュールのメインで表示されるphpスクリプトや、モジュールにひもづいているブロックにもsmartyのテンプレートファイルが用意されています。XOOPSでテンプレート、といったら一般的にこれのことを指します。
ブロック管理
モジュールにアクセスすると、実際にはメイン表示部以外にいろんなブロックが一緒に表示されます。
ブロックの配置できる場所は大きく分けて次のようになります。
| Lブロック | Cセンターブロック | Rブロック | |
| Cレフトブロック | Cライトブロック | ||
| メイン表示部アクセスしているモジュールの内容が表示される。 | |||
このそれぞれのブロック領域にひとつだけでも、複数個でもブロックを配置でき、場合によっては一個もおかない、ということも可能です。
カスタムブロック
通常のブロックは、モジュールが提供しますが、モジュールとは独立して存在するのが「カスタムブロック」です。カスタムブロックはテンプレートを持っていませんがDBに実体はあります。
カスタムブロックは4種類あります。
- H ...テキストサニタイザ処理をなにも通過しない通常HTMLカスタムブロック
- P ...内容がPHPのeval()に渡される特殊なPHPカスタムブロック
- T ...テキストサニタイザ処理を一通りかける通常HTMLカスタムブロック
- S ... Tと同じだが、Smileyだけが無効化された通常HTMLカスタムブロック
そのうち、PHPカスタムブロックだけは特殊で、PHPのeval()関数の引数となります。つまり、出力する場合には、echo文を書くわけです。
また、PHPファイルと異なり、最初からPHPモードになっているため、<?php ?>でくくる必要はありません。その逆に、?> <?phpという形で挿入することで、HTMLモードに切り替えることは可能です。
eval()関数の内側は、関数の様なスコープになっていますので、$xoopsUserなどのグローバル変数を利用する場合には、global宣言を使うか、スーパーグローバル変数$GLOBALSを利用する必要があることに注意してください。
テンプレート
XOOPSではSmartyテンプレートエンジンを利用しています。テンプレートエンジンに渡す雛形のうち、テーマ以外のものをXOOPSでは特に「テンプレート」と呼びます。
テンプレートにはDBテンプレートとFILEテンプレートの2種類があります。
DBテンプレート
モジュールのtemplates/以下に置かれたファイルから読み出したテンプレートデータをデータベース内に保持する方法。更新タイミングはインストール時とアップデート時。
FILEテンプレート
任意の場所にあるファイルを直接テンプレートとして利用する方法。更新タイミングも任意で、タイムスタンプなどで管理することが多い。
テンプレートセット
XOOPSテンプレートシステムは、基本的にDBテンプレートを利用します。DBテンプレートを複数毎束ねたものが、テンプレートセットです。
サイト毎に、どのテンプレートセットを利用するかを、一般設定→一般設定にて指定します。
どのサイトにも必ず存在する特別なテンプレートセットが、defaultテンプレートセットです。セット名を変更することも出来ません。この特別なテンプレートセットは、すべてのモジュールのDBテンプレートを持っています。
ユーザが任意に作成可能なのが、カスタムテンプレートセットであり、名前も自由に指定可能です。DBテンプレートを1枚も持たないテンプレートセットも存在可能です。(利用するテンプレートセット内に呼び出すテンプレートがなければdefaultテンプレートセット内から該当テンプレートを読み出すからです。)
altsysをインストールするとdefaultのテンプレートも編集できますが、止めておいた方がいいでしょう。
管理メニュー->テンプレートマネージャーからdefaultのテンプレートセットを複製してそちらを編集するほうがいいでしょう。altsysではモジュール毎、テンプレート毎の複製が可能です。
テンプレートセットの変更は一般設定->一般設定から設定できます。
テンプレートキャッシュ
モジュールやテーマのテンプレートは読みだされるとPHPのコードを埋め込んだコンパイル済みテンプレートキャッシュが作られます。このキャッシュは、templates_c/フォルダ内に各テンプレート毎に1つずつ独立したファイルとして作られます。
再度コンパイルする必要がない限り、サイトを表示する際に利用されるのは、あくまでこのコンパイルキャッシュです。
テンプレートを変更した後、サイトに変更が反映されないときはテンプレートキャッシュを削除すると変更が反映されることがあります。
テーマの変更
テーマの変更は[システム管理]→[一般設定(サイト一般設定)]→[一般設定]のデフォルトサイトテーマに設定するか、[ブロック管理]から[テーマ選択]ブロックを表示するようにして、サイトからテーマを変更する。
テーマの編集
テーマの編集はCSSやtheme.htmlを編集して、themeフォルダの該当テーマフォルダへアップロードすることでできるが、間違いがあると画面が真っ白になったり、メニューがでなかったりで、ログインもできなくなったりするのでバックアップをとっておくことを推奨します。
管理画面のテーマの変更
altsysがインストールされていれば管理画面のテーマを変更することができます。まず、mainfile.phpの
include XOOPS_ROOT_PATH."/include/common.php";
の直後に
include XOOPS_TRUST_PATH.'/libs/altsys/include/admin_in_theme.inc.php';
を書き加えます。
そして、ALTSYS一般設定の管理画面用テーマ にテーマ名を記入し送信します。これでテーマが変わります。
管理用のテーマは、公開ページで使用すると不具合が出る可能性があるので注意が必要です。
細かいこと
メニューの項目名の変更をするには、モジュール管理から、アイコンの下のテキストを変えることでできます。
by 谷藤卓哉


