私はカスタムブロックを作成しました。関連モジュールのtplに関連付けたいと思います。drupal 7 - カスタムブロックを作成してそれにtplを割り当てます
現在、私はテーマフォルダにあるtplファイルのみを関連付けることができます。
私はそれがモジュールのtplであることを望み、hook_menuを使用してそれにいくつかのデータを渡します。私の知る限り、テーマフォルダにはtplがありません。
これは可能ですか?
これができない場合は、テーマとしてコンテナとしてtplを使用し、その内容を渡すためにhook_menuを使用したいと思いますが、モジュールで作成するtpl /テーマを返す方法はわかりません。
誰かが私を助けることができますか?
私は以下の例はあなたfunction MYMODULEBLOCK_block_info() {
$blocks['MYMODULE_BLOCK_NAME'] = array(
'info' => t('MYMODULE BLOCK TITLE'),
'cache' => DRUPAL_NO_CACHE, //there are a number of caching options for this
);
return $blocks;
}
function MYMODULEBLOCK_block_view($delta = ''){
switch($delta){
case 'MYMODULE_BLOCK_NAME':
if(user_access('access content')){ //good idea to check user perms here
$block['subject'] = t('MYBLOCK_TITLE');
$block['content'] = MYMODULE_BLOCK_FUNCTION_ITEMS();
return $block;
}
break;
}
}
function MYMODULE_BLOCK_FUNCTION_ITEMS(){
$items = array();
$items['VAR_ONE'] = array('#markup' => 'VAR_ONE_OUTPUT'); //this is the simplest kind of render array
$items['VAR_TWO'] = array(
'#prefix' => '<div>',
'#markup' => 'VAR_TWO_OUTPUT',
'#suffix' => '</div>',
);
// this is where the $items get sent to your default MYMODULE_BLOCK.tpl.php that gets
// registered below
return theme('MYMODULE_BLOCK_FUNCTION_ITEMS', array('items' => $items));
}
//here you are registering your default tpl for the above block
function MYMODULE_theme() {
$module_path = drupal_get_path('module', 'MYMODULE');
$base = array(
'path' => "$module_path/theme",
);
return array(
'MYMODULE_BLOCK_FUNCTION_ITEMS' => $base + array(
'template' => 'MYMODULE_BLOCK', //leave off .tpl.php
'variables' => array('items' => NULL,),
),
);
}
(DRUPAL_NO_CACHE除く)大文字のすべてのものは、あなたが
を好きな名前が付けられ、その後、テーマ/そこにすべきと呼ばれる自分のモジュール内のサブフォルダにすることができ役に立てば幸い