【问题标题】:Placing block inside a node (positioning block between specific elements in node's content)在节点内放置块(在节点内容中的特定元素之间定位块)
【发布时间】:2015-08-26 15:10:01
【问题描述】:

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

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

将其可视化如下:

[内容]

-描述文本-

-视频列表-

[内容结束]

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

【问题讨论】:

  • 最后我使用了一个节点--[nid].tpl.php 将内容分解为元素并将我的表单插入到特定位置。就我而言,这是最快、最简单的方法。

标签: drupal block drupal-nodes


【解决方案1】:

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

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

或者,您可以通过hook_token_info 在自定义模块中提供可重复使用的令牌,并将其与常用的token_filter 模块结合使用。但是,如果它只是您需要接触的一个节点,那可能是多余的。

【讨论】:

  • 谢谢!我正在考虑创建一个新的节点模板,但我想也许还有另一种方法。
【解决方案2】:

对于 Drupal 7 来说,在 content 中显示块的内容的一个小技巧是启用 PHP Filter 模块。然后编辑您的节点并切换到 PHP 代码文本格式并添加此代码

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

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

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

【讨论】:

  • 感谢您的回答,但不幸的是,虽然启用了 PHP 过滤器模块,但我放在节点中的 php 代码不起作用。说到drupal,我是个菜鸟,所以我想我会创建一个新节点tpl。
【解决方案3】:

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

您基本上创建一个视图并选择“eva 字段”选项,然后确保此视图仅选择您想要拥有的 web 表单并将其与节点相关联(EVA 模块文档的示例比我提供的要好得多) )。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    相关资源
    最近更新 更多