2011-10-31 35 views
-1

我需要知道將變量從自定義模塊傳遞到其模板的最簡單方法
我創建了custom.module並將custom.tpl.php放入模塊文件夾如何將變量從自定義模塊傳遞給它的tpl

function custom_menu(){ 
    $items = array(); 

    $items['custom'] = array(
    'title' => t('custom!'), 
    'page callback' => 'custom_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK, 
); 

    return $items; 
} 

function custom_page() { 

    $setVar = 'this is custom module'; 
    return theme('custom', $setVar);  
} 

我添加了主題功能,但它不能正常工作,可以在任何一個建議我什麼是錯,此代碼

function theme_custom($arg) { 
    return $arg['output']; 
} 

function custom_theme() { 
    return array(
    'Bluemarine' => array(
     'variables' => 'output', 
     'template' => 'Bluemarine', 
    ), 
); 
} 

回答

2

這個工作對我來說:

function custom_menu(){ 
    $items = array(); 

    $items['custom'] = array(
    'title' => t('custom!'), 
    'page callback' => 'custom_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 

    return $items; 
} 

function custom_page() { 
    $result = db_query('SELECT * from node'); 
    return theme('custom', array('output' => $result)); 
} 

function custom_theme() { 
    return array(
    'custom' => array(
     'arguments' => array('output' => NULL), 
     'template' => 'custom', 
    ), 
); 
} 

function template_preprocess_custom(&$variables) { 

} 
0

首先,你申報你的主題,以及如何它與循規蹈矩hook_theme的幫助。在您可以輕鬆使用功能主題後。您也許需要使用hook_preprocess

+0

感謝您的回覆,我米使用blueMarine中的主題。你可以發佈關於我上面發佈的代碼的示例代碼嗎? PLZ幫助 –

+0

親愛的伊文我真的不明白你的答覆PLZ詳細說明,我怎麼可以傳遞變量到自定義主題謝謝 –

1

您正在調用錯誤的主題功能。它應該是function theme_Bluemarine而不是function theme_custom。您還需要將數組傳遞給hook_theme()的變量片段。看一個簡單的例子here

使用你的例子:

function custom_menu(){ 
    $items = array(); 

    $items['custom'] = array(
    'title' => t('custom!'), 
    'page callback' => 'custom_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 

    return $items; 
} 

function custom_page() { 
    $setVar = 'this is custom module'; 
    return theme('custom', array('output' => $setVar)); 
} 

function custom_theme() { 
    $path = drupal_get_path('module', 'custom'); 
    return array(
    'custom' => array(
     'variables' => array('output' => null), 
     'template' => 'custom', 
    ), 
); 
} 

現在custom.tpl.php只需要<?php print $output; ?>

相關問題