Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как изменить запрос в базу данных в разделе - все публикации пользователя?

Как изменить запрос в базу данных в разделе - все публикации пользователя?


     16.04.2018    Все вопросы » MySQL    200

вопрос
Как я понял код отвечающий за раздел все публикации пользователя в файле engine/engine.php
elseif ($subaction == 'allnews') {
			// ################ Вывод всех новостей пользователя #################
			if ($cstart) {
				
				$cstart = $cstart - 1;
				$cstart = $cstart * $config['news_number'];
			
			}
			
			$url_page = $config['http_home_url'] . "user/" . urlencode ( $user ) . "/news";
			$user_query = "subaction=allnews&user=" . urlencode ( $user );
			
			if( $config['allow_alt_url'] ) $canonical = $url_page . "/"; else $canonical = $PHP_SELF."?subaction=allnews&user=" . urlencode ( $user );
			
			if ($view_template == "rss") {
				
				$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name FROM " . PREFIX . "_post where {$where_category}autor = '$user' AND approve=1" . $where_date . " ORDER BY date DESC LIMIT 0," . $config['rss_number'];
			
			} else {
				
				if (isset ( $_SESSION['dle_sort_allnews'] )) $news_sort_by = $_SESSION['dle_sort_allnews'];
				if (isset ( $_SESSION['dle_direction_allnews'] )) $news_direction_by = $_SESSION['dle_direction_allnews'];
				
				$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
				$sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date;
			}
			
			$allow_active_news = true;


Нужно сделать чтобы выводились только с определенной категории новости. Подскажите что нужно менять или добавит. Заранее спасибо.

Ответил: Sander


Ответ в комментариях не подходит для сайтов с мультикатегориями.
После строки:
$user_query = "subaction=allnews&user=" . urlencode ( $user );

Вставить:
$where_date .= " AND category NOT REGEXP '[[:<:]]5|7|11[[:>:]]'";

где 5|7|11 - ID категорий.

Первая замена это будет для вывода RSS новостей пользователя, вторая для сайта.

И третья замена будет для построения постраничной навигации на сайте.

3 комментария

MaxFlopp
Юзер

MaxFlopp - 16 апреля 2018 19:11 -

Извиняюсь не правильно код вставил, модераторы исправьте. А то я не вижу кнопки редактирования.

Dark5ider
Эксперт

Dark5ider - 17 апреля 2018 15:11 -

Ищем в указанном вами отрывке кода из engine/engine.php

 AND approve=1


Меняем на

 AND approve=1 AND category IN ('12,16,17')


Где 12,16,17 - это перечисленные через запятую ID категорий, нужных вам.

Первая замена это будет для вывода RSS новостей пользователя, вторая для сайта.

MaxFlopp
Юзер

MaxFlopp - 17 апреля 2018 19:06 -

Dark5ider,большое спасибо тебе, то что надо! Выручил!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх