Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Свободное общение", создана пользователем Bashmak, 18 июн 2020.

18.06.20 в 20:12
20.06.20 в 19:56
27
1.374
0
  1. TeraMoune

    TeraMoune Бывалый

    Регистрация:
    6 апр 2019
    Сообщения:
    310
    Лучших ответов:
    3
    Рейтинги:
    +130 / 9 / -0
    Для начала
    Код:
    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 будешь тратить миллионы собранные от сайтов. Уже бы давно мог быть чутка в теме.


     
  2. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    В js файлах тег {THEME} как бы не работает.
     
  3. TeraMoune

    TeraMoune Бывалый

    Регистрация:
    6 апр 2019
    Сообщения:
    310
    Лучших ответов:
    3
    Рейтинги:
    +130 / 9 / -0
    Естественно, она не будет как собачка сидеть ждать учитывая, что ID уже утерян. И это будет хатико сессия.
    Да нет, только со стилями, шаблоны ведь одинаковыми будут.
    Как бы зачем идти искать когда у тебя на руках уже есть метод на сессии, а для печенек можно использовать $_COOKIE['name']
    И поправить лишь скрипт сохраняющий значение куков, а в последней версии dle появились функции с работой кук
    setcookie, так же есть и функция для работы с локальным хранилищем set_local_storage но увы получить значения этого хранилища в php не выйдет.

    А ну да, я просто Inline вставил код. Так поменял.
     
  4. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    Во, убрал только "точку" и теперь с любой страницы сохраняется.
    Вот это уже оказанная помощь, а не пустые разговоры на тему лажа или нет :)
    Спасибо.

    Но выше я уже написал, походу использовать SESSION это не лучший вариант.
    Я имел ввиду, что если добавлять в шаблон что-то новое, то придётся это делать дважды. Зачем такой гемор?
     
    #24 Bashmak, 18 июн 2020
    Последнее редактирование модератором: 19 июн 2020
  5. TeraMoune

    TeraMoune Бывалый

    Регистрация:
    6 апр 2019
    Сообщения:
    310
    Лучших ответов:
    3
    Рейтинги:
    +130 / 9 / -0
    Ну такие вещи уже пора самому находить, согласен :?
    Ну да есть немного, но как бы, а часто ли этим занимаешься ? Если пару раз в месяц то не страшно.

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

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

    в шаблоне потом только в подключении стиля подставить тег созданный с префиксом из куков чтобы оформление уже на старте было установлено.
     
  6. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    на нулледе ответил! используй {changeskin}
     
  7. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    Это абсолютно не подходит. Выше 2-3 раза назвал причину, поддержка двух шаблонов это лишний гемор.
     
  8. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    Решил проблему, может кому пригодится.

    В 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['имя куки'];
    }
    ?>

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