永久更改样式表

时间:2013-05-03 16:21:45

标签: php css

我正在尝试为网站管理员开发一个界面,以便能够通过点击按钮或链接来更改网站的样式表。

我知道您可以通过将更改应用于cookie来更改样式表,但这是每台计算机。我需要能够永久更改样式表,以便为所有用户进行更改,并且唯一可以更改它的人是管理员。有没有办法做到这一点?我还没有代码。

4 个答案:

答案 0 :(得分:1)

如果您愿意使用数据库,则可以使用 设置 这样的表格,您可以在其中存储样式表的网址,然后在您的页面使用表单中的内容:

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

$stylesheet是查询数据库的结果。

对于表格,您有一个名为key的列和一个名为value的列,样式表行的值分别为stylesheet_urlhttp://example.com/style.css

或者您可以允许管理员直接编辑CSS文件并使用PHP将更改保存到文件中,这不需要数据库,可能会提高性能。 A quick search揭示了这将是多么容易。

答案 1 :(得分:0)

可以通过 BLOB 将其存储在数据库中 这是一个相当不错的参考http://www.it-iss.com/mysql/mysql-inserting-and-reading-blobs-in-php/

答案 2 :(得分:0)

您的页面上已经有了样式表,并且在每个页面类型的正确组中正确设计了选择器的体系结构(即您的ID和类)。

现在,您可以轻松地专注于JavaScript(可选),如果您想使用例如下拉框来重新加载DOM的某个部分以更改ID和类,则无需刷新页面。

也不需要PHP,让PHP处理后端数据,而这个过程控制样式。

答案 3 :(得分:0)

以下是PHP生成的样式表,它使用模板进行聊天室。我只是将它作为一个例子发布,你可以适应自己的目的。请注意指定内容类型的标头:

header('Content-type: text/css');

//I forgot what v stands for, but it's an array of user defined styles.
$v['uid'] = 'u'.$id;
$v['msg_bg'] = 'FFFFFF';//background color of message window
$v['user_c'] = '0114A0';//color of user's name
$v['action_c'] = '990000';//color of enter/exit messages
$v['other_c'] = '270049';//color of the names of others
$v['text_c'] = '000000';//general text color
$v['font_s'] = '16';
$v[''] = '';
$v[''] = '';

$css = <<<EOTAAA
#userwindow{
    margin:  0 0 20px 20px;
}

#messagewindow, #userwindow{
    background-color: #%msg_bg%;
    font-size: %font_s%px;
    font-family: Tahoma, cx-bair, Arial, sans-serif;
}

#messagewindow p {
    color: #%text_c%;
    font-family: Tahoma, cx-bair, Arial, sans-serif;
}

#messagewindow p b, #userwindow p{
    color: #%other_c%;
}

#messagewindow p.self b, p#%uid%{
    color: #%user_c%;
}

#messagewindow p span{
    color: #%action_c%;
    text-transform: uppercase;
    font-size: 12px;
}

EOTAAA;

//custom font filenames
$cx[] = "bair";
$cx[] = "century_gb";
$cx[] = "oakwood";
$cx[] = "plantc";
$cx[] = "salzburg-bold";
$cx[] = "sanskrit";
$cx[] = "timess";

$font_css = '';

$font_template = <<<EOTAAB

@font-face {
    font-family: cx-%fontname%;
    src: url("%url%fonts/%fontname%.eot");
}

@font-face {
    font-family: cx-%fontname%;
    src: url("%url%fonts/%fontname%.ttf");
}

EOTAAB;

foreach ($cx as $key => $value){
    $font_css .= str_replace(array('%fontname%', '%url%'), array($value, base_url()), $font_template);
}

foreach ($v as $key => $value){
    $search[] = '%'.$key.'%';
    $replace[] = $value;
}

echo str_replace($search, $replace, $css).$font_css;