2015-10-08 4 views
1

Это код файла vegas.module. он используется для загрузки изображений из определенной папки.Распечатать переменную в файле темы из drupal module

function vegas_init() { 
    // Load all the images to be added to Vegas. 
    $backgrounds = array(); 
    $fade = variable_get('vegas_fade', 0); 
    for ($i = 0; $i < 10; $i++) { 
    $fid = variable_get('vegas_images_' . $i, ''); 
    if (!empty($fid)) { 
     $image = file_load($fid); 
     if ($image) { 
     $background = array(
      'src' => file_create_url($image->uri), 
     ); 
     if (!empty($fade)) { 
      $background['fade'] = intval($fade); 
     } 
     $backgrounds[] = $background; 
     } 
    } 
    } 

Я печатаю его в файле .module. Это дает ожидаемый результат.

print_r($backgrounds); 

Если я печатаю его на странице page.tpl.php моей темы, он не возвращает никаких значений. Есть ли способ загрузить переменную модуля

ответ

1

Если вы хотите распечатать эту varibale в page.tpl.php - использование hook_preprocess_page

Функция custom_preprocess_page (& $ переменных), а не узел.

+0

Почему я должен размещать эту функцию внутри template.php –

+0

Если какой-либо разработчик изменит ваши файлы шаблонов - он увидит все изменения переменных шаблона в одном файле, и он не будет искать эти изменения в модулях. – DrHolera

+0

Спасибо, DrHolera –

0

Для добавления переменных в шаблон страницы или hook_preprocess_node вам нужно использовать страницу hook_preprocess_page, чтобы добавить шаблон переменной в узел.

https://api.drupal.org/api/drupal/modules!node!node.module/function/template_preprocess_node/7

function MYMODULE_preprocess_node(&$variables) { //can be MYTHEME_preprocess_node and locate in template.php 
    // Load all the images to be added to Vegas. 
    $backgrounds = array(); 
    $fade = variable_get('vegas_fade', 0); 
    for ($i = 0; $i < 10; $i++) { 
    $fid = variable_get('vegas_images_' . $i, ''); 
    if (!empty($fid)) { 
     $image = file_load($fid); 
     if ($image) { 
     $background = array(
      'src' => file_create_url($image->uri), 
     ); 
     if (!empty($fade)) { 
      $background['fade'] = intval($fade); 
     } 
     $variables['backgrounds'][] = $background; 
     } 
    } 
    } 

Попробуйте этот код и в yoot node.tpl.php будет имеющийся $ фоны массив.

Я думаю, что лучше поместить этот код в template.php в свою тему. Проще всего будет видеть, как переменные узлов узла

0

Мое название темы является обычным явлением. Вот что я вставил в файл template.php

function custom_preprocess_node(&$variables) { //can be MYTHEME_preprocess_node and locate in template.php 
    // Load all the images to be added to Vegas. 
    $backgrounds = array(); 
    $fade = variable_get('vegas_fade', 0); 
    for ($i = 0; $i < 10; $i++) { 
    $fid = variable_get('vegas_images_' . $i, ''); 
    if (!empty($fid)) { 
     $image = file_load($fid); 
     if ($image) { 
     $background = array(
      'src' => file_create_url($image->uri), 
     ); 
     if (!empty($fade)) { 
      $background['fade'] = intval($fade); 
     } 
     $variables['backgrounds'][] = $background; 
     } 
    } 
    } 
} 

и распечатать его page.tpl.php файл

print_r($backgrounds);