2014-11-18 5 views
-1

У меня проблема с изображением поверх моей страницы. Когда url является websitename/menu, отображается image. Когда url является websitename/node/164, image исчезает.Изображение Drupal исчезает

Значок image показан, когда уровень 1, но когда url-level выше 1, image исчезает.

Я использую тему ZURB-Foundation на Drupal-7. Вот код, который я использую в page.tpl.php

<!--.page --> 
<div role="document" class="page"> 
<?php 
// Create a variable to hold the full path, in our theme, to the image. 
// path_to_theme() takes care of creating the correct path for the active theme (which is likely your own custom one) 
$my_static_banners = path_to_theme() . '/images/header/'; 
?> 
<?php 
if ($handle = opendir(path_to_theme() . '/images/header')) { 
/* This is the correct way to loop over the directory. */ 

while (false !== ($picture = readdir($handle))) { 
    if($picture != "." && $picture != ".."){ 
    $pictures[] = $picture; 
    } 
} 
$random = array_rand($pictures,1); 
$header_picture = $pictures[$random]; 
closedir($handle); 
} 
?> 
<!-- MENU--> 
<!--.l-header region --> 
<header role="banner" class="l-header" > 
<div class="header-image" style="background-image:url(<?php print  $my_static_banners.$header_picture ?>)"> 
</div> 
</div> 
... 

ответ

0

Пожалуйста, попытайтесь уменьшить количество PHP кода в пределах вашего тематизации слоя.

В шаблоне страницы:

<div role="document" class="page"> 
<!-- MENU--> 
<!--.l-header region --> 
<header role="banner" class="l-header" > 
    <div class="header-image" style="background-image:url(<?php print $header_image; ?>);"> 
    </div> 
    </div> 

В пределах вашей template.php в теме или в пользовательском модуле:

/** 
* Implements hook_preprocess_page(). 
*/ 
function THEME_NAME_preprocess_page(&$variables) { 
    $variables['header_image'] = FALSE; 
    $images = _THEME_NAME_get_images(); 
    if ($images) { 
    $random = array_rand($images, 1); 
    $variables['header_image'] = $images[$random]; 
    } 
} 

/** 
* Get images within a particular director. 
* 
* @return array 
* An array of images for the header. 
*/ 
function _THEME_NAME_get_images() { 
    $dir = drupal_get_path('theme', 'THEME_NAME') . '/images/header'; 
    $images = array(); 
    if (is_dir($dir) && $handle = opendir($dir)) { 
    while (FALSE !== ($filename = readdir($handle))) { 
     if ($filename[0] != '.') { 
     $images[] = $dir . $filename; 
     } 
    } 
    closedir($handle); 
    } 
    return $images; 
} 
+0

Я получаю arror: Примечание: Undefined переменной: header_image в включают () (строка 27 из C: \ wamp \ www \ raedthuijs \ sites \ all \ themes \ foundation_raedthuijs \ templates \ page.tpl.php) – BertLeonaers

+0

Это происходит, когда препроцесс не вызывается, убедитесь, что THEME_NAME заменено на ваш крючок , либо имя темы, в которую вы разместили этот код, или имя модуля пространство'. Как только вы очистите свой кеш. Попробуйте поместить var_dump ($ variables); умереть(); в реализации hook_preprocess_page(), как только ваша страница замирает, вы знаете, что этот крючок реализуется. –

+0

Спасибо, это работает, я не знаю, что я сделал неправильно, но теперь это работает. Я думаю, что это работает сейчас, потому что я очистил свой кеш. Но картина все еще исчезает, когда я перехожу к URL-адресу, например/node/290. Когда я проверяю код, правый URL-адрес помещается в код, но изображение не отображается – BertLeonaers

Смежные вопросы