Quote from: Rose at Jan 15, 2007, 10:59 PM
Замечательно. 
Итак, я вставляю в шаблон сниппет [[snippet]]. И хочу чтобы этот снипет вызывался на странице (под номером id=3) и во всех вложенных в неё страницах. А на всех остальных страницах сниппет, соответственно, отображаться не должен.
Какие параметры надо задать сниппету и где их задавать, в нем самом или в шаблоне, чтобы вышло так, как я описал выше?
/* <? */
if (!isset($id)) {
$id = 3; //id верхнего документа по умолчанию, в котором будет вызываться сниппет
}
$cid = $modx->documentIdentifier; // Получаем id текущего документа
$output = "Какой-нибудь текст...";
if ($cid==$id) {
return $output;
}
else {
$parent = $modx->getParent($cid,1,'id'); //Выбираем только активные документы
if ($parent['id'] == $id) {
return $output;
}
}
return '';
/* ?> */
Можете сохранить этот код как сниппет с названием MyCoolSnippet и вызывать его в шаблоне как [[MyCoolSnippet]]
Также можете, если захотите, передавать другое значение ID родительского документа в сниппет, вызывая его в шаблоне с параметром id:
[[MyCoolSnippet?id=12345]], где id - ID другого родительского документа.
P.S.: Также слегка модифицировав данный сниппет, можно сделать так:
/* <? */
if (!isset($id)) {
$id = 3; //id верхнего документа по умолчанию, в котором будет вызываться сниппет
}
$cid = $modx->documentIdentifier; // Получаем id текущего документа
$output = "{{MyCoolChank}}";
if ($cid==$id) {
return $output;
}
else {
$parent = $modx->getParent($cid,1,'id'); //Выбираем только активные документы
if ($parent['id'] == $id) {
return $output;
}
}
return '';
/* ?> */
и затем создав еще один чанк с названием MyCoolChank, записать в него любой HTML код, который Вам нужен. Таким образом будет вызываться на странице с ID=$id (и на всех вложенных) чанк MyCoolChank.