代码之家  ›  专栏  ›  技术社区  ›  Mike Lammers

如何使用php和mysql动态设计网站样式?

  •  0
  • Mike Lammers  · 技术社区  · 7 年前

    我正在寻找一种方法,使用数据库表样式的网站部分。我想要这个,因为我有多个网站,我想一个简单的方式,风格的默认部分容易。

    例子:

    我有一个 tbl_settings 它包含“设置ID、站点ID、标签、键、值”列。 例如,键可以是“footer_bg”,值将是“ff3300”。

    如何使用php将值发送到css/sass? 也许创建一个不存在的url并将css回送到其中?就像ajax一样。

    有什么想法,我真的不知道…?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Andrea Golin    7 年前

    嗯,我觉得这个设计不会很好。不管你用什么方法来编码,你最终都会在数据库上产生大量的查询负载。想象一下,为HTML中的每个类以及应用程序的每个用户启动查询。

    我将采用一种更“温和”的动态样式设计方法,创建一些“模板”css,将它们的路径存储到db中,并将它们动态加载到页面中。

        2
  •  0
  •   Ahmet    7 年前

    问题是可以将php文件作为css链接,但是在更新值和存储值之间存在一些问题,但是可以解决这个问题。 您可以像这样将php文件作为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 你也可以用汉德尔浏览器。

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

    推荐文章