นี่เป็นโพสต์เก่า แต่ฉันได้พบทางออกที่ดีกว่าสำหรับการแทนที่เทมเพลตบล็อกจากโมดูลที่กำหนดเองสำหรับ Drupal 7
เพิ่มไปยังโมดูลที่กำหนดเองของคุณ:
/**
* Implements hook_theme().
*/
function MYMODULE_theme($existing, $type, $theme, $path) {
// Custom template for that overrides the default block.tpl.php.
$themes['block__my_custom_module'] = [
'template' => 'block--my_custom_module',
'original hook' => 'block',
'path' => drupal_get_path('module', 'my_custom_module') . '/templates',
];
return $themes;
}
จากนั้นคุณต้องใช้รหัสติดตาม:
/**
* Implements hook_block_info().
*/
function MYMODULE_block_info() {
$blocks = [];
$blocks['my_custom_module'] = [
'info' => t('My Custom Module Block'),
'cache' => DRUPAL_CACHE_PER_ROLE,
];
return $blocks;
}
/**
* Implements hook_block_view().
*/
function MYMODULE_block_view($delta = '') {
$block = [];
switch ($delta) {
case 'my_custom_module':
$block['content'] = _my_custom_module_helper_function();
break;
}
return $block;
}
/**
* Helper function to generate HTML.
*
* @return string
* generated HTML
*/
function _my_custom_module_helper_function() {
$output = '';
// ...
return $output;
}
สิ่งที่คุณต้องทำคือสร้างtemplates/block--my-custom-module.tpl.php
ในโฟลเดอร์โมดูลของคุณ
ฉันเขียนบทช่วยสอนเกี่ยวกับDrupal Tutorialนี้- วิธีการแทนที่เทมเพลต Block จากโมดูลที่กำหนดเอง