Добрый день! Нужно помощь мододелов, застопорился на выводе кратких новостей по списку ID.
Возможно ли вывести список кратких новостей через метод $tpl->set('', $list)?
Пример кода, в конце как раз вывод shortstory. Пробовал по всякому выводить, либо выводятся только новости, без другой информации. Или выводится только информация по модулю, но без кратких новостей. Должен же быть какой-то адекватный способ вывести через функции dle, чтобы не писать дополнительно обработку кратких новостей для модуля..
Возможно ли вывести список кратких новостей через метод $tpl->set('', $list)?
Пример кода, в конце как раз вывод shortstory. Пробовал по всякому выводить, либо выводятся только новости, без другой информации. Или выводится только информация по модулю, но без кратких новостей. Должен же быть какой-то адекватный способ вывести через функции dle, чтобы не писать дополнительно обработку кратких новостей для модуля..
PHP:
private function handleView()
{
global $tpl, $db, $config;
$id = $this->getValidId();
$data = $this->getCollectionData($id);
if (!$data) {
$this->showMessage('Ошибка', "Подборка не найдена.");
return;
}
// Добавляем SpeedBar с названием подборки
$this->generateSpeedBar(array(
array(
'name' => $data['title'],
'url' => ''
)
));
// Проверяем доступ - либо подборка approved, либо это автор/админ
if (
$data['approve'] != 1 &&
($this->member_id['name'] != $data['user_id'] && $this->member_id['user_group'] != 1)
) {
$this->showMessage('Ошибка', "Эта подборка еще не прошла модерацию.");
return;
}
// Увеличиваем счетчик просмотров
$this->db->query("UPDATE " . PREFIX . "_user_collections SET views = views + 1 WHERE id = '$id'");
// Выводим основную информацию о подборке
$this->tpl->load_template('ucollection_view.tpl');
// Обработка tpl
// .....
// Выводим список ID
// Если $data['news_id'] это строка с числами через запятую
if (is_string($data['news_id']) && strpos($data['news_id'], ',') !== false) {
$id_news = $data['news_id'];
}
// Если это массив
elseif (is_array($data['news_id'])) {
$id_news = implode(',', $data['news_id']);
}
// Если это одно число
else {
$id_news = (string)$data['news_id'];
}
if (empty($id_news)) {
$this->tpl->set('{news-list}', '<div class="ucollection-empty">В подборке пока нет фильмов</div>');
$this->tpl->compile('content');
return;
}
// Вывод shortStory
$cstart = $_GET['cstart'] ?? 0;
if ($cstart) {
$cstart = $cstart - 1;
$cstart = $cstart * $this->ucollection_config['countPostItemPage'];
}
$cstart = intval($cstart);
if (isset($_SESSION['dle_sort_lastnews'])) {
$news_sort_by = $_SESSION['dle_sort_lastnews'];
} else {
$news_sort_by = "date";
}
if (isset($_SESSION['dle_direction_lastnews'])) {
$news_direction_by = $_SESSION['dle_direction_lastnews'];
} else {
$news_direction_by = "DESC";
}
$where = "id IN(" . $this->db->safesql($id_news) . ")";
$stop_list = "";
$where_date = "";
if ($where && !empty($id_news)) {
$sql_select = "SELECT id, autor, date, alt_name, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, actors, category, comm_num, allow_comm, approve, tags FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND " . $where . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $this->config['news_number'];
$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND " . $where . $where_date;
$count_all = $this->db->super_query($sql_count);
// Сохраняем текущий контент
$old_content = $this->tpl->result['content'];
// Генерируем список новостей
$this->tpl->result['content'] = '';
$allow_active_news = true;
include_once(DLEPlugins::Check(ENGINE_DIR . '/modules/show.short.php'));
// Сохраняем сгенерированные новости
$news_content = $this->tpl->result['content'];
// Восстанавливаем старый контент и добавляем новости
$this->tpl->result['content'] = $old_content;
$this->tpl->set('{news-list}', $news_content);
// Добавляем пагинацию
if ($count_all['count'] > $this->$config['news_number']) {
$this->generatePagination($count_all['count'], $this->config['news_number'], ($cstart / $this->config['news_number']) + 1, "ucollection/view/{$id}");
$this->tpl->set('{pagination}', $this->tpl->result['navigation']);
} else {
$this->tpl->set('{pagination}', '');
}
}
$this->tpl->compile('content');
$this->tpl->clear();
}