在drupal模块的主题文件中打印变量

时间:2015-10-08 10:29:58

标签: php drupal-7 drupal-modules drupal-theming

这是vegas.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中打印它,它不会返回任何值。有没有办法加载模块的变量

3 个答案:

答案 0 :(得分:1)

如果要在page.tpl.php中打印此varibale - 请使用hook_preprocess_page

函数custom_preprocess_page(&amp; $ variables),而不是节点。

答案 1 :(得分:0)

您需要使用hook_preprocess_page将变量添加到页面模板或hook_preprocess_node以将变量添加到节点模板。

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将是可用的$ backgrounds array。

我认为更准确地将此代码放在主题中的template.php中。最简单的方法是查看节点变量的变化情况

答案 2 :(得分: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);