0

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

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

4

4 回答 4

1

如果您乐于使用数据库,您可以简单地拥有一个表格,例如settings,您将在其中存储样式表的 URL,然后在您的页面上使用以下形式的内容:

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

$stylesheet对数据库的查询结果在哪里。

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

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

于 2013-05-03T16:25:46.547 回答
0

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

于 2013-05-03T16:23:42.120 回答
0

已经在您的页面上拥有您的样式表,并根据页面类型在适当的组中正确设计选择器的体系结构(即您的 ID 和类)。

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

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

于 2013-05-03T16:27:18.757 回答
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;
于 2013-05-03T16:59:02.550 回答