2

私はモジュールを開発しており、ページごとにテーマ ディレクトリから異なる .tpl.php レイアウトを呼び出す必要があります。現在持っているものは次のとおりです。

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

それが、ページ コールバック関数の 1 つで返されるものです。これで問題なく完全に動作しますが、モジュール内の別のページ コールバック関数で別のテーマ フックを使用して同じことを試みましたが、テーマ フックで指定されたレイアウトを呼び出しません。

 $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;

ページは完全に空白ではなく、ヘッダーを含むすべてのページで使用されるメインの page.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;

}

どんな助けでも大歓迎です!

4

1 に答える 1

2

argumentsvariablesDrupal 7 では に変更され、variablesまたはrender elementが必要なため、レジストリはテーマを取得しません。

実装に 2 つの変更を加えhook_theme()、キャッシュをクリアすれば、準備完了です。

于 2013-01-06T16:50:50.480 に答える