アーキテクチャ概要
Zittme 上でモジュール・スキン・レイアウト・テーマを作る前に知っておくべき、最小限の構造をまとめます。
Rhymix との関係
Zittme は、Rhymix 2.1.35 から分岐した GPL v2 のエンジンです。サードパーティ制作の観点で重要なのは互換性です。
- コアの名前空間は
Zittme\です。Rhymix\は互換エイリアスとして残っているため、既存の Rhymix 用モジュールがRhymix\Framework\...を呼び出してもそのまま動作します。 - 新しく作るコードは
Zittme\を基準に書いてください。 - Rhymix 用に作られたモジュール・スキン・レイアウトは、ほとんどが修正なしで動作します。Zittme 独自の機能(テーマパッケージ、繰り返しフィールド、レスポンシブ表示)は、Rhymix にインストールしても無視されるだけで、エラーにならないよう設計されています。
フォルダー構成
| パス | 内容 |
|---|---|
common/framework/ | コアフレームワーククラス(Zittme\Framework\...) |
classes/ | レガシーのコアクラス(Context、ModuleHandler など) |
modules/ | モジュール。機能の基本単位 |
layouts/, m.layouts/ | レイアウト(PC / モバイル専用) |
themes/ | テーマパッケージ |
addons/ | アドオン(リクエスト処理の途中に割り込む軽量な拡張) |
widgets/ | ウィジェット |
files/ | アップロードファイル・キャッシュ・設定。サイトのデータなので配布物には含めない |
リクエストの流れ
すべてのリクエストは index.php に入り、2つの値で実行するコードを決めます。
- mid:モジュールインスタンスの名前。サイトマップで作った「掲示板1つ、ページ1つ」がそれぞれ mid です。アドレスの最初の部分になります(
/board、/manual)。 - act:実行するアクション名(
dispBoardContent、procBoardInsertDocument)。モジュールのconf/module.xmlに宣言されたものだけが実行されます。
アクション名には規則があります。
| 接頭辞 | 意味 | 呼び出し方式 |
|---|---|---|
disp | 画面を描画する | GET |
proc | データを処理する | POST(CSRF トークンを自動チェック) |
getApi など | データを返す | 用途に応じて |
アドレスを mid/document-number、mid/write のようにすっきりさせるには、アクションにルートを宣言します。モジュール制作の文書で扱います。
データベース
SQL を直接書きません。クエリは XML ファイル(queries/*.xml)で宣言し、executeQuery('module.query_name', $args) で実行します。テーブルも XML(schemas/*.xml)で宣言すれば、モジュールのインストール時にコアが作成してくれます。詳しくはクエリ XMLをご覧ください。
テンプレート
画面はテンプレートファイル(HTML)で描画します。構文は2つの世代が共存しています。
- v2(推奨):ファイルの1行目に
@version(2)。@if/@foreach/{{ }}スタイル - v1(レガシー):
cond=""、loop=""属性スタイル。既存資料との互換用
新しい資料は v2 で作ってください。テンプレート構文 v2を参照してください。
拡張方法のまとめ
| 作りたいもの | 手段 | 文書 |
|---|---|---|
| 新しい機能(DB、管理画面を含む) | モジュール | モジュール制作 |
| 既存モジュールの見た目 | モジュールスキン | スキン・レイアウト制作 |
| サイト全体の枠組み | レイアウト | スキン・レイアウト制作 |
| レイアウト+スキンのセット | テーマパッケージ | テーマパッケージを作る |
| すべてのリクエストに割り込む軽量な動作 | アドオン | (予定) |
| レイアウトのどこにでも差し込むコンテンツの断片 | ウィジェット | (予定) |