MODxとは

MODxは強力な機能を備えたCMSです。

操作方法は普通のパソコンソフトに近く、右クリックなどもある程度使えます。

  • ページごとに、デザインをほぼ完全に変更出来る。
  • テンプレート変数というものを自由に作れる。
  • 文章の並べ替え方法がたくさん用意されている。

など、他のCMSにはあまりない特徴を持っています。

階層構造が基本

MODxのコンテンツ連結の形は、いまどき珍しいほどの「純粋な階層構造」です。

トップページ─┬─コンテンツ1─┬─コンテンツ3
       │        │
        └─コンテンツ2 ├─コンテンツ4
                │
                └─コンテンツ5

こんな感じで、綺麗なツリー状にコンテンツを結びつけるのが基本です。Windowsなどでもおなじみの形です(厳密にはちょっと違うところがありますが)。

タグ付け(tagging)もやろうと思えばやれますが、標準機能ではありません。Ditto1.0.1スニペットが出るまでは、自分で一から設計する必要がありました。

MODxは、この「コンテンツの上下関係・コンテンツの存在場所」を目やすにして、いろんな表示を行う事が多いです。

小さいが強力な機能を集め、サイトを作る

MODxは、本体そのものは割とシンプルです。

  • チャンク……HTMLなどで書いたパーツ。
  • スニペット……並べ替えなど、さまざまな処理を行うパーツ。
  • テンプレート変数……ドキュメントの属性みたいなもの。自分で自由に増やせる。
  • プラグイン……MODx本来の動作に割り込んで、別の動作におきかえるパーツ。
  • モジュール……機能を大いに強化するパーツ。

などを密接に連携させ、サイトを作ります。

慣れてくると、「各ページのデザインがぜんぜん違う」みたいなサイトも、割と簡単に作れるようになります。

スニペットの優位性

スニペットは、動作的にはMovable TypeとはのMTタグなどと同じです。「コンテンツを何らかの形で処理」し、一覧表示したり古い記事を過去ログとしてまとめたりします。

MTタグと違うのは、テンプレートだけでなくドキュメント内から呼び出す事が出来る点です。1)

ドキュメント内にこういう「高度なコンテンツ処理を行うパーツ」を置く機能を標準で備えたCMSは、意外と少ないです。2)
MODx以外ではEtomiteTextPatternとはなどで可能です。

ただし、書き方をちょっと間違えると簡単に無限ループになってしまうため、注意が必要です。

ループ処理

  • Movable Typeとは……<MTEntries>~</MTEntries>など、コンテナタグで囲まれた部分がループになる。
  • WordPressとは……<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>~<?php endwhile; else: ?><?php endif; ?>などで囲まれた部分がループになる。
  • MODx……Dittoなど、ループ処理機能を持つスニペットを使う。ループの中身はチャンクとして保存する。

という方法が一般的です。

MODx的なこだわり?

メインの開発者のこだわりなのか、何か深い理由があるのかは不明ですが、MODxにはちょっと妙に感じる部分があります。

「インストール直後は大した事は出来ない」「機能を追加していくといろいろな事が出来るようになる」という点だけDrupalとはと似ていますが、Drupalとはあまりに方向性が違います。Drupalユーザーから見ると、信じがたいCMSかもしれません。

  • ブログならほぼ標準で装備している、更新Ping、トラックバックPingが整っていません。Pingbackもありません。開発者の話やロードマップを見る限り、「急いで搭載する必要はない」とみなされている感じです。
  • ドキュメントは純粋なツリー状階層構造になっています。「1つのドキュメントが複数のフォルダに属する」「下位のフォルダに上位のフォルダが入る(階層構造がループしている)」といった事は原則としてありません。
  • Ditto1.0.1で唐突にTagging対応するまでは、taxonomy3)や、Technorati tagみたいなTagging(タグ付け)はほとんど無視されてきました。「やりたい人は、自分で工夫してやってみて」という感じでした。また、一応対応したもののテンプレート変数との連携が必要なので、設定は結構面倒です。
  • Ajaxは大好きです。MaxiGalleryはLightboxのMODx版ですが、かなりキてます。
  • 「変化するデータはMySQLを使おう」が大原則です。「CSVファイルの読み書きをするスニペット」は、MODx的じゃないです。
  • 「ページを一時的に生成する」のはMODx的じゃないです。たとえば、標準では「サイト内検索の結果を表示するページ」「RSSフィードを表示するページ」をわざわざ作る必要があります。これはテンプレートとも関わってくるため、HTMLや基本的なMODxタグや基本的なスニペットを知らない人はテンプレートの入れ替えでほぼ確実につまづきます。
  • テンプレートの重要性が他のCMSに比べて高い割に、テンプレートの変更が面倒です。開発メンバーは「テンプレート入れ替えはコピー&ペーストで出来るよ。それで十分じゃないか。TextPatternとはだってコピペ入れ替えだし」という考えのようです。
  • テンプレートエンジンを導入する気が全然ないみたいです。「テンプレートエンジンを使うと、柔軟性が失われる」との事です。
  • poファイルやmoファイルも使いません。

