【发布时间】:2014-08-20 16:20:50
【问题描述】:
如何在 Drupal 7 中修改 $content 数据?
我要更改/修改模块的块内容:博客
我在我的 template.php 文件中尝试过:
function blog_block_view($delta = '') {
return "Test, yes i am here";
}
但是什么都没发生……
【问题讨论】:
标签: drupal drupal-7 drupal-blocks
如何在 Drupal 7 中修改 $content 数据?
我要更改/修改模块的块内容:博客
我在我的 template.php 文件中尝试过:
function blog_block_view($delta = '') {
return "Test, yes i am here";
}
但是什么都没发生……
【问题讨论】:
标签: drupal drupal-7 drupal-blocks
要更改现有块的 $content,您需要 create a custom module,并使用 hook_block_view_alter() 实现。
Drupal.org 示例:
function hook_block_view_alter(&$data, $block) {
// Remove the contextual links on all blocks that provide them.
if (is_array($data['content']) && isset($data['content']['#contextual_links'])) {
unset($data['content']['#contextual_links']);
}
// Add a theme wrapper function defined by the current module to all blocks
// provided by the "somemodule" module.
if (is_array($data['content']) && $block->module == 'somemodule') {
$data['content']['#theme_wrappers'][] = 'mymodule_special_block';
}
}
【讨论】:
这是正确的格式。
确保检查 delta 是否正确,否则您可能会更改比预期更多的块。
/**
* Implements hook_block_view().
*/
function mycustom_module_block_view($delta = '') {
if ($delta == "mydelta"){
$block['subject'] = 'The Greatest Block Ever Created';
$block['content'] = array(
'#markup' => "<h1>Here's some content</h1>",
);
}
return $block;
}
【讨论】:
按照以下示例,您可以在 .module 文件中进行修改。
function hook_block_view($delta = '') {
// All of these are functionally identical.
$block['subject'] = '';
$block['subject'] = NULL; // Or just don't set.
$block['title'] = '<none>'; // Undocumented, but works.
// This will not behave as desired.
$block['subject'] = '<none>';
$block['content'] = array(
'#theme' => 'feed_icon',
'#url' => 'rss.xml',
'#title' => t('Syndicate'),
);
return $block;
}
【讨论】: