我正在尝试为网站管理员开发一个界面,以便能够通过点击按钮或链接来更改网站的样式表。
我知道您可以通过将更改应用于cookie来更改样式表,但这是每台计算机。我需要能够永久更改样式表,以便为所有用户进行更改,并且唯一可以更改它的人是管理员。有没有办法做到这一点?我还没有代码。
答案 0 :(得分:1)
如果您愿意使用数据库,则可以使用 设置 这样的表格,您可以在其中存储样式表的网址,然后在您的页面使用表单中的内容:
<link rel="stylesheet" type="text/css" href="<?= $stylesheet ?>">
$stylesheet
是查询数据库的结果。
对于表格,您有一个名为key
的列和一个名为value
的列,样式表行的值分别为stylesheet_url
和http://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;