Фоновое изображение Drupal в виде блока или узла - PullRequest
1 голос
/ 14 марта 2010

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

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

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 03 мая 2010

Назначается ли функция phptemplate_preprocess? возможно я пропустил это, но на сайте API drupals есть такая функция.
Я думаю, что вы должны использовать phptemplate_preprocess_page, который должен быть реализован как:
'function THEMENAME_preprocess_page (& $ vars) "и помещается в ваш template.php, который находится в директории вашей темы.
Скорее всего, функция там уже существует, и вы должны добавить следующие строки в конце:
global $base_url;<br> if (!empty($vars['node']->type)) {<br> if (($vars['node']->type == 'CONTENT-TYPE-A') || ($vars['node']->type == 'CONTENT-TYPE-B') {<br> $vars['background'] = $base_url."/".$vars['node']->field_background[0]['filepath']; }<br> }
обратите внимание, что field_background является полем cck

относительно вашего page.tpl.php, я предпочитаю не вводить изображение в тег body. я поместил его внутрь в div, это даст большую гибкость (например, если вы хотите, чтобы изображение было на 20 пикселей ниже верхней части браузера). Пример:
<div id="main" ><br> <div id="page" style='background: url("<?php print $background ?>") no-repeat;'>

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

1 голос
/ 16 марта 2010

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

0 голосов
/ 02 июня 2010

Более простой и понятный способ - добавить в 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'] .= ''; }

0 голосов
/ 11 апреля 2010

Сейчас я жестко программирую 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">
      // ....

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

...