gpt4 book ai didi

javascript - 如何实现html页面的主题/模板加载

转载 作者:行者123 更新时间:2023-12-02 23:50:19 25 4
gpt4 key购买 nike

我有一个显示博客文章列表的网页。我需要一种方法能够为用户可以使用设置页面设​​置的页面提供不同的主题(html 结构和样式)。选择主题后,整个页面结构和样式都会更改为当前主题。我想使用 Nodejs 或 Php 来实现这个。

最佳答案

如果我要尝试完成此任务,我将使用 PHP 来完成此操作:

  1. 将他们的主题偏好设置存储在数据库中,并声明所做的更改将在他们注销并重新登录后可用。
  2. 每当他们再次登录时,请在您编写的任何登录/身份验证函数中将首选项设置为 session 变量。
  3. 创建一个 PHP 函数来检查他们的主题偏好并回显相应的 CSS 链接。
  4. 将您刚刚创建的函数放在主题应应用到的每个 .php 文件的头部(如果使用 MVC,则为模板)。

只是一个简短的例子:

数据库至少应该具备什么

mysql> select * from _users;
+----+-------+-------+--------+
| id | _user | _pass | _theme |
+----+-------+-------+--------+
| 1 | john | ***** | dkblue |
| 2 | jane | ***** | redgld |
| 3 | bill | ***** | blkwht |
+----+-------+-------+--------+

主题偏好作为 session 变量

  function authenticate($username, $password) {
# authenticate
//
// code to authenticate...
# retrieve user's theme (can also be a separate function)
$stmt = $sql->prepare("SELECT _theme FROM _users WHERE _user = '$username'");
$stmt->execute();
$results = $stmt->fetch(PDO::FETCH_ASSOC);
# establish session variables
$_SESSION['theme'] = $results['_theme'];
//
// other session variable code...
}

主题检查功能

  function checkTheme($theme) {
# remember to place function between <head> tags
switch ($theme) {
case 'dkblue':
$stylesheet = '/inc/css/darkblue.css';
break;
case 'redgld':
$stylesheet = '/inc/css/red-gold.css';
break;
case 'blkwht':
$stylesheet = '/inc/css/black-white.css';
break;
default:
# will default to this theme if no preference has been chosen
$stylesheet = '/inc/css/default.css';
break;
}
echo '<link rel="stylesheet" href="' . $stylesheet . '">';
}

blog.php

<?=session_start();?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<title>Blog</title>

<?=checkTheme($_SESSION['theme']);?>
</head>

关于javascript - 如何实现html页面的主题/模板加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55675359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com