Извиняюсь, не до конца вопрос раскрыл.
childid чего?
global $modx; // на всякий случай добовлю
$children = $modx->getChildIds($parent, 1);
if(is_array($children)) {
echo 'Id первого дочернего документа = ' . $children[0];
// или
foreach ($children as $child) {
echo 'Id дочернего документа = ' . $child;
}
<?php $parent = isset($parent) ? $parent : $modx->documentIdentifier; $children= $modx->getActiveChildren($parent, 'menuindex','asc'); return is_array($children) ? $children[0]['id'] : $parent; ?>
Можете для этой цели использовать функцию getChildIds из API:
global $modx; // на всякий случай добовлю $children = $modx->getChildIds($parent, 1); if(is_array($children)) { echo 'Id первого дочернего документа = ' . $children[0]; // или foreach ($children as $child) { echo 'Id дочернего документа = ' . $child; }
Второй параметр (по умолчанию = 10) данной функции определяет максимальную глубину поиска дочерних документов, т. к. используется сквозной поиск.
В Вашем случае можно написать микро-сниппет (если такого еще нет, назовем его FirstChild):
$parent = isset($parent) ? $parent : $modx->getDocumentIdentifier; $children = $modx->getChildIds($parent, 1); return is_array($children) ? $children[0] : 0;
В сниппет можно передавать параметр parent - id документа, для которого необходимо получить id дочернего документа. Если же parent не указан - будет использован id текущего документа.
В коде сниппета FirstChild выше были ошибки, я их поправил.
Итак, если стоит задача создания ссылок на родительский документ, либо на первый дочерний относительно текущего, для этого:
[/li]
- Создайте сниппет c именем child (для большей краткости) и вставьте в него код из предыдущего моего поста
- В шаблоне / документе используйте конструкции:
[list]
[li][~[*parent*]~] - для получения URL на родительский документ- [~[!child!]~] - для получения URL на первый дочерний документ
[/list]
А api-функцию никуда не вставляю?
<?php $parent = isset($parent) ? $parent : $modx->documentIdentifier; $children= $modx->getActiveChildren($parent, 'menuindex','asc'); return is_array($children) ? $children[0]['id'] : $parent; ?>