db->query($sql); // Выполняем запрос в БД с помощью функции API db->query $row = $modx->db->getRow($res); // Формируем массив из возвращенного результата запроса с помощью функции API db->getRow $totalArticles = $row["cnt"]; // Получаем количество всех статей // Получаем общее количество страниц, округляем их в большую сторону и вычитаем 1 (единицу), // чтобы наши расчеты полностью совпадали с логикой базы данных (помните, что отсчет в БД начинается с нуля?) $totalPages = ceil ($totalArticles / $num) - 1; // Проверяем, что переданное в URL значение текущей страницы не больше, чем общее количество всех страниц // Иначе принудительно устанавливаем максимально возможное значение страницы, равное $totalPages if ($p > $totalPages) { $p = $totalPages; } $start = $p * $num; // Номер документа в выборке, с которого будет вестись отсчет $results = $modx->getDocumentChildren( $id = 1, // ID родительского документа, а именно документа "Блог" $active = 1, // Выбираем только опубликованные документы $deleted = 0, // Выбираем только неудаленные документы 'id, pagetitle, published, introtext, content, menuindex, createdby, createdon, deleted, menutitle', // Выбираем поля из БД $where = '', // Дополнительные условия не требуются $sort='createdon', // Сортируем документы по полю createdon, т.е. по дате создания $dir='DESC', // Сортируем документы по убыванию $limit = $start.",".$num // Вывод $num документов, начиная с $start ); // Проходим в цикле весь массив результатов foreach($results as $key => $value) { // Если поле menutitle было заполнено, то берем его в качестве заголовка статьи // Иначе - берем в качестве заголовка поле pagetitle if ($value["menutitle"] != "") { $title = $value["menutitle"]; } else { $title = $value["pagetitle"]; } $author = $modx->getUserInfo($value["createdby"]); // Получаем имя пользователя, создавшего статью $items .= "
".date("d/m/Y в H:i", $value["createdon"]).", Категория, ".$author["fullname"].", Комментарии
".$value["introtext"]."