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 = block和delta = 1。因此,钩子是mytheme_block_view_block_1_alter()
.
注:
MODULE - 定义块的模块的名称。
DELTA - 该模块中块的唯一标识符,如 hook_block_info() 中所定义。
对于查询,请使用评论。
我在管理页面中创建了包含 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 = block和delta = 1。因此,钩子是mytheme_block_view_block_1_alter()
.
注:
MODULE - 定义块的模块的名称。
DELTA - 该模块中块的唯一标识符,如 hook_block_info() 中所定义。
对于查询,请使用评论。