我希望能够在Drupal中向块添加自定义字段?我有一个横跨整个页面宽度的页眉区域。下面是正文内容的左列和各个块的右侧边栏。页眉区域需要有一个背景图像,上面显示文本。希望通过为背景图像和文本自定义字段的块来实现这一点。
更好的方法是使用hook_block_info()
和hook_pages_block_view()
在代码中创建自定义块。然后通过hook_block_configure()
添加附加字段。
使用表单api,您可以添加任何类型的字段。
使用Bean模块,这将允许您创建带有字段的自定义块类型,甚至是图像字段。它与blocks模块很好地集成在一起。观看此视频进行演示-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"中的引用字段引用的节点的字段(nodetype:block content)。
我发现这是一个非常干净的解决方案,效果很好,因为你只有一个块,它在需要时显示,内容仍然在节点中,不会污染块管理页面。
您只能将字段附加到实体,因为块不是实体,恐怕您无法解决字段的问题。
最好的办法是将块的内容设置为要显示的文本,并使用CSS将包含的div作为目标,并在其上放置背景图像。
或者,只需将块内容的过滤器更改为"Full HTML",并在线编写样式,例如
<div style="background:url(some/path)">Block content here</div>
您可以尝试使用节点块来定义将自动创建块的内容类型。然后,有了一点CSS,你就可以做你想做的事了。