开发者

Drupal theme() function and custom template

开发者 https://www.devze.com 2023-01-22 21:30 出处:网络
I have a custom module that returns data from a web service call. It comes back from an XML response, which I am converting to an array.

I have a custom module that returns data from a web service call. It comes back from an XML response, which I am converting to an array.

Once I have the array, I do:

$output = theme('search_srs_results', $data);
return $output;

But I am getting a white screen. No apache/php/watchdog errors.

I've done this before in another module without any difficulty. My theme hook is defined, and points to a template file, passing the $data argument. If I dump $output before it's returned, its NULL.

$data definitely has a populated array before being themed.

If I do theme('item_list', $data);, it renders, no white screen.

I tried reading the docs again on hook_theme and theme() but I don't seem to be doing anything wrong.

Here are the theme functions:

/**
 * Implementation of hook_theme()
 */

function srs_finder_theme() {
  return array(
    'search_srs_results' => array(
      'template' => 开发者_如何转开发'srs-finder-results',
      'arguments' => array('data' => null),
    ),
  );
}

/**
 * Implementation of hook_preprocess()
 */

function srs_finder_preprocess_search_srs_results(&$vars) {
  $data = $vars['data'];
}

Whats missing?


I don't understand why you need hook_preprocess() function at all. $data should automatically be available to srs-finder-results.tpl.php. Thats because you're passing this variable in the call theme('src_src_results', $data) and the fact that you have declared that there is 1 argument in hook_theme().

srs-finder-results.tpl.php file should reside in the src_finder module folder. You need to implement the code for that! (Alternatively as nikit has commented above, provide a theme_search_srs_results function. In that case you will need to remove the template array entry)

[Note: If other users of the module want to override this theme template they can always provide their own implementation of srs-finder-results.tpl.php in the theme folder of the theme that is active.]

0

精彩评论

暂无评论...
验证码 换一张
取 消