まだまだ未完成

MODxを使いこなすには、まず以下の前提条件を満たしていないとつらいです。

  • HTMLとCSSをある程度知っている。
  • PHPのごく基礎的な知識を持っている。
  • 本家サイト(http://modxcms.com/)の英文を読める(≒理解は出来なくても、読む事が出来る)。

さらに、

  • Ditto(以前はNewsListing)など、重要なスニペットの動作とパラメータ設定。
  • テンプレート変数(+ウィジェット、Binding)の使い方。
  • チャンク、スニペット、テンプレート、テンプレート変数、プレースホルダの連携。

あたりを、大体理解している必要があります。
これらをある程度覚えないと、あらゆる部分でつまづきます。その結果「使いにくい低機能なブログ」程度の事しか出来ません。

また、Joomla!とはにあるような、「ネットショップ機能をワンパックで提供」みたいなのも、ほとんどないです。

未完成な部分、日本語に対応していない部分も結構目立ちます。

たとえるなら、

  • 外国の高級食材。しかし、材料のいくつかは足りない。
  • よく切れる包丁や高級鍋。しかし、道具のいくつかは足りなかったり使いにくかったり。
  • 未完成のレシピ。

を使って、自分で一から料理を作るようなものです。

それでも、機能面では非常に魅力的です。「サイトのすみずみまで、自分の思い通りの設計をしたい」という人なら、少々苦労しても使う価値は十二分にあります。

超速の進化。しかし…

MODx本家サイトの解説文を読んでも、「???」な部分がかなりあります。さらに、書いていない事がたくさんあります。

そもそも、MODxは他のCMSとはかなり違う部分が目立ちます。

EtomiteTextPatternとはを使ってきた人(特にEtomite)ならすぐなじむでしょう。でも、日本ではどちらも普及していません。

PukiWikiに慣れた人、Movable TypeとはのEvalTemplateプラグインやWordPressとはのExec-PHPプラグインを多用してきた人なら、理解しやすいかもしれません。

ともかく、

  • 自分である程度使ってみる
  • ソースコードをある程度ながめてみる
  • 日本語の解説サイトなどをある程度見てみる
  • フォーラムで、開発メンバーが語っている内容を少し読んでみる

…というあたりまで来てようやく、全体像がつかめてきます。壁を乗り越えると、急に簡単に使えるようになります。

このCMS、開発メンバーがものすごく精力的に開発を進め、フォーラムで次々に発表するような状況です。昨日までは存在しなかった重要な機能がフォーラムでさりげなく公開される事が、しょっちゅうあります。

なので、マニュアルの作成が全くおいついていません。

というか、「数ヶ月後には仕様を大幅変更するかも→完璧なマニュアルを作っても役に立たなくなる可能性が大→だからマニュアルは基礎的な事だけ書いておく。詳しい事を知りたければ、実際に使って慣れるか、ソースコードを見るか、フォーラムを見てくれ→そういう事情を納得の上で使ってね」という感じです。

リンク

1) MTタグもプラグインを使う事で記事内から呼び出せる
2) プラグインを使う事で可能になるものもあります
3) 分類
 
cms/modx.txt · 最終更新: 2006/06/11 02:02 by admin
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki