mmkulikov 14 Жалоба Опубликовано: September 19, 2015 Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинацииДобавляем в main.php шаблона в самом начале функции main следующий код:$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урл 3 DoobBY, Дмитрий Кондин и Chernetskiy reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: September 25, 2015 А это о каком шаблоне идет речь? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmkulikov 14 Жалоба Опубликовано: September 26, 2015 А это о каком шаблоне идет речь?Это будет работать в любом шаблоне Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DoobBY 9 Жалоба Опубликовано: October 19, 2015 Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинацииДобавляем в main.php шаблона в самом начале функции main следующий код:$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урлПрописываю, о при обновлении страницы, на секунду вылазит код, потом появляется сайт. Прописываю в маин, просто в самом начале, потом основной код начинается, правильно ли я делаю ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: October 20, 2015 Прописываю, о при обновлении страницы, на секунду вылазит код, потом появляется сайт. Прописываю в маин, просто в самом начале, потом основной код начинается, правильно ли я делаю ?Можете принтскрин этого кода показать, который появляется? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DoobBY 9 Жалоба Опубликовано: October 20, 2015 Можете принтскрин этого кода показать, который появляется?Еле словил момент - http://prntscr.com/8t889e Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: October 20, 2015 Еле словил момент - http://prntscr.com/8t889eЭто значит что вы просто в main.php вставили код в начале файла, так неправильно.Вам нужно в этом файле найти функцию (строчки)function main () {И сразу после нее добавить код. 1 DoobBY reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DoobBY 9 Жалоба Опубликовано: October 20, 2015 Это значит что вы просто в main.php вставили код в начале файла, так неправильно.Вам нужно в этом файле найти функцию (строчки)function main () {И сразу после нее добавить код.Спасибо, теперь нет page1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
pushnov 33 Жалоба Опубликовано: November 4, 2015 Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинацииДобавляем в main.php шаблона в самом начале функции main следующий код:$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урл Если не ошибаюсь, то в таком варианте перестанет работать сортировка объявлений на главной странице, если она присутствует в шаблоне. При сортировке используется запрос типа site.ru/?page=1&order=type&asc=desc, где page=1 обязателен. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: November 4, 2015 Действительно, в шаблоне Realia не работают функции, расположенные на панели под картой на главной, вызывая ошибку 404, а именно - варианты отображения list/thumbs, сортировка по возрастанию/убыванию, сортировка по типам город/район/улица/цена ... Пока отключаю эту примочку. Ждём сведений со стороны... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 6, 2015 if (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches))В этом условии, как минимум, не нужно захватывать [\?\&] в регулярке, потому что присходит замена не только page=1 а ?page=1 или &page=1. Второе не особо страшно, а вот первое полностью ломает строку переменных запроса. Но и просто выкинуть их за скобки тоже не вариант кажется. Над этим я еще подумаю. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: November 6, 2015 Константин, барыги всея СНГ смотрят на тебя с надеждой... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
pushnov 33 Жалоба Опубликовано: November 7, 2015 Не уверен на сколько это правильно, т.к. не селен в php и тем более в регулярных выражениях, но я бы сделал так if (preg_match("#([\?\&]+page=1)$#",$r_uri,$matches)). В таком варианте замена page=1 при поиске или сортировке не должна происходить. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmkulikov 14 Жалоба Опубликовано: November 7, 2015 Вот исправленный вариант $r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрами if (preg_match("#([\?\&]+page=1)(\D*)$#",$r_uri,$matches)) { $new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri); if(!empty($matches[2]) && $matches[1] == '?page=1') { $new_location = substr_replace($new_location,'?',strpos($new_location,'&'),1); } header('HTTP/1.1 301 Moved Permanently'); header('Location: '.$new_location); exit(); } // Убираем page=1 из урл Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 7, 2015 Вариант 1:суть: разбираем адрес запроса. анализируем параметры на наличие первой страницы. при наличии его - убираем ео из параметров, пересклеиваем строку запроса, формируем новый адрес с учетом вырезки и делаем редирект.минусы: больше строкплюсы: нет неочевидных регулярок$parsed_parts=parse_url($_SERVER['REQUEST_URI']);$par=array();parse_str($parsed_parts['query'], $par);if(isset($par['page']) && $par['page']=='1'){ unset($par['page']); $new_location=SITEBILL_MAIN_URL.$parsed_parts['path'].(count($par)>0 ? '?'.http_build_query($par) : ''); header('HTTP/1.1 301 Moved Permanently'); header('Location: '.$new_location); exit();}Вариант 2:суть: регуляркой ищем в строке запроса подозрительные куски вида ?page=1 и &page=1, При наличии их даем команду на замену. Но замену проводим не в лоб, а избирательно: /apps/?page=1¶mА=x¶mB=y =============> ?page=1& меняем на "?" что бы сохранить целостность строки запросы и просто убить первое звено/apps/?page=1 =============> ?page=1 "короткая" строка запроса: меняем на пустоту/apps/?paramА=x&page=1¶mB=y =============> &page=1 меняем на пустоту (удаляем звено) порядок замен важен! минусы: для фанатов регулярок минусов нет, но необходимость вариативнх действия после использования регулярки, сводит профит от ее применения к мизеруплюсы: меньше строк$r_uri = $_SERVER['REQUEST_URI'];if (preg_match("#([\?\&]page=1)\D*$#", $r_uri, $matches)) { $new_location=SITEBILL_MAIN_URL.str_replace(array('?page=1&', '?page=1', '&page=1'), array('?', '', ''), $r_uri); header('HTTP/1.1 301 Moved Permanently'); header('Location: '.$new_location); exit();} 1 Chernetskiy reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 7, 2015 if (preg_match("#([\?\&]+page=1)(\D*)$#",$r_uri,$matches)) { Не могу понять зачем плюсик между вариативным ?|& и page=1 ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mmkulikov 14 Жалоба Опубликовано: November 7, 2015 Не могу понять зачем плюсик между вариативным ?|& и page=1 ?Это последствия "одновременной игры" под названием "программируем+отбиваемся по скайпу" Мог быть и не "+", а что-то типа {1,1} .... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 7, 2015 в принципе кажется такое перечисление [\?\&] эквивалентно {1,1} Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: November 7, 2015 Проверил по варианту 1, полёт нормальный, глюков не заметил. Сортировка и переключение видов - list / thumbs работает корректно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: November 11, 2015 После манипуляций с вариантом 1 (пост 15) заметил, что если переходить с главной на страницы 2,3 и т.д. в пагинаторе, после чего кликнуть на Главную (по сути первую), то отображается последняя открытая страница но уже в качестве главной, т.е. ничего не меняется. Шаблон Realia Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 16, 2015 А это уже другая история. Есть внутри движка такая штучка, как фиксация последней просмотренной страницы. Суть в том, что вы открыли список своих объяв в ЛК, налистали страницу N, выбрали объявку и открыли ее поредактировать. После этого жмете сохранить и, обычно вы должны были бы вылететь на первую страницу списка, но вот эта запомненная страница не дает сделать этого и вы опять остаетесь на той, с которой ушли на форму. А вот то, что вы наблюдаете в обычном списке - это побочное явление вот этого запоминания. Можно убить это поведение совсем, разместив строкиif(isset($_SESSION['rem_page'])){unset($_SESSION['rem_page']);}в файле /main/main.php сразу после <?phpЛибо попробовать зарезать их аккуратнее, поставив эти же строки после блока if ( !$has_result && preg_match('/^account/', $REQUESTURIPATH) ) {...}Тогда мы как бы оставим это поведение для ЛК, но уберем для сетки объявлений. Первый способ у меня самого включен исходно и меня устраивает, а вот второй я, честно говоря, тщательно не проверял. 1 Chernetskiy reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
revtail 14 Жалоба Опубликовано: November 17, 2015 А это уже другая история. Есть внутри движка такая штучка, как фиксация последней просмотренной страницы. Суть в том, что вы открыли список своих объяв в ЛК, налистали страницу N, выбрали объявку и открыли ее поредактировать. После этого жмете сохранить и, обычно вы должны были бы вылететь на первую страницу списка, но вот эта запомненная страница не дает сделать этого и вы опять остаетесь на той, с которой ушли на форму. А вот то, что вы наблюдаете в обычном списке - это побочное явление вот этого запоминания. Можно убить это поведение совсем, разместив строкиif(isset($_SESSION['rem_page'])){unset($_SESSION['rem_page']);}в файле /main/main.php сразу после <?phpЛибо попробовать зарезать их аккуратнее, поставив эти же строки после блока if ( !$has_result && preg_match('/^account/', $REQUESTURIPATH) ) {...}Тогда мы как бы оставим это поведение для ЛК, но уберем для сетки объявлений. Первый способ у меня самого включен исходно и меня устраивает, а вот второй я, честно говоря, тщательно не проверял. Тоже интересовал этот вопрос. Сделал как написали, работает Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 17, 2015 Сделал как написали, работает Первым способом (глобально) или вторым (после отработки account)? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
revtail 14 Жалоба Опубликовано: November 17, 2015 Первым способом (глобально) или вторым (после отработки account)?Второй, тоже была проблема, с тем что остаются страницы пользователя. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
VladSI 15 Жалоба Опубликовано: November 25, 2015 Это последствия "одновременной игры" под названием "программируем+отбиваемся по скайпу" Мне бы так, хотя бы первое. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах