Я работаю над сайтом, где пользователь может обновить тему по ссылке вверху страницы. Отказ от ответственности: позже я заменю ссылку на Javascript, но сейчас я хочу безопасное резервное копирование на случай, если пользователь не поддерживает Javascript.
Я могу заставить ссылку отображаться нормально с моим PHP. Он выходит на <a href="?theme=dark">
, если это светлая тема, и отображается как <a href="?theme=light">
, если пользователь использует темную тему.
Однако, если щелкнуть любую из этих ссылок, обновляется только браузер в моей адресной строке, что заставляет меня обновить страницу вручную, чтобы сменить тему. Страница не перезагружается, когда я нажимаю на ссылку, и поэтому тема не меняется. Он действует как асинхронный запрос, но все соответствующие изменения встроены в HTML, поэтому они не происходят до обновления.
Я что-то не так делаю? Есть ли способ заставить страницу перезагрузиться, когда я нажимаю на эти ссылки?
Спасибо за любую помощь, которую вы можете предложить!
РЕДАКТИРОВАТЬ: Вот текущий сценарий:
<?php
if ($_GET["theme"]) {
$theme = $_GET["theme"];
setcookie("theme", $theme, time()+21*24*60*60);
}
else if (isset($_COOKIE["theme"]))
$theme = $_COOKIE["theme"];
else {
$theme = "light";
setcookie("theme", $theme, time()+21*24*60*60);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<!-- head content... -->
</head>
<body id="<?php
echo $_COOKIE["theme"];
?>">
<div id="container">
<div id="header">
<a id="switch" href="?theme=<?php
if ($_COOKIE["theme"]=="light")
echo "dark";
else
echo "light";
?>">Lights</span>
</div>
<!-- Rest of page content -->
</div>
</body>
</html>
С помощью приведенного выше кода, нажав на ссылки, я перехожу на /index.php?theme=theme, но я должен обновить, прежде чем изменения вступят в силу. С сервера не загружается новый html, поэтому идентификатор тела не меняется.
Печенье остается без изменений.
P.S. Как я уже говорил, я буду делать асинхронную версию с Javascript, я просто хочу сначала поддержать пользователей, у которых она не включена. Спасибо.