Перейти к контенту

Темы на модерации появляются в результатах поиска


Рекомендуемые сообщения

Добрый день

На моем форуме темы, еще не прошедшие модерацию, отдаются в результатах поиска.

 

Подскажите, как побороть? Спасибо.

 

IPB 1.3

Ссылка на комментарий
Поделиться на других сайтах

Нужно шерстить source/Search.php на предмет, в каком запросе не проверяется поле approved таблицы ibf_topics

 

Можно поподробней, при каком поиске темы находятся поиском? Новых, активных, по слову, по автору, по слову в заголовке? Я у себя проверю...

 

________________

UPD: нашел у себя: при поиске по слову (фуллтекст у меня отключен). Сейчас исправлю и напишу здесь что править.

 

_______________

UPD2:

search_mysql_man.php

Найти:

			$posts_query = "SELECT p.pid ".
					   "FROM ibf_posts p ".
					   "WHERE $posts_datecut  p.forum_id IN ($forums)".
					   " AND p.queued <> 1".
					   " $posts_name AND ($post_like)";

и заменить на:

			$posts_query = "SELECT p.pid ".
					   "FROM ibf_posts p ".
					   "LEFT JOIN ibf_topics t ON (p.topic_id=t.tid)".
					   "WHERE $posts_datecut  p.forum_id IN ($forums)".
					   " AND p.queued <> 1 AND t.approved = 1".
					   " $posts_name AND ($post_like)";

 

 

search_mysql_ftext.php

Найти:

			$posts_query = "SELECT p.pid ".
					   "FROM ibf_posts p ".
					   "WHERE $posts_datecut  p.forum_id IN ($forums)".
					   " AND p.queued <> 1".
					   " $posts_name AND MATCH(post) AGAINST ('".trim($keywords)."' $boolean)";

и заменить на:

			$posts_query = "SELECT p.pid ".
					   "FROM ibf_posts p ".
					   "LEFT JOIN ibf_topics t ON (p.topic_id=t.tid)".
					   "WHERE $posts_datecut  p.forum_id IN ($forums)".
					   " AND p.queued <> 1 AND t.approved = 1".
					   " $posts_name AND MATCH(post) AGAINST ('".trim($keywords)."' $boolean)";

Ссылка на комментарий
Поделиться на других сайтах

Огромное спасибо!

А как бы еще запретить отображать посты из тем на модерации, в результатах поиска сообщений по юзеру.

Ссылка на комментарий
Поделиться на других сайтах

У меня очень сильно модифицирован файл Search.php, поэтому инструкцию могу дать только приблизительную:

 

В функции show_results() найти примерно такой код:

			while ( $row = $DB->fetch_row($show_res_query) )
		{
			$row['keywords']  = $url_words;
			$row['post_date'] = $std->get_date( $row['post_date'],'LONG' );

Перед ним длинный sql-запрос.

В нем условие

WHERE p.pid IN(0{$posts}0)

заменить на

WHERE p.pid IN(0{$posts}0) AND t.approved = 1

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.