每次访问时更改网站背景的最佳方法是什么?
1)编写php代码,加载包含background属性的随机css文件 2)编写php代码,生成不同的html(并将背景属性直接包含在html代码中) 3)别的什么?
感谢
答案 0 :(得分:1)
这可以在theme's page.tpl.php variable preprocessor中完成。将随机样式存储在$ _SESSION数组中,以重用同一用户会话中的所有页面。并将标记附加到模板中使用的$head
变量。
YOURTHEME_preprocess_page(&$variables) {
$style = $_SESSION['YOURTHEME_background_style'];
if (!$style) {
$style = array();
//Generate your random CSS here
$style = "background-image: url('bg-". rand(0,10) .".png')";
$_SESSION['YOURTHEME_background_style'] = $style;
}
$variables['head'] .= '<style type="text/css">body {'. implode("\n", $style) .'}</style>';
}
通常,$head
位于page.tpl.php templaye中的$style
之前,因此来自任何.css文件的CSS规则将覆盖您的随机规则。您可能必须在随机CSS中使用!important
来避免这种情况。
答案 1 :(得分:0)
我可能会:
hook_user
op login检测登录,然后将背景颜色代码存储在用户对象中。答案 2 :(得分:0)
使用会话cookie。可以通过js(客户端)或像php(服务器端)之类的东西设置。以下是仅限js解决方案的示例:
<!doctype html>
<html><head><script>
var backgrounds=['foo.png', 'bar.png', 'hahah.png'];
function setBg () {
var currentBg=readCookie('which_bg');
if (!currentBg) {
currentBg=backgrounds[Math.random()*backgrounds.length|0];
createCookie('which_bg', currentBg);
}
document.body.style.backgroundImage='url('+currentBg+')';
}
// from http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
</script></head>
<body onload="setBg();">
...
</body></html>
答案 3 :(得分:0)
要在每次加载页面时更改背景图像(尽管不是“访问”),您可以使用Drupal模块Dynamic Background。对于Drupal 7,只有7.x-2.x分支包含随机循环背景的选项。您可以使用以下命令安装它:
drush dl dynamic_background-7.x-2.x && drush en dynamic_background
该功能也可以添加到带有a patch的7.x-1.x分支,也可以添加到6.x-1.x分支。