【问题标题】:Custom User CSS in PHP?PHP中的自定义用户CSS?
【发布时间】:2015-04-21 19:41:07
【问题描述】:

我想在我的网站上添加一个功能,允许用户在多种样式之间进行选择。我在其他网站上看到过这个功能。我将如何进行此操作,或者有人可以向我推荐有关如何完成此操作的教程或指南?

【问题讨论】:

    标签: php css


    【解决方案1】:

    首先,您可以简单地将样式表链接设为动态:

    <link rel="stylesheet" href="<?=$style?>" type="text/css"/>
    

    并提供改变它们的链接:

    <a href="/page.php?theme=racecar">Racecar</a>
    

    在服务器上,根据查询字符串分配$style,如果用户决定修改URL,最好默认为某个值:

    <?php
        $stylesArr = array('racecar', 'magenta', 'cartman');
        if(isset($_GET['theme']) && in_array($_GET['theme'], $stylesArr)) {
            $style = $_GET['theme'] . '.css';
            setcookie("theme", $style, time()+(3600*24*30));//expires in one month
        } else {
            if(isset($_COOKIE['theme']) && in_array($_COOKIE['theme'], $stylesArr)) {
                $style = $_COOKIE['theme'] . '.css';
            } else {
                $style = 'default.css';
            }
        }
    ?>
    <link rel="stylesheet" href="<?=$style?>" type="text/css"/>
    

    您可以通过查询字符串cookiessessions 传播用户的风格。

    【讨论】:

    • 如果用户转到站点上的另一个页面,这不会改变样式吗?
    • @Nate Shoffner - 我已经编辑以写入和读取 cookie。它没有经过测试,但我认为它应该可以工作。
    • 解析错误:解析错误,期待第 22 行的 ','' or ')'' 会是这样的: if(isset($_COOKIE['theme'] && in_array($_GET['theme' ], $stylesArr)) {
    • @Nate Shoffner - isset() 缺少右括号。我已经修好了。
    • 我一直在尝试修改它,但我无法让实际样式起作用。我已经对名称进行了必要的更改以匹配预先存在的样式表,它们位于正确的目录中,但没有应用任何样式。
    【解决方案2】:

    您可以将有关样式的信息存储在 cookie 中,如果用户被注册,则可以存储在数据库中。然后根据值在页面上使用 php 添加所需的 css 文件。

    【讨论】:

    • 如何将它们存储在 cookie 中?
    【解决方案3】:

    根据您的页面呈现方式,最好在选择主题后将主题存储在 cookie 中,否则您需要将 ?theme=racecar 附加到页面上的每个链接。

    if(isset($_GET['theme']))
    {
        setcookie('theme', $_GET['theme']);
        $style = $_GET['theme'];
    }
    else if(isset($_COOKIE['theme']))
    {
        $style = $_COOKIE['theme'];
    }
    else
    {
        $style = 'default';
    }
    
    <link href="/styles/<?php echo $style; ?>.css" rel="stylesheet">
    

    【讨论】:

    • ?theme=">
    【解决方案4】:

    我也看到它是用 javascript 完成的。

    与其他几个答案的基本想法相同:您将所选样式写入 cookie,然后在页面加载时读取它以确定要加载的样式表。

    使用 javascript,您还可以在不重新加载页面的情况下切换样式,如果您设置好 css,您可以切换 body 的 id 或 class 之类的内容,并且无需下载即可拥有新样式一个新的样式表,因此样式切换几乎立即发生。

    非常甜蜜的效果,祝实施顺利。

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 2011-03-10
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多