Drupal背景图像作为块或节点

时间:2010-03-14 07:32:46

标签: drupal-6 cck background-image

我无法绕过如何在我的自定义Drupal 6主题中制作可编辑的背景图像。我的客户希望在他的网站上的每个主要部分使用不同的背景图像(具有多种内容类型:页面,博客,图库),并且为了保持动态,我希望背景图像可以编辑。

我想要做的是将背景图片字段添加到各种内容类型,允许用户从内容库中引用图像或上传新图像(类似于ImageAssist),并将其应用于某个区域在我的模板中。有关最佳方法的任何建议吗?

有没有办法将自定义内容类型转换为动态背景图像块?我正在使用图像,图像缓存,视图,CCK,图像辅助,面板,文件字段和图像场模块。

谢谢!

4 个答案:

答案 0 :(得分:2)

使用phptemplate_preprocess函数吗?也许我错过了它,但在drupals的API网站上有这样的功能。
我认为你应该使用phptemplate_preprocess_page,它应该实现为:
'函数THEMENAME_preprocess_page(& $ vars)'并放在你的主题目录中的template.php中。
很可能该函数已经存在,你应该在它的末尾添加以下行:
global $base_url;
if (!empty($vars['node']->type)) {
if (($vars['node']->type == 'CONTENT-TYPE-A') || ($vars['node']->type == 'CONTENT-TYPE-B') {
$vars['background'] = $base_url."/".$vars['node']->field_background[0]['filepath']; }
}

请注意,field_background是一个cck字段

关于你的page.tpl.php,我不想在body标签中输入图像。我把它放在一个div中,这将允许更多的灵活性(例如,如果你希望图像低于浏览器顶部20px)。例如:
<div id="main" >
<div id="page" style='background: url("<?php print $background ?>") no-repeat;'>

希望这会有所帮助 阿夫纳

答案 1 :(得分:1)

这些天我自己在这样的网站上工作。 我做的是: 1.为此图像创建内容字段,网站管理员可以在其中上传新背景 2.在template.php中,我将图像位置添加到我创建的新$ var ['background']中 3.在pape.tpl.php中我在body中添加了一个包含所有页面内容的div, 4.在一个bove div中,我添加了一个样式并打印了$ background作为背景值 示例(使用[]重置&lt;&gt;以避免自动代码删除):   [body class =“[?php print $ body_classes;?]”]     [div id =“page”style ='background:url(“[?php print $ background?]”)no-repeat;']     [/ DIV]   [/身体] 希望这可以帮助 阿夫纳

答案 2 :(得分:0)

现在我正在对一个网址进行硬编码,直到我弄清楚如何使其动态化之前,这是毫无意义的。这是我的template.php文件的一部分:

function phptemplate_preprocess(&$vars, $hook) {
  $vars['background'] = base_path().'sites/default/files/wood-med.jpg';
   //...
}

以下是我的page.tpl.php文件的相关部分:

  </head>

    <body class="<?php print $body_classes ?>" style='background-image: url("<?php print $background ?>");background-repeat: repeat-y;'>
      <div id="pageWrapper">
      // ....

我创建了一个背景图像节点类型,并希望使用它来为页面,图像或图库节点提供可供选择的图像列表。关于如何解决这个问题的任何想法?

答案 3 :(得分:0)

更简单,更简洁的方法是在phptemplate_preprocess_page()函数中添加template.php:

if (isset($node->field_background[0]['filepath']) ){ $vars['styles'] .= ' '; $vars['styles'] .= 'div#page{background: url("'.$base_url.'/'.$node->field_background[0]['filepath'].'");}'; $vars['styles'] .= ''; }