MODX Evolution 1.0.16J をリリースしました

2016年8月31日 23時00分 shortlink:http://modx.jp/?id=1057

MODX Evolution 1.0.16Jをリリースしました。パーサまわりの改良が多く、スキルの高いMODXユーザには期待のアップデートといえます。

ダウンロード

https://modx.jp/download/download_evo.html
上記からダウンロードしてください。

アップデートの手順

https://modx.jp/docs/update.html

上記を参照してください。

変更内容

不具合修正

新機能・新仕様

新しいモディファイア

モディファイアの修正

アップデート

改善

変更

トピックス

テンプレートをファイルで管理できる @INCLUDE (アット・インクルード)

@INCLUDE:assets/templates/mydesign/mytemplate.inc.php

テンプレート編集画面の一行目に、上記のように記述します。

<?php
switch($modx->documentObject['id']) {
    case: $modx->config['site_start']:
        return file_get_contents('assets/templates/mydesign/top.html');
    default:
        return file_get_contents('assets/templates/mydesign/page.html');
}

mytemplate.inc.php には上記のように記述します。こうすると、ひとつのテンプレートで複数のテンプレートを管理することができます。上記の例では、トップページとそれ以外のページとでテンプレートを分けています。

@INCLUDE:mydesign/mytemplate.inc.php

ファイルをassets/templates/ フォルダに置いている場合は上記のように省略できます。

従来もスニペットを利用して同様のことができていましたが、その場合、スニペット機構の制約を受けます。今回はネイティブ実装なので負荷が軽く、MODXのグローバル設定をテンプレート読み込み時に動的に書き換える(たとえばテンプレートごとにキャッシュのオンオフを切り換えるなど)といったことも可能です。

条件判定系モディファイアの記述をシンプル化

:is・:isnot・:isgt・:is_imageなど条件判定系モディファイアにおいて、then・elseを省略した場合はそれぞれ then=1, else=0 を返すようになりました。

<@IF:[*id:is(1):then(1):else(0)*]>
    Top-Page
<@ELSE>
    Other-Page
<@ENDIF>

これまでは上記のように書く必要がありましたが、
(※上記の例では@IF文の記法が新しくなっています。詳しくは後述)

<@IF:[*id:is(1)*]>
    Top-Page
<@ELSE>
    Other-Page
<@ENDIF>

上記のように省略できます。

@IF文の書式をシンプル化

<@IF:[*id:is(1)*]>
    Top-Page
<@ELSE>
    Other-Page
<@ENDIF>

▲新しい書き方

<!--@IF:[*id:is(1)*]>
    Top-Page
<@ELSE>
    Other-Page
<@ENDIF-->

▲従来の書き方。この書き方でも動作します。全体がHTMLコメントとなっていますので、工夫すればHTMLコーディング担当者とのコラボレーションに向いています。

@IF構文で @ELSEIF が使えるようになりました

<@IF:[*id:is(1)*]>
    トップページ
<@ELSEIF:[*id:is(5)*]>
新着記事一覧のページ
<@ELSE>
    その他のページ
<@ENDIF>

上記のように記述できます。

Wayfinderのテンプレートでモディファイアを使えるようになりました

<li><a href="[+url+]">[+menutitle:zenhan+]</a>[+wf.wrapper+]</li>

モディファイアを使って出力をコントロールできます。上記の例では、ナビゲーション文字列に含まれる全角英数字を半角に変換します。(※[+url+]は[+wf.link+]と同じです)

スニペットコールのパラメータの与え方

[[スニペット名 &p1=v1 &p2=v2]]

上記のように、スニペット名とパラメータ部の区切りに半角スペースを使えるようにしました。従来どおり「 ? 」を使うこともできます。
※スニペット名・チャンク名に半角スペースを使うケースを報告いただいたので、この改修は取り消しました。

[[スニペット名? &p1 &p2]]

パラメータは「&パラメータ名=値」の形で与えますが、与えたい値が「1」である場合に限って、上記のように値の記述を省略できるようにしました。

[[Ditto? &randomize &debug]]

たとえば Ditto の &randomizeパラメータ・&debugパラメータなどのように、「セットできる値が0か1のどちらかで、デフォルト値が0のパラメータ」をこの書き方で記述すると、スニペットコールをすっきりさせることができます。

[[Ditto? &randomize=1 &debug=1]]

このように書くのと同じです。

モディファイアを複数行に渡って記述できるようになりました

[*id
  :is(1)
  :then(Top)
  :else(Other)
*]

上記のように記述できます。

今後のリリースについて

これまではバージョン表記を1.0.**J-r*としていましたが、今回より1.0.**Jとします。次にリリースするのは1.0.17Jということになります。

その他

気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。開発に参加して自ら機能追加・改善などを行なってみたい方もお気軽にご連絡ください。

PR

  • KAGOYA
  • ASP at AKIHABARA Japan
  • CMS AWARDS 2007 Winner
ページトップへ