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

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


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

Добрый день

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

 

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

 

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

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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