Quote from: esal at May 02, 2011, 12:28 AM
Можете подсказать как его реализовать?
Если разбираетесь в php, очень просто – парой запросов к базе получить все необходимое, а потом вывести в нужном виде. Ditto, на мой взгляд, потребует больше усилий, но, если проблемы с программированием на php, придется использовать Ditto.
Вот примерно такой скрипт можно использовать (запускать не пробовал, возможно потребуются доработки):
<?php
$startId=3;
$ids=array();
foreach ($modx->documentMap as $numb => $document) {
foreach ($document as $parent => $id) {
if ($parent == $startId)
$ids[] = $id;
}
}
$result = $modx->db->query("SELECT id, pagetitle FROM " . $modx->getFullTableName("site_content") . " WHERE parent IN (".implode(',', $ids).") ORDER BY parent ASC, menuindex ASC");
$output = '<select>';
while ($row = $modx->db->getRow($result)) {
$output .= '<option value="'.$row['id'].'">'.$row['pagetitle'].'</option>';
}
$output .= '</select>';
return ($output);
?>
Спасибо, скрипт работает )
Тогда такой вопрос, как исключить из списка не опубликованные документы(они еще курсивом напечатаны в левом меню). На сайте их нет, но в меню они показываются, так как запрос к БД не учитывает этого?
Quote from: esal at May 02, 2011, 12:15 PM
как исключить из списка не опубликованные документы
добавить в середину:
WHERE parent IN (".implode(’,’, $ids).")
AND published = ’1’ AND type = ’document’ AND deleted = ’0’ ORDER BY
Quote from: esal at May 02, 2011, 12:29 PM
А можно сделать еще группировку
Можно, но это уж сами делайте.