Редактор темы

Реклама
Реклама

Тёмная/светлая сохранение на php. в чём ошибка?

  • Автор темы Автор темы Bashmak
  • Дата начала Дата начала
Что сделал не так? Почему только на главной происходит сохранение?
Для начала
Код:
let lightTheme = "/templates/kinowalk-utf8/style/light.css";
let darkTheme = "/templates/kinowalk-utf8/style/dark.css";
Замени /templates/kinowalk-utf8 на {THEME}

Тут
Код:
Request.open("GET", "./themes.php?theme=" + theme, true);
Убери ./ и перед " добавь dle_root +

Я не доволен лишь тем, что сюда набежали пофлудить отклоняясь от вопроса топика.
Ну так учись и старайся до последнего разбираться сам. И я не знаю логику развивай что ли, у тебя стаж в этом приличный. А ты до сих пор задаёшь вопросы уровня человека который только первый месяц с сайтами работает. И дальше лучше - проще не будет, есть еще миллион проблем и ошибок одного уровня но если ты не научишься смотреть в код и видеть возможные варианты то накой ты занимаешься и обманываешься себя ? Бросай, пока не состарился и не понял, что 30 лет сайтостроений не принесли тебе ничего кроме денег которые у тебя в тот момент уже не скорей не останутся. Ты же не хомяк какой-то который откладывает всё и когда стукнет 60 будешь тратить миллионы собранные от сайтов. Уже бы давно мог быть чутка в теме.


 
Потестил этот метод ещё, и если юзер разлогируется с сайта, то видимо сессия сбрасывается.
Естественно, она не будет как собачка сидеть ждать учитывая, что ID уже утерян. И это будет хатико сессия.
И ебаться с двумя шаблонами каждый раз?
Да нет, только со стилями, шаблоны ведь одинаковыми будут.
В общем, пошёл искать метод с localstorage или cookie.
Как бы зачем идти искать когда у тебя на руках уже есть метод на сессии, а для печенек можно использовать $_COOKIE['name']
И поправить лишь скрипт сохраняющий значение куков, а в последней версии dle появились функции с работой кук
setcookie, так же есть и функция для работы с локальным хранилищем set_local_storage но увы получить значения этого хранилища в php не выйдет.

В js файлах тег {THEME} как бы не работает.
А ну да, я просто Inline вставил код. Так поменял.
 
Автор темы
Убери ./ и перед " добавь dle_root +
Во, убрал только "точку" и теперь с любой страницы сохраняется.
Вот это уже оказанная помощь, а не пустые разговоры на тему лажа или нет 🙂
Спасибо.

Но выше я уже написал, походу использовать SESSION это не лучший вариант.
Потестил этот метод ещё, и если юзер разлогируется с сайта, то видимо сессия сбрасывается.

Да нет, только со стилями, шаблоны ведь одинаковыми будут.
Я имел ввиду, что если добавлять в шаблон что-то новое, то придётся это делать дважды. Зачем такой гемор?
 
Последнее редактирование модератором:
Вот это уже оказанная помощь, а не пустые разговоры на тему лажа или нет
Ну такие вещи уже пора самому находить, согласен :?
Я имел ввиду, что если добавлять в шаблон что-то новое, то придётся это делать дважды. Зачем такой гемор?
Ну да есть немного, но как бы, а часто ли этим занимаешься ? Если пару раз в месяц то не страшно.

Но тут если лень то и написать стоит простенькую переключалку, но плохо, что не можешь.
А оно очень просто. Смотри я напишу тут фразами. Не знаю сможешь ли в код перевести.

1. js функция на клик для переключения значения (Это уже есть только поправить под куки нужно)
2. создание тега глобального в main.tpl и подключаемых шаблонах тег со значением печенки пользователя, предварительно проверив наличие и если она пуста то установить стандартное значение.
3. profit

в шаблоне потом только в подключении стиля подставить тег созданный с префиксом из куков чтобы оформление уже на старте было установлено.
 
на нулледе ответил! используй {changeskin}
 
Автор темы
Решил проблему, может кому пригодится.

В php файл надо добавить

Код:
SetCookie("имя куки","$theme",time()+86400 * 30 * 12);


Должно получиться так:

Код:
<?php
session_start();

if(isset($_GET["theme"]))
{
    $theme = $_GET["theme"];
  
    SetCookie("имя куки","$theme",time()+86400 * 30 * 12);

    if($theme == "light" || $theme == "dark")
    {
        $_SESSION["theme"] = $theme;
    }
}
?>


А в тот кусок php кода который располагается в head надо добавить:

Код:
if(isset($_COOKIE['имя куки'])){
  $_SESSION["theme"] = $_COOKIE['имя куки'];
}


Должно получиться так:

Код:
<?php
session_start();

if(!isset($_SESSION["theme"]))
{
    $_SESSION["theme"] = "light";
}

if(isset($_COOKIE['имя куки'])){
  $_SESSION["theme"] = $_COOKIE['имя куки'];
}
?>


Таким образом будет проверка на сессию и на куки.
И даже если юзер разлогинится и сессия затрётся, выбранная им тема вытянется из куки.
 
Последнее редактирование:

Похожие темы Последние темы Популярные темы

Назад
Сверху