Один из самых простых способов получить какую-то персонализированную тему для php-сайта - это использовать разные таблицы стилей для разных тем и сохранять их в браузере пользователя куки . Не самый идеальный, но работает для большинства пользователей.
Допустим, у вас есть 3 таблицы стилей с именами default.css, theme1.css и theme2.css.
default.css:
body {
color: blue,
background-color: white;
font-family: arial;
}
theme1.css:
body {
color: black,
background-color: yellow;
font-family: verdana;
}
Вот пример кода для вывода ссылки на другую таблицу стилей в зависимости от того, что было сохранено в файлах cookie, иначе используйте файл по умолчанию.
<head>
<?php
if (!isset($_COOKIE['siteTheme']))
echo '<link rel="stylesheet" type="text/css" href="/css/' . $_COOKIE["siteTheme"] . '" />";
else
echo '<link rel="stylesheet" type="text/css" href="/css/default.css" />';
?>
<!-- other elements in head -->
</head>
Чтобы сохранить выбранную пользователем тему, у вас может быть выпадающий список или гиперссылки на страницу, которая затем установит файлы cookie.
Скажите гиперссылку на "setTheme.php?theme=theme1
", "theme=theme2
" и т. Д.
Или выпадающая форма
<form method='get' action='/setTheme.php'>
<select name='theme' onchange='this.form.submit();'>
<option value='default'>default</option>
<option value='theme1'>Theme 1</option>
<option value='theme2'>Theme 2</option>
</select>
</form>
На странице setTheme.php добавьте следующее:
<?php
$expire=time()+60*60*24*30; //exipiry of the cookie
setcookie("siteTheme", $_GET["theme"], $expire); //store the selected theme to cookie
?>
Затем верните ссылку на домашнюю страницу с кодом выбора таблицы стилей темы (первый справа вверху), и все готово.
PS: не будет работать, если браузеры не поддерживают файлы cookie или файлы cookie отключены.
Отказ от ответственности: я не проверял фактические коды выше, но концептуально это должно работать.