Drupal 7将theme()返回到页面

时间:2013-01-06 12:48:16

标签: php drupal drupal-themes

我正在开发一个模块,我需要从每页的主题目录中调用不同的.tpl.php布局。所以我现在拥有的是:

 return theme('adverts_index', array('adverts' => $advertsThemeArray));    

这就是我在其中一个页面回调函数中返回的内容。现在这完全没有问题,但在模块中的另一个页面回调函数中,我尝试使用不同的主题钩子进行相同的操作,但它不会调用主题钩子指定的布局。

 $r = theme('adverts_view_advert', array(
      'advert' => array(
        'id' => $advert->aid,
        'seller' => $advertiser,
        'more_from_user' => array(),
        'year' => $advert->year,
        'condition' => $advert->condition,
        'region' => $advert->region,
        'city' => $advert->city,
        'content' => $advert->description,
        'bids' => $allBidsArray,
      ),
    )
  );
  return $r;

页面不完整空白,主页面.tpl.php用于包含标题的每个页面以及仍然不显示的页面。只是我试图调用其内容的模板没有显示。

这是我的hook_theme:

 function adverts_theme() {
  $theme = array();
  $theme['adverts_index'] = array(
      'template' => 'adverts-index',
      'variables' => array(
          'advert' => array(
            'title' => null,
            'formatted_price' => null,
            'image' => null,
            'permalink' => null,
            'formatted_date' => null,
            'description' => null,
          ),
        ),
    );

  $theme['adverts_view_advert'] = array(
      'template' => 'adverts-single',
      'variables' => array(
          'advert' => array(
                'id' => null,
                'seller' => null,
                'more_from_user' => null,
                'year' => null,
                'condition' => null,
                'region' => null,
                'city' => null,
                'content' => null,
                'bids' => null,
            ),
          ),
        );
  return $theme;

}

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:2)

在Drupal 7中,

arguments已更改为variables,并且由于需要variablesrender element,因此注册表将无法获取您的主题。

hook_theme()实施中进行两项更改,清除缓存,你应该好好去。