Добрый день !
Я пытаюсь создать свою TV-переменную, которая бы содержала список дочерних разделов для документа
Код ее следующий:
@EVAL $parent=$modx->documentIdentifier; $children = $modx->db->makeArray($modx->db->query(’select * from modx_site_content where deleted=0 and parent=’.$parent.’ order by id’)); foreach($children as $child) {$output .= $child[’pagetitle’]." (id=".$child[’id’].")==".$child[’id’]."||"; } return $output;
Почему-то не определяется значение $parent
Не подскажете, каким образом можно получить внутри данного кода id текущего документа ?
Известно, что работа с документом ведется не в режиме добавления, а в режиме редактирования, т.е., документ уже создан.
Создайте сниппет и запихните туда весь код. А в TV сделайте так: @EVAL $modx->evalSnippet(’snippetname’); Должно нормально работать.
ID текущего документа у вас правильно определяется — через $modx->documentIdentifier.
Попробовал. К сожалению, в этом случае при открытии документа выдается ошибка.
Возможно, documentIdentifier в данном случае не выдает результат.
@EVAL $parent=$modx->documentIdentifier; $children = $modx->getDocumentChildren($parent); foreach($children as $child) {$output .= $child[’pagetitle’]."==".$child[’id’]."||"; } return $output;
если так заработает, то потом попробуйте
@EVAL $parent=$modx->documentIdentifier; $children = $modx->getDocumentChildren($parent); foreach($children as $child) {$output .= $child[’pagetitle’]." (id=".$child[’id’].")==".$child[’id’]."||"; } return $output;
Попробовал. Не работает.
Вернее, не работает $modx->documentIdentifier.
Возможно, id в данном случае надо получать иначе.
странно...
попробуйте сделать ТВ с @EVAL return $modx->documentIdentifier;
и вставить в шаблон [*ТВ*]
он не покажет ид?..
обычно я делал именно так как писал выше и всё работает (скопировано вообщем-то с модх.ру)