Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[MODDB] Last Search Queries Info

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

[MODDB] Last Search Queries Info

Сообщение Xpert »

Мод отображает последние 5 поисковых запросов на главной странице поиска. Запрос на разработку: pehota

Код: Выделить всё

#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE `phpbb_search_results` ADD `search_query` VARCHAR( 100 ) NOT NULL ;
ALTER TABLE `phpbb_search_results` ADD `search_time` INT( 11 ) NOT NULL ;

#
#-----[ OPEN ]------------------------------------------
#
search.php

#
#-----[ FIND ]------------------------------------------
#
		$search_id = mt_rand();
		
#
#-----[ AFTER, ADD ]------------------------------------------
#
		$search_time = time();
		$search_query = trim(str_replace("\'", "''", stripslashes($search_keywords)));

#
#-----[ FIND ]------------------------------------------
#
			SET search_id = $search_id, search_array = '" . str_replace("\'", "''", $result_array) . "'
			
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$result_array) . "'

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, search_query = '$search_query', search_time = '$search_time'

#
#-----[ FIND ]------------------------------------------
#
			$sql = "INSERT INTO " . SEARCH_TABLE . " (search_id, session_id, search_array)
			
#
#-----[ IN-LINE FIND ]------------------------------------------
#
, search_array

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, search_query, search_time

#
#-----[ FIND ]------------------------------------------
#
				VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace("\'", "''", $result_array) . "')";
				
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$result_array) . "'

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, '$search_query', '$search_time'

#
#-----[ FIND ]------------------------------------------
#
//
// Output the basic page
//

#
#-----[ BEFORE, ADD ]------------------------------------------
#
$sql = "SELECT search_query FROM " . SEARCH_TABLE . " WHERE search_query != '' ORDER BY search_time DESC LIMIT 5";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not obtain last queries info', '', __LINE__, __FILE__, $sql);

if ($db->sql_numrows($result))
{
	$last_queries_arr = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$last_queries_arr[] = htmlspecialchars($row['search_query']);
	}
	$last_queries_info = implode(', ', $last_queries_arr);
}
else
{
	$last_queries_info = $lang['No_last_search_queries'];
}

#
#-----[ FIND ]------------------------------------------
#
	'S_SORT_OPTIONS' => $s_sort_by,
	
#
#-----[ AFTER, ADD ]------------------------------------------
#
	'L_LAST_SEARCH_QUERIES_INFO' => $lang['Last_search_queries_info'],
	'LAST_SEARCH_QUERIES_INFO' => $last_queries_info,
	
#
#-----[ OPEN ]------------------------------------------
#
lang_english/lang_main.php

#
#-----[ FIND ]------------------------------------------
#
?>

#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['Last_search_queries_info'] = 'Last queries';
$lang['No_last_search_queries'] = 'No queries';

#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/search_body.tpl

#
#-----[ FIND ]------------------------------------------
#
		<td class="row2" colspan="2" valign="top"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_keywords" size="30" />
		
#
#-----[ IN-LINE FIND ]------------------------------------------
#
<input type="text" style="width: 300px" class="post" name="search_keywords" size="30" />

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
<br /><span class="gensmall">{L_LAST_SEARCH_QUERIES_INFO}: {LAST_SEARCH_QUERIES_INFO}</span>
На рабочие форумы пока прошу не ставить.

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

Добавлено спустя 5 минут 15 секунд:

В общем, оцениваем. Постарался по максимуму использовать существующие таблицы и прочие возможности форума.

Добавлено спустя 14 минут 58 секунд:

Еще особенность: запоминает только последний запрос пользователя. Собственно, если нужна расширенная статистика, то нужно будет все хранить в отдельной таблице, а для данного случая imho и эот вариант подойдет. Предлагаю этот момент тоже обсудить.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
pehota
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 8 месяцев

Сообщение pehota »

Xpert, отличный мод. Себе сразу же поставил (и даже на работающий форум). Все работает.

Вот как реализовано на вобле:
http://www.netadmin.ws/forum/search.php
FTN Technologies Support - FidoNet Software
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Что по поводу особенностей думаете?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
automan
phpBB 2.0.1
Сообщения: 252
Стаж: 19 лет
Благодарил (а): 2 раза

Сообщение automan »

Xpert а можно сделать фильтр чтоб
в 10 Последних Запросов были все разные ?
Аватара пользователя
severnet
phpBB 2.0.5
Сообщения: 490
Стаж: 19 лет 5 месяцев
Откуда: Санкт-Петербург

Сообщение severnet »

У меня не появилась новая табличка. :x

Добавлено спустя 9 минут 8 секунд:

Ещё раз проверил установку, всё равно таблица запросов не появилась.

Добавлено спустя 5 часов 9 минут 50 секунд:

Вот кусок из search_body.tpl:

Код: Выделить всё

<form action="{S_SEARCH_ACTION}" method="POST"><table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
	<tr> 
		<td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td>
	</tr>
</table>

<table class="forumline" width="100%" cellpadding="4" cellspacing="1" border="0">
	<tr> 
		<th class="thHead" colspan="4" height="25">{L_SEARCH_QUERY}</th>
	</tr>
	<tr> 
		<td class="row1" colspan="2" width="50%"><span class="gen">{L_SEARCH_KEYWORDS}:</span><br /><span class="gensmall">{L_SEARCH_KEYWORDS_EXPLAIN}</span></td>
		<td class="row2" colspan="2" valign="top"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_keywords" size="30" /><br /><span class="gensmall">{L_LAST_SEARCH_QUERIES_INFO}: {LAST_SEARCH_QUERIES_INFO}</span><br /><input type="radio" name="search_terms" value="any" checked="checked" /> {L_SEARCH_ANY_TERMS}<br /><input type="radio" name="search_terms" value="all" /> {L_SEARCH_ALL_TERMS}{L_ONLY_BLUECARDS}</span></td>
	</tr>
Здесь можно посмотреть, никаких изменений нет - http://freestudents.ru/phorum/search.php

Добавлено спустя 9 минут 7 секунд:

Ааа, я понял. Он не должен показывать дополнительную таблицу...
Тогда почему автор пишет:
Xpert писал(а):Мод отображает последние 5 поисковых запросов на главной странице поиска.
Но отображение идет всего одно:
Xpert писал(а):Еще особенность: запоминает только последний запрос пользователя.
Противоречишь сам себе? :D

Добавлено спустя 1 минуту 5 секунд:

Запутал, он должен показывать 5 запросов или один? :?:
Изображение
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Один на сессию, всего 5 запросов...
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

Xpert писал(а):но мне и так нравится пока
А против этого не возражаете

Код: Выделить всё

#
#-------[ FIND ]------------
#
      $last_queries_arr[] = htmlspecialchars($row['search_query']);
#
#-------[ REPLACE WITH ]------------
#
		$last_queries_arr[] = '<a class="gen" href="' . append_sid("search.$phpEx?mode=results&search_keywords=" . urlencode($row['search_query'])) . '">' . htmlspecialchars($row['search_query']) . '</a>';
Вместо обычных строк ссылки
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Аватара пользователя
Romy
phpBB 2.0.3
Сообщения: 396
Стаж: 18 лет 11 месяцев
Откуда: tallinn.ee

Сообщение Romy »

Xpert писал(а):запоминает только те запросы, которые при поиске дали результат.
тогда было бы лучше, если эти запросы были в виде ссылок на эти результаты.. :roll:
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Поручик писал(а):А против этого не возражаете
Никак нет. Только я использую не gen, а gensmall.

Нашел ошибку в обработке кавычек.

Код: Выделить всё

$search_query = trim(str_replace("\'", "''", stripslashes($search_keywords)));
Следует читать как:

Код: Выделить всё

$search_query = trim(str_replace("\'", "''", $search_keywords));
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
NCom
phpBB 2.0.11
Сообщения: 810
Стаж: 18 лет 3 месяца
Откуда: Ставрополь
Забанен: Бессрочно

Сообщение NCom »

а не подскажите почему у меня только один последний запрос показывает? И вообюще какое время последний запрос хранится?
Как можно выставить количество выводимых последних запросов?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Показывает по запросу на каждую сессию. Т.е. если вы один на форуме, то отображен будет ваш последний запрос.

Откорректировать число запросов можно во фрагменте, который всталвяется в search.php.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
NCom
phpBB 2.0.11
Сообщения: 810
Стаж: 18 лет 3 месяца
Откуда: Ставрополь
Забанен: Бессрочно

Сообщение NCom »

Xpert
спасибо.
Аватара пользователя
blazch
phpBB 1.4.4
Сообщения: 114
Стаж: 19 лет

Сообщение blazch »

а чтоб он показывал допустим самые популярные запросы в течении 24 часов всеми пользователями - не сильно сервак будет грузить?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Он этого просто не покажет поскольку за определенное время запросы не запоминает.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
pehota
phpBB 1.4.2
Сообщения: 52
Стаж: 18 лет 8 месяцев

Сообщение pehota »

Вот такой вопрос: показываются последние вопросы в виде ссылок. При нажатии на таковую выводится список сообщений, а как сделать. чтобы выводился список тем?
FTN Technologies Support - FidoNet Software

Вернуться в «Бета-версии модов для phpBB 2.0.x»