Dittoで出力したリストにNEWマークをつける(2)

前回作成したPHxを利用してのNEWマークが、微妙に上手く働かなかったので、再度別方向からのアプローチ。何が悪かったのか、記事が増えたにも関わらずマークがつかなかったので…。
前回と同じトピックスを参考(→こちら)に、PHxではなくDittoの拡張機能を利用してのNEWマークをつける。
 
まず、/assets/snippets/ditto/extenders/の下に、newicon.extender.inc.phpを作成する。他のPHPファイルと同じく、改行はLF。
ソースコード

<?php

$placeholders['newicon'] = array("editedon,createdon,pub_date","whatsNew");

$newDays = isset($newDays) ? $newDays : 7;
$newMark = isset($newMark) ? $newMark : " <span class=color_text>New!!</span>";

$GLOBALS['ditto_newicon'] = compact("dateSource","newDays","newMark");

if (!function_exists("whatsNew")) {
  function whatsNew($resource) {
    global $modx, $ditto_newicon;

    $now = time();
    $timestamp = ($resource[$ditto_newicon["dateSource"]] != "0") ? $resource[$ditto_newicon["dateSource"]] : $resource['createdon'];

    $erapse = $now - (intval($timestamp) + $modx->config["server_offset_time"]);
    if ($erapse <= $ditto_newicon["newDays"]*60*60*24) {
      return $ditto_newicon["newMark"];
    }

    return "";
  }
}

?>

Dittoを呼び出すスニペットコールに

&extenders=`newicon`

と付け加えることで、NEWマークを呼び出すプレイスホルダ[+newicon+]が利用できるようになる。このとき、dateSourceを指定しなければきちんと働かない模様。
 
利用する箇所によってマーク表示の日数を変えることも可能で、

&newDays=`3`

とすれば3日間表示される。
省略した場合は7日。
また、Dittoを呼び出すときに

&newMark=`新着!`

などとすることで表示を変えることができる。ただし、HTMLタグは限定的にしか利用できない。「=」などはバグのせいでスニペットに渡せないっぽいので、ストロングタグなどしか利用できない?
ただしこれはDittoから指定する場合に限り、デフォルトの設定

$newMark = isset($newMark) ? $newMark : " <span class=color_text>New!!</span>";

の中では「=」も利用できるようだ。