YuriBtr 58 Опубликовано: 9 декабря 2018 Рассказать Опубликовано: 9 декабря 2018 (изменено) Не секрет, что существующая система смены скина на сайте страдает недостатками. Один из них это то, что смена происходит по запросу типа POST. И после загрузки страницы, ее просто обновить нельзя - например в FireFox появляется сообщение: Цитата "Чтобы отобразить эту страницу, Firefox должен отправить информацию для повторения ранее произведённого действия (например, запрос на поиск или онлайн-покупка)." Также нельзя ограничить список выводимых шаблонов для переключения, дать им псевдонимы и сделать красивый переключатель. Вобщем я пытаюсь переделать систему изменения скинов под себя, и столкнулся с тем, что если просто изменить куку с именем dle_skin на другой шаблон, и запросить страницу по GET, то смены шаблона не произойдет ((( Получается, что необходимо обязательно отправлять POST запрос на сервер с именем нового скина. Мне не понятно, зачем это делать (сервер привязывает выбранный мной шаблон к моей сессии?), ведь нужное мне имя шаблона передается каждый раз в куке dle_skin. Почему бы серверу не брать значение dle_skin именно из куки? P.S. Сам написал, сам ответил: 1. Текущий подход нужен для того, чтобы не было откатов к прежнему шаблону, если сайт открыт одновременно в нескольких вкладках браузера. Так я поменяю куку в одной вкладке, а в той, что была открыта ранее, кука останется старой, и при любом переходе в этой вкладке старый шаблон вернется сам собой. 2. Текущий подход хорош для оптимизации - накладные расходы в каждом запросе на проверку изменился ли скин в куке, превышают пользу от смены скина через куку. Вопрос снимается, тему можно закрывать. Запрос на смену куки буду пробовать делать в отдельном AJAX POST запросе. Изменено 9 декабря 2018 пользователем YuriBtr Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 094 Опубликовано: 10 декабря 2018 Рассказать Опубликовано: 10 декабря 2018 6 часов назад, YuriBtr сказал: Также нельзя ограничить список выводимых шаблонов для переключения, дать им псевдонимы и сделать красивый переключатель. Вобщем я пытаюсь переделать систему изменения скинов под себя С чего это вдруг нельзя? Не пользуйтесь стандартными тегами DLE, а делайте свое оформление на чистом HTML таким каким нужно, главное это послать правильные параметры потом на сервер, и все будет работать. 6 часов назад, YuriBtr сказал: и запросить страницу по GET, то смены шаблона не произойдет ((( Неверное утверждение. DLE принимает как POST так и GET, ему без разницы как вы послали данные в этом вопросе. И если у вас не работает, значит некорректные данные были посланы на сервер. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 10 декабря 2018 Рассказать Опубликовано: 10 декабря 2018 7 часов назад, YuriBtr сказал: и запросить страницу по GET, то смены шаблона не произойдет /index.php?action_skin_change=yes&skin_name=NAME 1 Цитата Ссылка на сообщение Поделиться на других сайтах
YuriBtr 58 Опубликовано: 10 декабря 2018 Рассказать Опубликовано: 10 декабря 2018 Автор 1 час назад, celsoft сказал: Неверное утверждение. DLE принимает как POST так и GET, ему без разницы как вы послали данные в этом вопросе. И если у вас не работает, значит некорректные данные были посланы на сервер. Вы не поняли. По GET запросу я просто получаю страницу. А вот насчет идеи по отправке GET запроса на смену скина, спасибо. Попробую. Цитата Ссылка на сообщение Поделиться на других сайтах
Drage 20 Опубликовано: 21 мая 2020 Рассказать Опубликовано: 21 мая 2020 В 09.12.2018 в 22:30, YuriBtr сказал: буду пробовать делать в отдельном AJAX POST запросе. Удалось сделать смену шаблона таким методом? Цитата Ссылка на сообщение Поделиться на других сайтах
infoedu 0 Опубликовано: 17 октября 2020 Рассказать Опубликовано: 17 октября 2020 21.05.2020 в 22:25, Drage сказал: Удалось сделать смену шаблона таким методом? Также интересует данный вопрос! Цитата Ссылка на сообщение Поделиться на других сайтах
Хоббит 35 Опубликовано: 18 октября 2020 Рассказать Опубликовано: 18 октября 2020 22.05.2020 в 01:25, Drage сказал: Удалось сделать смену шаблона таким методом? Да. Цитата Ссылка на сообщение Поделиться на других сайтах
Drage 20 Опубликовано: 22 октября 2020 Рассказать Опубликовано: 22 октября 2020 18.10.2020 в 06:57, Хоббит сказал: Да. Можно поподробнее?) Цитата Ссылка на сообщение Поделиться на других сайтах
infoedu 0 Опубликовано: 22 октября 2020 Рассказать Опубликовано: 22 октября 2020 1 час назад, Drage сказал: Можно поподробнее?) Просто отправить запрос к файлу index.php $.ajax({ type: "POST", url: "https://ваш.сайт/index.php", data: {'action_skin_change': 'yes', 'skin_name': 'название шаблона', 'location' : 'адрес'}, }); location - это уже моя "надстройка" через плагин Имя файла: engine/init.php Найти: set_cookie ( "dle_skin", $_REQUEST['skin_name'], 365 ); Добавить ниже: if(isset ( $_REQUEST['location'] )){ header( 'Location: '. $_REQUEST['location'], 302 );} Кстати вопрос, так можно делать? Это не влияет на безопасность? Цитата Ссылка на сообщение Поделиться на других сайтах
YuriBtr 58 Опубликовано: 22 октября 2020 Рассказать Опубликовано: 22 октября 2020 Автор Все нормально, так можно делать. У меня написана такая функция: function skinChange() { ShowLoading('Переключаемся на старый дизайн, подождите...'); $.post( '/index.php', { action_skin_change: "yes", skin_name: "oldskin" } ).always(function() { window.location = window.location.href.split("#")[0]; } ); } И на кнопке стоит обработчик: <button onclick="skinChange();" class="btn btn-sm btn-primary" title="Переключиться на старый вид сайта"> 2 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.