Параметр "сортировка по дате создание темы" в поиске
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Параметр "сортировка по дате создание темы" в поиске
Что-то не получается...
Пытаюсь вычислить параметр сортировки тем в поиске, упорядочивающий их по дате создания, а не ответа.
Пробовал через расширенный поиск, Показывать результаты как: темы, Поле сортировки: время размещения - они все равно сортируются по ответам.
Собственно нужен сам параметр сортировки а не перенастройка поиска.
Пытаюсь вычислить параметр сортировки тем в поиске, упорядочивающий их по дате создания, а не ответа.
Пробовал через расширенный поиск, Показывать результаты как: темы, Поле сортировки: время размещения - они все равно сортируются по ответам.
Собственно нужен сам параметр сортировки а не перенастройка поиска.
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Код: Выделить всё
ORDER BY topic_time
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Re: Параметр "сортировка по дате создание темы" в поиске
сорри, не уточнил.
мне не для SQL запроса надо, а в адрес поиска
мне не для SQL запроса надо, а в адрес поиска
search.php?search_id=egosearch&sr=topics&sf=firstpost
надо добавить параметр, чтобы найденные темы сортировались по времени создания, а они сейчас упорядочены по времени последнего ответа.-
- phpBB 3.0.4
- Сообщения: 2215
- Стаж: 17 лет 4 месяца
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 117 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Нужно написать расширение использующее следующее событие:
Код: Выделить всё
/**
* Event to modify the SQL parameters before pre-made searches
*
* @event core.search_modify_param_before
* @var string keywords String of the specified keywords
* @var array sort_by_sql Array of SQL sorting instructions
* @var array ex_fid_ary Array of excluded forum ids
* @var array author_id_ary Array of exclusive author ids
* @var string search_id The id of the search request
* @since 3.1.3-RC1
*/
Всё повторяется. nurlan.info
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Параметр "сортировка по дате создание темы" в поиске
... и использовать
$event['sort_by_sql']
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Re: Параметр "сортировка по дате создание темы" в поиске
вот так формируется адрес для поиска, но как приделать советуемое - не знаю, примеров не нашел.
Добавлено спустя 1 минуту 41 секунду:
нашел вот такой пример
чего с ним делать? заново собирать поисковый запрос? или можно добавить параметр к существующему в строке?
Код: Выделить всё
public function page_header_after($event)
{
$this->template->assign_vars(array(
'USER_TOPICS_OWN_LINK' => append_sid("{$this->phpbb_root_path}search.$this->php_ext", 'search_id=egosearch&sr=topics&sf=firstpost'),
));
}
нашел вот такой пример
Код: Выделить всё
$sort_by_sql = array('a' => 'u.username_clean', 't' => (($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time'), 'f' => 'f.forum_id', 'i' => 't.topic_title', 's' => (($show_results == 'posts') ? 'p.post_subject' : 't.topic_title'));
-
- Поддержка
- Сообщения: 12752
- Стаж: 13 лет 8 месяцев
- Благодарил (а): 159 раз
- Поблагодарили: 2276 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Добавить ещё один элемент к существующему массиву (это не строка)
-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Re: Параметр "сортировка по дате создание темы" в поиске
нашел еще такие варинты, но ясности они ни грамма не внесли
так можно сделать?
и что с ним делать? или я таким образом уже меняю сортировку SQL запроса?
Код: Выделить всё
$sort_by_sql['t'] = 't.topic_last_post_time';
$sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
$sort_by_sql['s'] = ($show_results == 'posts') ? 'p.post_subject' : 't.topic_title';
Код: Выделить всё
$sort_by_sql['t'] = 't.topic_first_post_time';
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Если в коде своего расширения меняешь
$event['sort_by_sql']
то да.Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Код: Выделить всё
public function page_header_after($event)
{
$sort_by_sql = $event['sort_by_sql'];
$sort_by_sql['t'] = 't.topic_first_post_time';
$this->template->assign_vars(array(
'USER_TOPICS_OWN_LINK' => append_sid("{$this->phpbb_root_path}search.$this->php_ext", 'search_id=egosearch&sr=topics&sf=firstpost'),
));
$event['sort_by_sql'] = $sort_by_sql;
}
по крайней мере ошибок дебагер не выдал.
хотя сортировка не изменилась.
Последний раз редактировалось Sheer 20.03.2015 23:17, всего редактировалось 1 раз.
Причина: bb-код
Причина: bb-код
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Параметр "сортировка по дате создание темы" в поиске
$sort_by_sql
- строка, а не массив.
Код: Выделить всё
$sort_by_sql = 't.topic_first_post_time';
Зы. В бб-коде
Код: Выделить всё
работает [code=php]
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 3.0.12
- Сообщения: 2857
- Стаж: 15 лет 4 месяца
- Откуда: Украина! Харьков
- Благодарил (а): 68 раз
- Поблагодарили: 240 раз
Re: Параметр "сортировка по дате создание темы" в поиске
заменил массив на ваш вариант
выкинул из адресной строки, формируемой в функции - другая сортировка получилась, но на $sort_by_sql не реагирует, даже если убрать эту строку.
Код: Выделить всё
$sort_by_sql = 't.topic_first_post_time';
Код: Выделить всё
&sf=firstpost
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Параметр "сортировка по дате создание темы" в поиске
Фиг знает, надо код смотреть.
Отправлено спустя 4 минуты 17 секунд:
Отправлено спустя 3 минуты 53 секунды:
Хотя вот так
ты его меняешь, а надо дополнить.
Отправлено спустя 4 минуты 17 секунд:
Пардон, соврамши... массив
Отправлено спустя 3 минуты 53 секунды:
Хотя вот так
Код: Выделить всё
$sort_by_sql['t'] = 't.topic_first_post_time';
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: Параметр "сортировка по дате создание темы" в поиске
ошибки в синтаксисе нет, поэтому дебаггер и не выдал. Но какой эффект ты хотел получить, вставляя строку
Код: Выделить всё
$event['sort_by_sql'] = $sort_by_sql;
Отправлено спустя 2 часа 24 минуты 2 секунды:
Итак, в этих решениях минус на минус и ещё раз на минус почему-то не дал плюс
1. Надо изменить порядок сортировки ( по умолчанию для топиков идёт DESC
В строку формирования адреса добавить
Код: Выделить всё
&sd=a
строка в событии page_header_after
Код: Выделить всё
$event['sort_by_sql'] = $sort_by_sql;
Для решения нашей задачи нужно подписаться на другое событие
Код: Выделить всё
'core.search_modify_param_before' => 'search_modify_param_before',
Код: Выделить всё
public function search_modify_param_before($event)
{
$topic_sort =$this->request->variable('sf','all');
if ($topic_sort != 'firstpost')
{
return;
}
$sort_by_sql = $event['sort_by_sql'];
$sort_by_sql['t'] = 't.topic_time';
$event['sort_by_sql'] = $sort_by_sql;
}
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов