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

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

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

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

18.06.20 в 20:12
20.06.20 в 19:56
27
1.574
0
  1. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +168 / 25 / -0
    Нашел в сети статью Как сделать тёмную тему для сайта

    Сделал всё по инструкции. Всё работает, кроме одного. Почему-то сохранение происходит только на главной странице сайта. Если менять тему на другой странице, то выбор темы не сохраняется. Подскажите, что сделал не так?

    В main.tpl в head добавил это

    Код:
    <?php session_start();if(!isset($_SESSION["theme"])){$_SESSION["theme"] = "light";} ?>
    И это

    Код:
    <link href="{THEME}/style/<?php echo $_SESSION['theme']; ?>.css" type="text/css" rel="stylesheet" id="theme-link">
    В низ перед </body> добавил js

    Код:
    var btn = document.getElementById("theme-button");
    var link = document.getElementById("theme-link");
    btn.addEventListener("click", function () { ChangeTheme(); });
    function ChangeTheme()
    {
        let lightTheme = "/templates/kinowalk-utf8/style/light.css";
        let darkTheme = "/templates/kinowalk-utf8/style/dark.css";
        var currTheme = link.getAttribute("href");
        var theme = "";
    
        if(currTheme == lightTheme)
        {
            currTheme = darkTheme;
            theme = "dark";
        }
        else
        {  
            currTheme = lightTheme;
            theme = "light";
        }
        link.setAttribute("href", currTheme);
        Save(theme);
        function Save(theme)
    {
        var Request = new XMLHttpRequest();
        Request.open("GET", "./themes.php?theme=" + theme, true); // путь к php файлу отвечающий за сохранение
        Request.send();
    }
    };
    И создал php файл themes.php с содержимым

    PHP:
    <?php
    session_start
    ();

    if(isset(
    $_GET["theme"]))
    {
        
    $theme $_GET["theme"];

        if(
    $theme == "light" || $theme == "dark")
        {
            
    $_SESSION["theme"] = $theme;
        }
    }
    ?>
    Что сделал не так? Почему только на главной происходит сохранение?
     
    #1 Bashmak, 18 июн 2020
    Последнее редактирование: 18 июн 2020
  2. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +249 / 29 / -0
    а к чему такие извращения? почему нельзя просто взять 2 темы (темная и светлая) и разрешить пользователям менять тему?
     
    • Согласен Согласен x 1
  3. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +318 / 45 / -0
    а не проще сделать дубль темы в temlates и поставить перключатель тем DLE
     
    • Согласен Согласен x 1
  4. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +168 / 25 / -0
    И ебаться с двумя шаблонами каждый раз?

    Ответил выше.
     
    #4 Bashmak, 18 июн 2020
    Последнее редактирование модератором: 19 июн 2020
  5. Forian

    Forian Местный

    Регистрация:
    24 окт 2019
    Сообщения:
    1.374
    Лучших ответов:
    3
    Рейтинги:
    +318 / 45 / -0
    ясно) ну зато практично)
     
  6. TopicStarter Overlay
    Bashmak

    PRO Users

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

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +249 / 29 / -0
    По сути у тебя 2 стиля, шаблон один и тот же, в чем проблема при смене шаблона копировать *.tpl и менять в одном название .css файла? Дело 30 секунд, зато хренотени со скриптами нет
     
  8. TopicStarter Overlay
    Bashmak

    PRO Users

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

    upload_2020-6-18_23-3-46.png

    Ну и помимо этого в дальнейшем ещё можно будет через js подключить переключение темы по времени юзера, например с 12 ночи до 6 утра.
     
  9. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +249 / 29 / -0
    Какой изврат
     
    • Согласен Согласен x 1
  10. TopicStarter Overlay
    Bashmak

    PRO Users

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

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +249 / 29 / -0
    Тоже изврат, для чтения книг есть или бумага или электронные книги с экранами еИнк
     
  12. TopicStarter Overlay
    Bashmak

    PRO Users

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

    TeraMoune Бывалый

    Регистрация:
    6 апр 2019
    Сообщения:
    310
    Лучших ответов:
    3
    Рейтинги:
    +130 / 9 / -0
    В tpl нельзя использовать php код. Все переменные функций php передаются в tpl при помощи тегов.
     
  14. TopicStarter Overlay
    Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +168 / 25 / -0
  15. TeraMoune

    TeraMoune Бывалый

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

    P.S. Но сейчас проверим, что же ты делаешь не так. И установим этот совет с 2006г, который до сих пор не внедрён в актуальную версию, потому как это лажа.
     
    #15 TeraMoune, 18 июн 2020
    Последнее редактирование: 18 июн 2020
  16. TopicStarter Overlay
    Bashmak

    PRO Users

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

    TeraMoune Бывалый

    Регистрация:
    6 апр 2019
    Сообщения:
    310
    Лучших ответов:
    3
    Рейтинги:
    +130 / 9 / -0
    А ты постоянно недоволен я посмотрю.
     
  18. TopicStarter Overlay
    Bashmak

    PRO Users

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

    Boba Бывалый

    Регистрация:
    18 апр 2020
    Сообщения:
    525
    Лучших ответов:
    0
    Рейтинги:
    +208 / 46 / -0
    Врятли тебе тут помогут, только критиковать умеют)
     
    • Нравится Нравится x 1
  20. TopicStarter Overlay
    Bashmak

    PRO Users

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