2012-10-20 48 views
10

Tôi tạo ra một chủ đề mới drupal 7 và cố gắng thực hiện hook_theme tại template.php như thế này:Làm thế nào để thực hiện hook_theme trong drupal 7?

function mytheme_theme($existing, $type, $theme, $path){ 
    return array(
     'mytheme_header'=>array(
      'template'=>'header', 
      'path'=>$path.'/templates', 
      'type'=>'theme', 
     ), 
    ); 
} 

sau đó tôi đặt header.tpl.php vào các mẫu thư mục và xóa tất cả bộ nhớ đệm, và gọi hàm chủ đề:

theme('mytheme_header', $vars); 

và header.tpl.php thích này:

<?php 
fb('calling header template');//the function of FirePHP to output debug info 
print '<div>Header</div>'; 
//... 

tôi kiểm tra Firebug và nó nhận được thông tin 'gọi tiêu đề mẫu', có nghĩa là nó đã được gọi là header.tpl.php, nhưng nó không in mã html. Có gì sai với mã của tôi?

Trả lời

16

Cố gắng thêm mảng variables trong hook_theme

function mytheme_theme($existing, $type, $theme, $path){ 
    return array(
     'mytheme_header' => array(
      'template' => 'header', 
      'path' => $path . '/templates', 
      'type' => 'theme', 
      'variables' => array(
       'title' => NULL, 
       'some_text' => NULL, 
      ), 
     ), 
    ); 
} 

Trong file header.tpl.php của bạn:

<h1><?php print $title; ?></h1> 
<p><?php print $some_text; ?></p> 

Sau đó, hãy in nó ra như thế này:

$vars = array(); 
$vars['title'] = "This is a title"; 
$vars['some_text'] = "Some text..."; 
print theme('mytheme_header', $vars); 
+1

'arguments' được đổi tên để 'biến' trong Drupal 7 – Clive

+0

Cảm ơn. Tôi đã sửa nó. :) –

+0

Nó không phải là vấn đề của các biến. Tôi gỡ lỗi với FirePHP và tôi thấy rằng nó đã được gọi là header.tpl.php nhưng nó đã không in bất kỳ mã html. –

Các vấn đề liên quan