MODxをmodxに

いまさらですが、「MODx」の正式名称が「modx」になっているので、このブログのタイトルもそれに合わせました。

MODx」に慣れていたためか、「modx」は、字面として、たよりない感じがして、個人的には前の方が良いような気がしていたのですが、「modx」も、よく見るとかわいい感じで、親しみやすいかもしれないと、思い改めました。

日本公式サイトに、新しいロゴとともに説明が書いてあります。
入力等がしやすいように配慮されたとのことです。

ロゴはこちら

オープンソースカンファレンス2009 Kansai に出ます

既に、MODx公式フォーラムやMODx日本公式サイトなどで告知が出ていますが、
京都で行われる
オープンソースカンファレンス2009 Kansai
http://www.ospn.jp/osc2009-kansai/
に、7月10日(金)だけですが、MODx CMS JAPANとして、モデレータのthrさんと、セミナーやったり、展示ブースを出したりすることになりました。

ぜひ、多くの方と交流できればと思っています。
特に、西日本では、MODxユーザやMODxに興味を持たれている方にお会いするような機会がなかなか無かったので、とても楽しみにしています。

= ブースのお知らせ ======================
開催時間:
7/10(金)10時〜18時
出展会場:
6階(CMS関連ブース)
======================================

=セミナーのお知らせ =====================
講演時間:
7/10(金)16時15分〜17時
セミナー会場:
5階-503教室
http://www.ospn.jp/osc2009-kansai/modules/eguide/event.php?eid=55

              • -

■中小サイト構築でビジネスするならMODx(仮)■
対象者:サイト構築にかかわる人、関心のある人

デザイナーが作ったページをそのまま使えるMODxなら、サイト制作のスキルがそのまま生かせます。
構造も自由。FlashAjaxPHPで拡張も、社内・社外の協業もスムーズ。
ウェブ制作会社の事例を交えながら紹介します。
======================================

MODxの入力画面をカスタマイズするManagerManagerプラグイン利用ガイド

このブログでも何度か取り上げていますが、MODxの管理画面で、ドキュメント作成/編集画面をカスタマイズするプラグイン「ManagerManager」について、あまり日本語の資料を見かけたことがなかったので、利用ガイド的なページを作りました。
http://www.hikidas.com/hikidas/modx_document/ManagerManager.php
リファレンス部分は未完成ですが、これから使ってみようという人には、とっかかりにしてもらえれば幸甚です。

CSVを使ってドキュメントやウェブリンクを一括登録するMODxモジュール「Csv2Doc」

CSVを使ってMODxのドキュメントやウェブリンクを一括登録するMODx用モジュール「Csv2Doc」を公開しました。(バージョン0.9.2)

くわしくは、このページ(弊社サイト)
http://www.hikidas.com/hikidas/modx_resource/Csv2Doc.php
とか、このページ(MODx公式フォーラム)
http://modxcms.com/forums/index.php/topic,36903.0.html
に書いたので、そちらを見てください。

実は、このモジュール、ちょうど今から1年前に最初のバージョンを作りました。
当時は、PHPわずか300行ほどのモジュールで、そこから継ぎ足し継ぎ足し、ここまでバージョンアップを重ねてきました。
ほんとは、恥ずかしくて人前に出せるような代物ではないのですが、今度のMODx情報交換会(6月20日)のネタの一つでもあるので、これを機会に思い切って公開することにしました。
でないと、いつまでもずるずると公開できないような気がしたので…
ま、そういうわけで、いろいろ至らない箇所も多々あるかと思いますが、それなりに使えるモジュールだと思いますので、皆様にかわいがっていただけることをひそかに祈っている次第です。

DittoとPHx(プラグイン)の相性

たとえば、DittoやJot、MaxiGallery等のスニペットにはPHxが同梱されていますが、これらはそれぞれの(DittoのPHxならDittoの)スニペットの中だけで使えるもので、例えば、ページやテンプレート等にPHxを使いたければ、別途、プラグインとしてPHxをインストールする必要があります。

