2010-03-14 3 views
1

У меня возникли проблемы, обертывая мою голову вокруг того, как сделать редактируемые фоновые изображения в моей специальной теме Drupal 6. Мой клиент хочет использовать другое фоновое изображение в каждом основном разделе на своем веб-сайте (с несколькими типами контента: страница, блог, галерея изображений) и сохранять все динамическое, я хочу, чтобы фоновые изображения были доступны для редактирования.Drupal Фоновое изображение как блок или узел

Что я хотел бы сделать, это добавить поле фонового изображения к различным типам контента, которое позволяет пользователю ссылаться на изображение из библиотеки содержимого или загружать новое изображение (аналогично ImageAssist) и применять его к регион в моем шаблоне. Любые предложения по наилучшему подходу для этого?

Есть ли способ сделать пользовательский тип контента в динамический блок фона? Я использую модули Image, Image Cache, Views, CCK, Image Assist, Panels, Filefield и Imagefield.

Спасибо!

ответ

1

В настоящее время я работаю над таким сайтом. Что я сделал: 1. создать поле для содержимого для этого изображения, в котором администратор сайта может загрузить новый фон 2. в template.php я добавил местоположение изображения в новый $ var ['background'] i созданный 3. В pape.tpl.php я добавил div внутри тела, содержащего содержимое всей страницы, 4. В div div я добавил стиль и напечатал $ background в качестве значения фона пример (заменено <> с помощью [], чтобы избежать автоматического удаления кода): [body class = "[? php print $ body_classes;?]"] [div id = "page" style = 'background: url ("[? php print $ background? ] ") no-repeat; '] [/ div] [/ body] надеюсь, что это поможет Avn er

+0

Спасибо за ваш ответ ! Но вы используете только одно изображение? Я надеюсь как-то упростить поместить другое изображение в каждый раздел. Когда вы говорите «местоположение изображения», вы имеете в виду жесткое кодирование URL-адреса? –

+0

совсем нет, как я объяснил в своем комментарии, фон можно изменить и ввести как переменную (в моем примере $ background). напишите свой шаблон.php, и я постараюсь помочь вам с кодом – Avner

0

Прямо сейчас я жестко программирую URL-адрес, который довольно бессмыслен, пока не выясню, как сделать его динамичным. Вот часть моего 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"> 
     // .... 

Я создал тип фона узла изображения и хочу используйте его для предоставления узла страницы, изображения или галереи со списком изображений на выбор. Любые идеи о том, как это сделать?

2

присвоить функцию phptemplate_preprocess? возможно, я пропустил это, но есть такая функция на сайте API Drupal.
Я думаю, вы должны использовать phptemplate_preprocess_page, который должен быть реализован как:
'функция THEMENAME_preprocess_page (& $ vars)' и помещена в ваш шаблон.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, я предпочитаю не введите изображение в тег тела. я помещаю его внутри div, это позволит увеличить гибкость (например, если вы хотите, чтобы изображение было 20 пикселей ниже верхней части браузера).Пример:
<div id="main" >
<div id="page" style='background: url("<?php print $background ?>") no-repeat;'>

надеюсь, что это помогает Авнер

0

проще и чище способ добавить в template.php внутри функции phptemplate_preprocess_page():

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