最近、Dittoのextender機能を利用して、カスタムプレースホルダを作成しました。
現在、本機能を利用する場合、「XXXX.extender.inc.php」ファイルを作成して、
Dittoスニペット内でインクルードする形をとっていますが、「@FILE:」で任意ファイルのパスを指定できるようにも見受けられます。
そこで、さらに「@CHUNK:」機能を追加してチャンクでextender機能を追加できる様にするのはいかがでしょうか?
簡単ではありますが、Dittoスニペットを改造してみました。
【Dittoスニペット 229行目より】
コード: 全て選択
//---Initiate Extenders---------------------------------------------- //
if (isset($tagData)) {
$extenders[] = "tagging";
}
if(count($extenders) > 0) {
$extenders = array_unique($extenders);
foreach ($extenders as $extender) {
if( substr($extender, 0, 7) != "@CHUNK:" ) {
if(substr($extender, 0, 6) != "@FILE:") {
$extender_path = $ditto_base."extenders/".$extender.".extender.inc.php";
} else {
$extender_path = $modx->config['base_path'].trim(substr($extender, 6));
}
if (file_exists($extender_path)){
include($extender_path);
} else {
$modx->logEvent(1, 3, $extender . " " . $_lang['extender_does_not_exist'], "Ditto ".$ditto_version);
return $extender . " " . $_lang['extender_does_not_exist'];
}
} else {
$extender_chunk = $modx->getChunk( trim(substr($extender, 7) ) );
eval( $extender_chunk );
}
}
}
上記コードでチャンクでextender用プログラムを作成し利用することが可能になりました。
よろしくお願いいたします。