Page 1 of 1

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

Posted: Mon Jun 25, 2012 9:26 pm
by m00nk
Суть: добавляем в тег {search} параметр resultpage="здесь алиас страницы", чтобы выводило результаты на указанной странице. После этого поиск прилежно отображает указанную страницу, но забывает нарисовать на ней результаты поиска, т.е. просто отображает контент страницы на момент ее создания.

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

Кто-нить знает решение?

ЗЫ
Версия 1.9.1

Re: вывод результатов поиска в отдельную страницу

Posted: Mon Jun 25, 2012 11:48 pm
by guro
Добавьте в вызов

Code: Select all

{search}
это

Code: Select all

search_method="post"

Re: вывод результатов поиска в отдельную страницу

Posted: Mon Jun 25, 2012 11:57 pm
by m00nk
guro wrote:Добавьте в вызов

Code: Select all

{search}
это

Code: Select all

search_method="post"
добавлял, не помогло. Да и не должно было помочь вообще-то.

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 12:10 am
by guro
Включен ли ЧПУ? Если включен ЧПУ, что в htaccess?
Интересует вот эта часть

Code: Select all

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
есть ли строка

Code: Select all

RewriteCond %{REQUEST_METHOD} !POST$
?

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 11:24 am
by m00nk
Да при чем здесь ЧПУ и посты?

Каким боком ЧПУ может мешать поиску при выводе результатов на указанной мной странице, и при этом совершенно не мешать при выводе в текущую страницу? У ж если бы что-то тут мешало поиску, то он бы не работал совсем и везде, не так ли?

Но раз хотите, вот содержимое htaccess:

Code: Select all

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 12:31 pm
by guro
Если вы пришли на форум поругаться, то вам никто в таком случае помогать не будет!!!

А теперь приведите свой htaccess к виду

Code: Select all

RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_METHOD} !POST$
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
т.е. добавьте строку

Code: Select all

RewriteCond %{REQUEST_METHOD} !POST$
И вызовите

Code: Select all

{search search_method="post" resultpage="здесь алиас страницы"}

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 2:19 pm
by m00nk
Спасибо, заработало.

А можете мне объяснить, с какого перепугу поиск реагирует на настройки mod_rewrite? А то у меня сейчас рожа, как у кота на Вашем аватаре...

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 2:35 pm
by guro
Дело в том, что без строчки

Code: Select all

RewriteCond %{REQUEST_METHOD} !POST$
htaccess при редиректе, с url без конечного слеша на url с конечным слешем, убивает все переменные переданные через POST. Соответственно и страница получается без результата поиска.

А вот почему не работает через GET - это действительно интересно. Причем не только на 1.9, но и на 1.10. Возможно стоит написать в Forge.

Так что вопрос остается открытым. Может кто-то фиксил эту проблему?

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 2:46 pm
by guro
Кстасти, вот что написано в описании модуля

Code: Select all

(optional) search_method="get" - Совместимость с Pretty Urls c помощью метода POST, по умолчанию параметры передаются в GET, чтобы изменить используйте {search search_method="post"}
Видимо из-за этого с ЧПУ и не работает GET

Re: вывод результатов поиска в отдельную страницу

Posted: Tue Jun 26, 2012 4:16 pm
by m00nk
guro wrote:Дело в том, что без строчки

Code: Select all

RewriteCond %{REQUEST_METHOD} !POST$
htaccess при редиректе, с url без конечного слеша на url с конечным слешем, убивает все переменные переданные через POST. Соответственно и страница получается без результата поиска.
т.е. решение проблемы - допилить модуль, чтобы в генерируемый форме в action приписывался адрес с слешем на конце. Ау, разработчики!
guro wrote:А вот почему не работает через GET - это действительно интересно. Причем не только на 1.9, но и на 1.10.
в версиях 1.6.ххх точно работало без допиливаний и по GET и по POST.

Еще раз спасибо за решение. Просто я всегда стараюсь руководствоваться логикой, но в случае CMSMS такое подход неприемлем. Уж не первый раз убеждаюсь. :(

Re: вывод результатов поиска в отдельную страницу

Posted: Wed Jun 27, 2012 8:56 am
by guro
m00nk wrote:Просто я всегда стараюсь руководствоваться логикой, но в случае CMSMS такое подход неприемлем
При включенном ЧПУ вполне логично грешить на htaccess. Ведь именно mod_rewrite первым обрабатывает все запросы к серверу и преобразует их к другому виду.

Re: вывод результатов поиска в отдельную страницу

Posted: Wed Jun 27, 2012 2:46 pm
by m00nk
первая попытка была именно с передачей через GET, поэтому позже я уже был уверен, что косяк внутри модуля, а внешние факторы ни при чем...