我可能会要求很多,但任何帮助都会很棒!我想要做的就是每当Drupal中的用户(而不是管理员)创建像博客这样的内容时,某些地区的预定义块将允许用户添加新内容(广告/横幅)。这可能吗?
我已经看过Node-Level Block,但我不太清楚如何使用它?这会有用吗?怎么样?
这是我上面提到的一个例子。假设用户有权创建博客。他们将向博客添加内容,以及向预定义块添加新内容的选项,例如名为RightSideBarBlock的右侧栏块。每个块的此内容仅适用于从博客内容类型创建的新节点。如果他们没有向预定义块添加内容,则该块将不显示该节点。
这有意义吗?
答案 0 :(得分:1)
您的请求的显示部分相当容易。您不必为每个博客条目创建新块,您可以使用视图模块显示每个条目的相关广告。
开始之前,请确保已安装views module和entity reference模块。
首先,您需要一种新的内容类型,称之为博客广告。它将需要一个名为Owner的字段,该字段将是指向父博客条目的实体引用字段。
接下来,创建一个新视图并确保选择创建块变体并将要显示的条目数设置为1.将过滤条件设置为Content Type = Blog Ad。向视图添加上下文过滤器。从选项列表中选择内容:所有者(这将允许您通过拥有节点ID过滤博客广告条目)。由于块视图不能直接获取参数,因此您必须选择提供默认值的选项。从选项列表中选择URL中的Content ID。保存您的视图并转到Blocks页面。
现在,您将在Blocks页面中看到一个名为View的块:<视图名称>。将该块添加到适当的区域,并在设置下,将其过滤为仅在内容类型为博客时显示。
现在,您可以创建博客条目,保存,创建博客广告条目,在“所有者”字段中选择刚刚创建的博客条目,然后查看博客条目。您将在该区块中看到自己的博客广告。创建一个新的博客条目,当您查看它时,您将不会在博客广告块中看到任何内容。
允许从博客创建页面创建相关博客广告可以使用Node Reference Create或Inline Entity Form等模块完成。我没有亲自使用这些模块,所以我不能保证它们的质量或易用性,但它们会做你想要的。