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

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

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

  • Автор темы Автор темы Bashmak
  • Дата начала Дата начала

Bashmak

PRO Users
Регистрация
25 Фев 2017
Сообщения
642
Рейтинг реакций
90
Баллы
28
1/3
Автор темы
Нашел в сети статью Как сделать тёмную тему для сайта

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

В 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;
    }
}
?>

Что сделал не так? Почему только на главной происходит сохранение?
 
Последнее редактирование:
а к чему такие извращения? почему нельзя просто взять 2 темы (темная и светлая) и разрешить пользователям менять тему?
 
Нашел в сети статью Как сделать тёмную тему для сайта

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

В 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();
}
};

Что сделал не так? Почему только на главной происходит сохранение?
а не проще сделать дубль темы в temlates и поставить перключатель тем DLE
 
Автор темы
а к чему такие извращения? почему нельзя просто взять 2 темы (темная и светлая) и разрешить пользователям менять тему?
И ебаться с двумя шаблонами каждый раз?

а не проще сделать дубль темы в temlates и поставить перключатель тем DLE
Ответил выше.
 
Последнее редактирование модератором:
Автор темы
ясно) ну зато практично)
Поддерживать сразу 2 шаблона, такое себе занятие, ну и при смене шаба перезагружается страница, а при методе выше моментально меняется стиль.
 
Поддерживать сразу 2 шаблона, такое себе занятие, ну и при смене шаба перезагружается страница, а при методе выше моментально меняется стиль.

По сути у тебя 2 стиля, шаблон один и тот же, в чем проблема при смене шаблона копировать *.tpl и менять в одном название .css файла? Дело 30 секунд, зато хренотени со скриптами нет
 
Автор темы
По сути у тебя 2 стиля, шаблон один и тот же, в чем проблема при смене шаблона копировать *.tpl и менять в одном название .css файла? Дело 30 секунд, зато хренотени со скриптами нет
Не, это не вариант. Я вот такую кнопочку хочу, при нажатии на которую моментально меняется тема.

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

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

Тоже изврат, для чтения книг есть или бумага или электронные книги с экранами еИнк
 
Автор темы
Тоже изврат, для чтения книг есть или бумага или электронные книги с экранами еИнк
Ок друг, я просил помощи, а не рассуждений на тему о том как ты читаешь книги сидя в сартире.
 
Последнее редактирование:
Автор темы
В общем ладно, тему можно закрыть.
Потестил этот метод ещё, и если юзер разлогируется с сайта, то видимо сессия сбрасывается.
В общем, пошёл искать метод с localstorage или cookie.
 

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

Назад
Сверху