• Главная
  • Поиск
    •  
  • Здравствуйте, Гость

Автор Тема: Расширенный Поиск  (Прочитано 1902 раз)
  • *
  • Сообщений: 3
« : 16 Январь 2018, 13:27:40 »
 :) Привет, народ! Помогите мне разобраться с ошибкой. Не работает так называемый фильтр или расширенный поиск? Как исправить проблему и в чем дело? Прошу помогите советом!

http://rafaelovich.ru/index.php?page=search&sCategory=9

При писке выдает ошибку: http://rafaelovich.ru/index.php?page=search&sOrder=dt_pub_date&iOrderType=desc&sPattern=&sCountry=&sRegion=&sCity=&sPriceMin=&sPriceMax=&sCategory%5B%5D=9

Warning: urldecode() expects parameter 1 to be string, array given in /var/www/vhosts/u0381415.plsk.regruhosting.ru/rafaelovich.ru/oc-includes/osclass/classes/Rewrite.php on line 192

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/u0381415.plsk.regruhosting.ru/rafaelovich.ru/oc-includes/osclass/utils.php:1738) in /var/www/vhosts/u0381415.plsk.regruhosting.ru/rafaelovich.ru/oc-includes/osclass/utils.php on line 1741
« Последнее редактирование: 16 Январь 2018, 15:04:00 от Dis »

Оффлайн Dis
  • Admin
  • *****
  • Сообщений: 1745
    • Шаблоны и плагины Osclass
« Ответ #1 : 16 Январь 2018, 15:04:36 »
/oc-includes/osclass/classes/Rewrite.php
заменить
public function extractParams($uri = '')
        {
            $uri_array = explode('?', $uri);
            $length_i = count($uri_array);
            for($var_i = 1;$var_i<$length_i;$var_i++) {
                parse_str($uri_array[$var_i], $parsedVars);
                foreach($parsedVars as $k => $v) {
                    Params::setParam($k, urldecode($v));
                }
            }
        }
на
public function extractParams($uri = '')
        {
            $uri_array = explode('?', $uri);
            $length_i = count($uri_array);
            for($var_i = 1;$var_i<$length_i;$var_i++) {
                if(preg_match_all('|&([^=]+)=([^&]*)|', '&'.$uri_array[$var_i].'&', $matches)) {
                    $length = count($matches[1]);
                    for($var_k = 0;$var_k<$length;$var_k++) {
                        Params::setParam($matches[1][$var_k], $matches[2][$var_k]);
                    }
                }
            }
 }
Но это работает только для поиска на латинице.
Для русскоязычных сайтов( и других на кириллице) включайте Дружественные url и используйте https://4osclass.net/index.php/topic,4.0.html
« Последнее редактирование: 17 Январь 2018, 14:20:36 от Dis »
Доработки любой сложности.
Задание присылайте в личку.

  • *
  • Сообщений: 3
« Ответ #2 : 17 Январь 2018, 17:21:33 »
Большое спасибо Вам!!!

 


test