ところが、これが曲者で、プラグインとしてPHxをインストールし、動かすと、Dittoのpaginate(ページング)が使えなくなる等の副作用があります。

PHxは、ちょっとしたフィールドの制御など、とても便利なのですが、その副作用の影響が大きかったりするので、ヒキダスでは、残念ながらDitto等スニペットに同梱されているPHxだけの利用になるケースがほとんどです。

DittoのorderByパラメータによる、複数フィールドを使った並べ替え(ソート)

Dittoで並べ替え(ソート)を指定する方法に、「sortBy」と「sortDir」パラメータによる、単一のフィールドを使った並べ替え指定がありますが、これ以外に、「orderBy」パラメータを使って、複数のフィールドを使った並べ替え(ソート)を指定することができます。

例)

[!Ditto? &ordeBy=`menuindex ASC,pub_date DESC` &language=`japanese-utf8`!]

この例では、メニューインデックスの昇順に並べ替え、メニューインデックスが同じものについては公開開始日時の降順に並べ替えるように指定しています。

このように、複数のフィールドはカンマ「,」で区切り、並べ替えの方向は、フィールド名の後ろに空白1文字をはさんで指定します。(並べ替えの方向を省略した場合は昇順になります/sortDirの場合は省略時は降順なので注意が必要です)

なお、「orderBy」を指定した場合、他に「sortBy」や「sortDir」を指定していても、「sortBy」や「sortDir」は無視されます。

ちなみに、実装としては、「orderBy」パラメータが、そのままSQLに使われるとは限りません。

■まとめ:Dittoの並べ替え(ソート)指定パラメータ

パラメータ 機能 指定内容
sortBy 単一フィールドによる並べ替え フィールド名(ドキュメント変数名やテンプレート変数名)、省略時は「createdon」
sortDir 単一フィールドによる並べ替え 並べ替え方向(「ASC(昇順)」または「DESC(降順)」)、省略時は「DESC」
orderBy 単一または複数フィールドによる並べ替え 「<フィールド名><空白1文字><並べ替え方向>」。複数指定時はこれをカンマでつないで指定、先に指定したフィールドから優先的に並べ替えられる。並べ替え方向は「ASC(昇順)」または「DESC(降順)」で省略可能(直前の空白とともに)、省略時は「ASC」。orderByが指定された場合は、sortBy、sortDirは無視される。
randomize ランダムに並べ替え 0(off:デフォルト)、1(on)、または、フィールド名。randomizeが指定された(0以外の)場合は、sortBy、sortDir、orderByは無視される。

▼追記
りゅうさんのコメントを参考にコードを変更しました。

Dittoのコンフィギュレーションファイルを使う際の注意

Dittoを使うとき、各種パラメータを直接スニペットに記述するのではなく、PHPファイルを作って「assets/snippets/ditto/configs/」に「hogehoge.config.php」等の名前でアップロードしておき、Dittoスニペットのパラメータに「&config=`hogehoge`」と記述することで使用することができます。
ただし、直接パラメータを指定する場合と、完全に同じではなく、いくつか注意すべきことがあるようです。
私が確認できた箇所は以下です。

  • 「language」パラメータはPHPファイルで指定しても効かない。
  • 「request」(extenders)を使う場合、PHPファイルで指定したパラメータは、リクエストパラメータ(URL等)で変更することができなくなる。
  • 「&extenders=`tagging`」をPHPファイルで指定すると、PHPのFatalエラー(evalで)になる。(Dittoのコードの218行目…おそらくバグのような)

ちなみに、コンフィギュレーションファイルは、PHPの変数に文字列を代入する文の羅列で、以下のような感じで作ります。

<?php
	$dateSource='pub_date';
	$dateFormat='%Y.%m.%d';
	$tpl='fugafuga';
?>