我希望能够将自定义字段添加到 Drupal 中的块?我有一个跨越页面整个宽度的标题区域。下面是正文内容的左栏和各种块的右侧栏。标题区域需要有一个背景图像,上面显示文本。希望通过带有背景图像和文本的自定义字段的块来做到这一点。
6 回答
更好的方法是使用hook_block_info()
and在您的代码中创建一个自定义块hook_pages_block_view()
。然后通过添加附加字段hook_block_configure()
。
使用表单 api,您可以添加您想要的任何类型的字段。
使用Bean 模块,这将允许您创建带有字段的自定义块类型,甚至是图像字段。它与块模块很好地集成。观看此视频进行演示 - http://www.youtube.com/watch?v=Eu1YNy-BNG8
您可以使用视图模块、字段和块来实现此目的。
- 创建一个名为背景图像的内容类型,其中包含图像上传字段和您要显示的任何其他字段
- 使用视图创建一个显示为块的视图。您可以根据需要设置要重写的字段。
- 使用您的视图设置,将背景图像显示为路径而不是图像。
例如,您可以使用视图中的字段替换来设置类似的内容:
<div style="background: [field_image] left top no-repeat">
<h2>[title]</h2>
<p>[field_whatever]</p>
</div>
这似乎有点矫枉过正,但它会掌握在客户手中。您还需要做一些限制以仅使用某个节点 ID 来保持它,这样他们就不会创建一百万个背景图像节点并破坏站点。希望这可以帮助。
我这样做的方式(我知道其他几个也这样做)是制作内容类型的“块内容”。在那里,您可以根据需要创建任意数量的字段。
然后你在你希望你的块(mynodetype)出现的节点类型处创建一个节点引用字段。
然后你制作一个视图 - 块:即你给出关系的“自定义块” - 上下文。大多数情况下,此上下文将类似于:显示节点的字段(节点类型:块内容),该字段由“mynodetype”中的引用字段引用。
我发现这是一个非常干净的解决方案并且效果很好,因为您只有一个在需要时显示的块,内容仍在节点中并且不会污染块管理页面。
您只能将字段附加到实体,因为块不是实体,恐怕您无法解决字段问题。
您最好的选择是将块的内容设置为您要显示的文本,并使用 CSS 定位包含的 div 并将背景图像放在上面。
或者,只需将块内容的过滤器更改为“完整 HTML”并内联编写您的样式,例如。
<div style="background:url(some/path)">Block content here</div>
您可以尝试使用节点块来定义将自动创建块的内容类型。然后,通过一点 CSS,您将能够做您想做的事情。