如何使用PHP和MySQL动态设置网站样式?

时间:2018-10-09 14:58:36

标签: php css mysql sass

我正在寻找一种使用数据库表来样式化网站各个部分的方法。我之所以这样,是因为我有多个网站,而且我希望有一种轻松的方式来轻松设置默认零件的样式。

示例:

我有一个tbl_settings,它包含“ Setting_Id,Site_Id,Label,Key,Value”列。 键可以是“ footer_bg”,例如,值可以是“ ff3300”。

如何使用php将值发送到CSS / SASS? 也许创建一个实际上不存在的URL并在其中回显CSS?就像使用ajax。

任何想法,我真的不知道...?

2 个答案:

答案 0 :(得分:3)

嗯,我认为这种设计不能很好地工作。无论采用哪种方式编写此代码,最终都会给数据库带来大量查询负载。想象一下,针对您放入html中的每个类,针对应用程序的每个用户触发查询。

我将采用一种更加“温和”的动态样式方式,创建一些“模板” css,将其路径存储到db中,然后将其动态加载到您的页面中。

答案 1 :(得分:0)

问题是您可以将php文件链接为css。但是更新值和存储值之间存在一些问题,但是您可以解决此问题。 您可以像这样将CSS文件链接为CSS。

<link rel="stylesheet" href="css/dynamic.php" media="screen">

不需要设置此文件的标题。

css/dynamic.php

<?php
/** set header **/
header("Content-type: text/css");
?>

此后,您几乎可以echo所需的任何CSS规则。您可以在该文件中进行查询。

但是,只要文件名相同,就无法解决浏览器历史记录问题,如果在浏览器历史记录中有一个副本,它将是该站点使用的副本。要进行修复,您可以为规则集提供一些唯一的随机标识符。当您更改该标识符下的任何规则时,可以使用新标识符来更新该标识符。您如何处理手中的东西。没办法设置如何在HTML链接中使用此标识符并将其作为参数传递。

<!-- I assume that identifier stored in '$id' -->
<link rel="stylesheet" href="css/dynamic.php?somekey=<?=$id?>" media="screen">

您不能在文件中访问此更新的值

<?php
/** set header **/
header("Content-type: text/css");
/*Dont forget to escape this before passing it in to sql*/
$id = $_GET["somekey"];
?>

如果您处理css的值集的ID,那么您也可以处理浏览器的历史记录。

如果我错了,我很乐意纠正。