下位リソースを作るときの「シブリング」時の動作について。
現在は、コンテナ属性のないリソースの中から、使用テンプレートを取ってくる処理になっていると思うのですが、
[ルート]
└[大カテゴリ]※コンテナ属性
└[小カテゴリ]※コンテナ属性
└[記事]
↑こんな感じになっていた時、大カテゴリ内に新たな小カテゴリを作ろうとすると、小カテゴリはコンテナ属性を持っているため、常にデフォルトのテンプレートが選択されてしまいます。
自分で運用する分には良いのですが、運用担当者に任せる場合、使用テンプレートの切り替えは出来ればあまりさせたくありません。
とりあえず今はmutate_content.dynamic.phpの550目あたりを
コード: 全て選択
$sibl = $modx->getDocumentChildren($_REQUEST['pid'], 1, 0, 'template', 'isfolder=0', 'menuindex', 'ASC', 1);
if(!empty($sibl[0]['template'])) $default_template = $sibl[0]['template'];
else
{
$sibl = $modx->getDocumentChildren($_REQUEST['pid'], 0, 0, 'template', 'isfolder=0', 'menuindex', 'ASC', 1);
if(!empty($sibl[0]['template'])) $default_template = $sibl[0]['template'];
}
コード: 全て選択
$sibl = array(
$modx->getDocumentChildren($_REQUEST['pid'], 1, 0, 'template', 'isfolder=0', 'menuindex', 'ASC', 1),
$modx->getDocumentChildren($_REQUEST['pid'], 1, 0, 'template', 'isfolder=1', 'menuindex', 'ASC', 1),
$modx->getDocumentChildren($_REQUEST['pid'], 0, 0, 'template', 'isfolder=0', 'menuindex', 'ASC', 1),
$modx->getDocumentChildren($_REQUEST['pid'], 0, 0, 'template', 'isfolder=1', 'menuindex', 'ASC', 1),
);
for($i = 0; $i < count($sibl); $i++){
if(!empty($sibl[$i][0]['template'])){
$default_template = $sibl[$i][0]['template'];
break;
}
}
上記の優先順位の善し悪しはともかく、下位リソースがすでにあるときは、コンテナ属性の有無にかかわらず、なるべくそれを活かしてもらえるといいなー、という要望です。
または、上記のテンプレート決定時に、プラグインで割り込めるようになれば、それもまた良しだと思います。
毎回コアソースに手を入れるのはいやだーという、個人的なわがままなのですが。
ご検討くださいませ。