2017-09-06 18 views
0

カスタムモジュールからtplファイルに変数を渡そうとしました。 私のカスタムモジュール(名前の例)Drupal 7 - hook_themeから変数を取得

1で私はhook_menu経由で引数を指定してルートを作成しました:

function example_menu() { 
    $items['example/fancybox-photos/%'] = array(
     'page callback' => 'example_display_fancybox_photos', 
     'page arguments' => array(2), 
     'type' => MENU_CALLBACK, 
     'access arguments' => array('access content'), 
    ); 
    return $items; 
    } 

2.私は私のページのコールバック関数を作成しました:

function example_display_fancybox_photos($nid) { 
    $nodePhoto = node_load($nid); 
    $field_photo = field_get_items('node', $nodePhoto, 'field_photo'); 

    $photo = [ 
    "field_photo" => $field_photo[0]['uri'], 
    .... 
    ]; 

    return theme('example_fancybox_photos', array('infosPhoto' => $photos)); 
} 

3。私はhook_theme

function example_theme() { 
    $themes = array(); 

    $themes['example_fancybox_photos'] = array(
    'template' => 'templates/example-fancybox-photos', 
    'variables' => array('infosPhoto' => NULL), 
); 

    return $themes; 
} 

4を作成しました。私は最終的に結果は、私はいくつか・研究をした

NULLですが、私はなぜ理解しない

<pre><?php print var_dump($infosPhoto); ?></pre> 

(テーマフォルダ内)のテンプレートフォルダに「例-fancybox-photos.tpl.php」という名前のTPLを作成しました変数はまだNULLです。

ご協力いただきありがとうございます。

答えて

0

$photosを渡しましたが、配列は$photoです。その変更を試みてください

下記のコードが役立つことを願っています。

function example_menu(){ 
    $items['example/fancybox-photos/%'] = array(
     'page callback' => 'example_display_fancybox_photos', 
     'page arguments' => array(2), 
     'type' => MENU_CALLBACK, 
     'access arguments' => array('access content'), 
    ); 
    return $items; 
} 

function example_display_fancybox_photos($nid){ 
    $photos = 'value from example module!'; 
    return theme('example_fancybox_photos',array('photos' => $photos)); 
} 

function example_theme() { 
    $path = drupal_get_path('module', 'example'); 
    return array(
     'example_fancybox_photos' => array(
      'variables' => array('photos' => null), 
      'template' => 'example_fancybox_photos', 
      'path' => $path, 
     ), 
    ); 
} 

あなたのモジュールディレクトリに、それは以下のコードを使用して内部であなたのTPLファイルexample_fancybox_photos.tpl.phpを置きます。私はついにから変数を取得するために管理

<?php print $photos; ?> 
0

<?php print $photos; ?> 

または

function example_theme() { 
    return array(
     'example_fancybox_photos' => array(
      'variables' => array('photos' => null), 
      'template' => 'example_fancybox_photos', 
     ), 
    ); 
} 

置きあなたのテーマディレクトリ内とその内部のあなたのTPLファイルexample_fancybox_photos.tpl.phpは、以下のコードを配置しますtplへのモジュール!

1.私はhook_menuを経由して、引数のルートを作成しました:

function example_menu() { 
    $items['example/fancybox-photos/%'] = array(
     'page callback' => 'example_display_fancybox_photos', 
     'page arguments' => array(2), 
     'type' => MENU_CALLBACK, 
     'access arguments' => array('access content'), 
    ); 
    return $items; 
    } 

2.私は私のページのコールバック関数を作成しました:

function example_display_fancybox_photos($nid) { 
    $nodePhoto = node_load($nid); 
    $field_photo = field_get_items('node', $nodePhoto, 'field_photo'); 

    $photos = [ 
    "field_photo" => $field_photo[0]['uri'], 
    .... 
    ]; 

    return theme('example_fancybox_photos', array('infosPhoto' => $photos)); 
} 

3。私はhook_theme

function example_theme() { 
    $themes = array(); 

    $themes['example_fancybox_photos'] = array(
    'template' => 'templates/example_fancybox_photos', 
    'variables' => array('infosPhoto' => NULL), 
); 

    return $themes; 
} 

4を作成しました。私は最終的に "example_fancybox_photos.tpl"という名前のtplを作成しました。テンプレートフォルダ内のphp」(MODULE(例)フォルダ内)

問題があることだった: - TPLは、同じようにし、代わりにアンダースコア のダッシュと命名されていなかった - TPLは、のテンプレートフォルダにありましたテーマではなく、モジュールではない

関連する問題