在节点内放置块(在节点内容中的特定元素之间定位块)

Placing block inside a node (positioning block between specific elements in node's content)

基本上我创建了一个网络表单并将其作为一个块启用,现在我想将该块放入特定节点中。我可以通过将它放在 'content' 区域并定义特定节点来实现,但它显示在内容的末尾。现在如何在内容的特定元素之间移动它

该节点正在使用页面类型....tpl.php 其他 5 个节点也在使用该页面类型,因此我无法更改代码。

可视化它看起来像:

[内容]

-描述文字-

-视频列表-

[内容结束]

我需要将网络表单放在文本和视频列表之间。有办法吗?

对于 Drupal 7,在 content 中显示块内容的一种有点老套的方法是启用 PHP 过滤器模块。然后编辑您的节点并切换到 PHP 代码文本格式并添加此代码

 <?php
     $block = module_invoke('block', 'block_view', '1');
     print render($block['content']);
 ?>

其中“1”是编辑块时在 URL 中找到的块 ID,并确保包含 PHP 标签。

另请参阅此页面 https://www.drupal.org/node/26502 以了解有关放置方块的更多信息。

您可以走很多路,但既然您说您正在考虑模板文件:为什么不使用特定于节点的模板,因为 page 是一种节点类型?

假设您在 node/123,那么您可以使用名为 node--123.tpl.php 的模板(参见 Drupal 7 Template (Theme Hook) Suggestions)并将您的块嵌入其中。

或者,您可以通过 hook_token_info and combine it with the commonly used token_filter 模块在自定义模块中提供可重复使用的令牌。但是,如果您只需要触摸一个节点,那可能就有点过了。

您可以使用EVA模块将网络表单添加到节点中作为字段。

你基本上创建了一个视图并选择了 "eva field" 选项,然后你确保这个视图只选择你想要的网络表单并将它与节点相关联(EVA 模块文档有比我可以提供)。

将其添加为字段后,您可以将其放置在节点中的任何位置。

还有 Block reference 模块可以帮助您。