Drupal 7.如何通过template.php更改自定义块中的内容?

时间:2016-04-28 20:27:10

标签: drupal drupal-7 drupal-blocks

我在管理页面中使用HTML内容创建了简单的块,现在我需要通过template.php修改此内容。需要什么?

2 个答案:

答案 0 :(得分:0)

您应该根据您的块ID命名您的.tpl文件。

例如:

如果您使用ID

创建了阻止

block-block-1

然后模板名称应为

block--block--1.tpl.php

主要步骤:

  • 识别您的区块ID
  • 转到主题文件夹,找到包含模板文件的文件夹
  • 将block.tpl.php复制到主题的模板文件夹中,并根据块的ID将其重命名为name(块 - 块 - 在这种情况下为1.tpl.php)
  • 刷新所有缓存

注意: 在编辑自定义块时,您可以在URL中看到具有块的delta的路径。它会像

/admin/structure/block/manage/block/5/configure

对于此URL,您应该使用block - block - 5.tpl.php。在这种情况下,数字5是块的delta。您还可以查看块出现的页面的来源(或使用Firebug进行检查)并查找给予块的ID。

答案 1 :(得分:0)

您可以使用hook_block_view_MODULE_DELTA_alter()更改template.php内的块内容。这样,您可以添加逻辑来决定内容。

/**
 * Implements hook_block_view_MODULE_DELTA_alter().
 *
 * It is better to get the module and delta for block using dpm($block) by
 * implementing hook_block_view_alter() before.
 */
function mytheme_block_view_block_1_alter(&$data, $block) {
  if (some_criteria_met_on_which_you_wanted_to_change_content) {
    $data['content'] = t('This is how I altered the content of the block-1 inside template.php.');
  }
}

enter image description here

在上图中,您可以看到 module = block delta = 1 。因此,钩子是mytheme_block_view_block_1_alter()

注意:

  • MODULE - 定义块的模块的名称。

  • DELTA - 该模块中块的唯一标识符,如hook_block_info()中所定义。

查询,使用评论。