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

Drupal 7. How I change content in custom block via template.php?

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

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

例如:

如果您创建了 ID 为

的区块

block-block-1

那么模板名称应该是

block--block--1.tpl.php

主要步骤:

  • 确定您的区块 ID
  • 转到您的主题文件夹并找到包含模板文件的文件夹
  • 将 block.tpl.php 复制到主题的模板文件夹中,并根据块的 ID 将其重命名为名称(在本例中为块--块--1.tpl.php)
  • 刷新所有缓存

注意: 当您编辑自定义块时,您可以在 URL 中看到带有块增量的路径。它将类似于

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

为此URL,你应该使用block--block--5.tpl.php。在这种情况下,数字 5 是块的增量。您还可以查看您的块所在页面的来源(或使用 Firebug 检查)并查找提供给该块的 ID。

您可以使用 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.');
  }
}

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

注:

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

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

对于查询,请使用评论。