SOY CMSのプラグインを作ってみた

  • 投稿日:
  • by
  • カテゴリ:

SOY CMSは、他の多くのCMSと同様に、プラグインで機能を拡張することができます。
試しに、ごく簡単なプラグインの例として、「現在日時を表示する」というプラグインを作ってみました。

1.プラグインのインストール

プラグインは以下からダウンロードすることができます。

currenttime_1_00.zip

ダウンロードしたファイルを解凍すると、「current_time」というフォルダができます。
このフォルダを、SOY CMSのインストール先ディレクトリの「common」→「site_include」→「plugin」ディレクトリの中にアップロードします。

この後、SOY CMSにログインして「プラグイン」のタブを開くと、「アクティブでないプラグイン」の一覧の中に、「現在日時表示」が表示されます。

「アクティブでないプラグイン」の一覧に「現在日時表示」が追加される

そのプラグインのアイコンをクリックすると、プラグインの設定を行うページが表示されます。
「このプラグインを使用する」のボタンをクリックすると、プラグインが有効になります。

プラグインを有効化したところ

2.テンプレートの書き方

テンプレートの中に以下のように書くと、その位置に現在の日時が表示されます。
「フォーマット文字列」には、PHPのdate関数で使うフォーマット文字列を指定します。

<pなど cms:plugin="currenttime" cms:format="フォーマット文字列"></pなど cms:plugin="currenttime">

例えば、以下のように書くと、p要素の内部に「2009年7月18日 12時34分56秒」のような書式で、現在の日時を出力することができます。

<p cms:plugin="currenttime" cms:format="Y年m月d日 H時i分s秒"></p cms:plugin="currenttime">

テンプレートに日時を出力するブロックを追加

現在日時が表示された

また、出力をHTMLのタグで囲まず、結果だけを出力したい場合は、以下のように書くこともできます。

<!-- cms:plugin="currenttime" cms:format="フォーマット文字列" /-->

なお、「cms:format=""」として、フォーマット文字列を空文字列にすると、「Y/m/d」のフォーマット文字列を指定したのと同じになります。

3.プラグインを作った感想

今のところ、プラグイン開発についての情報は、SOY CMS開発ブログの以下の記事で公開されています。

これらの情報はごく基本的な話で、今回作ったプラグインを作るのがやっとというところです。
複雑なプラグインを作るには、まだまだ情報が不足しています。
今後の情報公開に期待したいです。

それから、今のプラグインの書き方だと、属性値を省略した時に、デフォルトの属性値を使うようなことができないようです。
例えば、このプラグインなら、以下のような書き方をしたときに、cms:format属性にデフォルトの値を指定したものとして扱うようにしたいところですが、それはできないようでした。

<p cms:plugin="currenttime"></p cms:plugin="currenttime">

もし、現状で上にあげたような仕様なのだとしたら、使いにくいと思いますので、ぜひ改善していただきたいです。
また、何か良いやり方があるなら、その情報をぜひ公開していただきたいです。