日本語を記入すると文字化けした話。Commentエレガントでフレキシブルでパワフル。拡張性にも富んだCMS、Symphonyの管理画面に一目惚れ。惚れた欲目と把握した勢いで書いた紹介&解説記事です。CMSはもともと有料のCMSだったようですが現在はMIT/X11ライセンスの元でオープンソースになっています。同名のPHPライブラリがありますが全く関係ありません。管理画面は最低2クリックで投稿画面に行き着くシンプルさ。そのシンプルさは表向きだけで、実際サイトを作り始めるに十分な機能を備えているCMSです。Symphonyで構築された公式サイトを見ればその懐の広さが窺えると思います。最大の特徴はテンプレートがXSLTである事で、出力されるデータ構造がXMLだったりするのでXMLやXSLTがなんなのか分からない場合にはまずそれらについて知る必要が出てきます。XMLとXSLTを熟知している人にとっては願ったり叶ったりなCMSになること請け合いです。開発自体は5年以上経過しているもののオープンソースになったのが2008年なので、検索してもあまり記事が見つかりません。😀なお、管理画面で採用されているJavascriptラブラリはjQueryです。エクステンションが有効である(–with-xsl)ApacheかLitespeedのサーバーApacheのモジュールまたはそれと同等のmod_rewrite※公式で配布されているアンサンブルパッケージの中にはZIPモジュールが必要なものもある。※また、画像をダイナミックにあれこれするためにGDライブラリもあると良い。ZIPをダウンロード後解凍しサーバーに転送後、データベースを作成し、インストールプログラムを起動します。この辺はどのCMSでも似たようなものなので経験者なら大した問題はないでしょう。他にGITとかも対応してますがここでは割愛。インストール画面は当然英語なんですが、他のCMSと似たようなものなので(ryまあ見れば分かる内容だと思います。インストールが完了するとデフォルトのブログサイトが構築された状態になります。アンサンブルパッケージはこの初期状態とプリインストールされているエクステンションが異なるので、フォーラムとかメンバー管理などの込み入った機能が欲しい場合はアンサンブルがおすすめ。上に載せていたスクリーンショットがほんのり日本語になっているのは自前で翻訳したからなんですが、これにはエクステンションにより機能拡張をすることで管理画面の言語変更が可能になります。ダウンロードページには公式のものとユーザーのものが入り乱れて公開されていて、XSLTのユーティリティと合わせれば結構な数があります。成熟したCMSと比べると絶対数は少ないので、欲しいものが見つからなければ自分で作る必要が出てくるかもしれません。どのエクステンションも、ダウンロード後extensionsディレクトリにフォルダをアップロードし、SystemメニューのExtensionsにてEnableにすることで動作します。Managerの場合はPreferences画面に言語を選択する項目が追加されます。Overlayのように、jQueryのプラグインや自作スクリプトをエクステンションとして入れることもできます。OverviewSymphonyは出力データがXMLでテンプレートがXSLTなので、内部構造もXMLっぽい感じになってます。以下は公式の画像を意訳したもの。Sections一番の根本となるのがセクション。入力フォームの設定がメイン。ブログならタイトルと本文とカテゴリー、更新履歴なら日時と本文みたいな具合に投稿する内容に合わせてフォームを追加します。画像はデフォルトテーマのNoteセクションです。XMLツリーだとNotesというエレメントノードにDate、Noteという子ノードが含まれます。Groupというのはロゴ下にあるメニューのことで、ここに文字列を入力するとそれの子メニューとして表示されます。メニューを選択すると次のEntryで解説している画面に移ります。該当するグループがない場合は新しく追加されます。その場合はfloat:leftで既存メニューの右側になります。menuをチェックすると、メニューに表示されなくなります。Entry投稿一覧と投稿画面です。投稿されたデータはID順に羅列されます。編集や新規投稿時にはセクションで設定したフォームが表示されます。Utilitiesを管理する画面です。それぞれがページを構成するパーツで、次の役割があります。Source投稿されたエントリーの表示を制御する。これがないとXMLが出力されない。Utilitiesページテンプレート用のパーツ。部分的に使いまわすXSLTスタイルシート。Eventに関しては普通のサイトはデフォルト状態で事足りると思われる。新しいEventは公式サイトでもダウンロードできます。Sourceデータソースは出力方法を設定するものです。エントリーで記事を投稿してもデータソースが無ければ出力されません。画像はNotesセクションのエントリーを出力するためのデータソース設定画面。Elementsでフィールドを選ぶことでNotesのデータがXMLツリーに出力されます。Resultsで{$current-page-id}などを指定して作成します。Pagesサイトのページ設定です。ページテンプレートとURL設定も兼ねてます。データソース+テンプレート+(イベント)=ページって感じです。何かしらデータソースがないとページ自体表示されません。画像を見るとトップページのリソースとしてNotesを選んでいるのが分かると思いますが、これでトップページで出力されるXMLにNotesエントリーのノードが含まれることになります。出力されるXMLはデバッグ画面(ページのURLに?debug)で参照できます。ページテンプレートはXSLTそのまんまで、ユーティリティのスタイルシートを選んでいるかどうかが表示されるようになっています。DragDropで追加する事は出来ないけど、エクステンションやバージョンアップで出来るようになる可能性はあるかも。XMLのツリー構造はこんな感じ。&lt;data&gt;&lt;events&gt;Eventsノード&lt;/events&gt;&lt;data-source&gt;データソースと同名のノード(Notes→&lt;notes&gt;)&lt;entry&gt;エントリー&lt;/entry&gt;&lt;/data-source&gt;&lt;navigation&gt;Navigationノード&lt;/navigation&gt;&lt;/data&gt;ルート直下の子ノードはdataで、データソースのノードはタイトルがハイフネーションされたものになります。データソースの各エントリーは必ずentryというノードです。以下画像はテンプレートの解説メモ。気づいたことなどXSLTがベースなのでXSLT的に出来ないことは出来ない。"about:legacy-compat">になったりする。フォーマットされたテキストには必ずpタグがついてくる。ビジュアルエディタで入力したタグを出力する場合はcopy-ofで。コンテンツごとにフォームを設定してエントリーを投稿出来るので、データベースやギャラリーなど同じデータタイプの記事を蓄積させていく使い方には非常に向いてます。逆に、普通の商用サイトのようなページ1つ1つの中身を管理するという事はやりづらいです。これは例えば会社概要のページを作ろうとしたときに、ページタイトル以下の中身を編集できるようにセクションを設定すると、ブログのような投稿型なのでエントリー画面は必ず一覧表示になります。中身を書き換える場合にはそこから既存記事を選んで編集をするか新規投稿をするしかなく、少なくともデフォルトの状態ではWordpressのページ管理のように直でページの編集画面に飛ぶってことが出来ません。これは視点を変えればリビジョンとして履歴が残るって見方もできます。エクステンションや改造を駆使すればまだまだ色々なことが出来るんじゃないかと思う。DesignWall.。