2012-01-05 177 views
3

我想在Drupal中添加自定义字段到块?我有一个横跨页面整个宽度的标题区域。下面是各个区块的正文内容左侧栏和右侧栏。标题区域需要有一个背景图像,并在其上面显示文本。希望通过自定义字段的块为背景图像和文本做到这一点。如何在Drupal 7中添加自定义字段到块?

+0

当你创建一个块,你可以选择你想要的字段。你是否在引用如何以自定义的方式呈现这些字段? 否则,Drupal已经让你做到了。 – Deleteman 2012-01-05 16:48:03

+0

@Deleteman:你可能在想的内容类型,块不能重视他们 – Clive 2012-01-05 17:31:03

+0

接下来的时间字段,请考虑在drupal.stackexchange.com发布Drupal的问题。 – gogowitsch 2013-06-30 09:42:30

回答

1

您可以使用Views模块,Fields和blocks来实现这一点。

  1. 创建一个名为背景图像的上传图片领域,你想显示
  2. 使用视图创建一个显示为模块的图任何其他领域的内容类型。不过,您可以将字段设置为重写。
  3. 使用您的视图设置,将您的背景图像显示为路径而不是图像。

例如,你可以建立这样的使用现场更换的观点:

<div style="background: [field_image] left top no-repeat"> 
<h2>[title]</h2> 
<p>[field_whatever]</p> 
</div> 

好像有点大材小用,但它会得到它在客户手中。您还需要执行一些限制,以便仅使用特定的节点ID,以便它们不会创建一百万个背景图像节点并破坏网站。希望这可以帮助。

0

您只能将字段附加到实体,因为块不是实体我恐怕不能解决您的字段问题。

最好的办法是将块的内容设置为要显示的文本,然后使用CSS来定位包含div并将背景图像放在上面。

另外,只需将块内容的过滤器更改为“完整HTML”,然后将样式内联编写,例如。

<div style="background:url(some/path)">Block content here</div> 
+0

是的,我可以把HTML这样的,但我需要这个可编辑的人不知道HTML。 – Dustin 2012-01-05 18:05:26

+0

你可能必须写一个自定义模块,我不知道这样做的任何现有模块(这并不是说没有人会想到) – Clive 2012-01-05 18:29:36

0

您可以尝试使用Node Blocks来定义将自动创建块的内容类型。然后,用一点CSS就可以做你想做的事情。

4

更好的方法是使用hook_block_info()hook_pages_block_view()在代码中创建自定义块。然后通过hook_block_configure()添加附加字段。

使用form api,你可以添加任何你想要的字段。

+0

是的,但添加表单元素仅仅是部分工作。您还需要处理输入的数据在hook_block_save的存储,这是比较容易的,如果你写一个字符串变量表,但是当你在处理图像变得更加复杂。 – marcvangend 2013-06-20 12:33:23

1

我这样做的方式(我知道其他几个人也是这么做的)就是制作一个内容类型的“块内容”。在那里你可以创建任意数量的字段。

然后,您在node-type中创建一个node-reference - 字段,您将在其中显示块(mynodetype)的位置。

然后,您制作一个views - 块:即“自定义块”,您可以在其中指定关系 - 上下文。大多这个上下文将是这样的:其通过参考场中的“mynodetype”引用:(嵌段含量NODETYPE)的节点的显示领域。

我发现这是一个非常干净的解决方案和它的作品好,因为你只有一个街区,其显示在需要的时候,一个内容仍处于节点和不污染块管理页面。

相关问题