Answers:
尝试使用内容访问模块,并防止video
单独访问内容(或者您也可以根据需要设置对它的访问roles
)
该模块允许您按角色和作者管理内容类型的权限。它允许您指定每种内容类型的自定义视图,编辑和删除权限。(可选)您可以启用每个内容访问设置,以便可以自定义每个内容节点的访问。
您也可以使用“ 节点视图权限”模块,但我建议使用Content access module
。
(如果您想与drupal一起工作,以便将来更好使用这个有用的模块)
我认为Rabbit Hole模块完全可以满足您的需求。这是模块描述页面的摘录,回答您的需求。祝好运。
Rabbit Hole是一个模块,它增加了控制在其自己的页面上查看实体时应该发生的情况的功能。
也许您有一种内容类型,它永远不应显示在其自己的页面上,例如轮播中显示的图像内容类型。Rabbit Hole可以阻止通过node / xxx在其自己的页面上访问此节点。
1)在您的内容类型中创建一个布尔值字段。
2)如果value选择为true,则应将唯一的类添加到该视频字段;如果value选择为false,则不应将类添加到该视频字段。
3)编写一些CSS,以隐藏不存在该类的视频。
使用“ 规则”模块,您可以实现类似于以下内容的规则:
{ "rules_disallow_accesss_to_selected_urls" : {
"LABEL" : "Disallow access to selected URLs",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"ON" : { "init" : [] },
"IF" : [
{ "text_matches" : {
"text" : [ "site:current-page:url" ],
"match" : "content\/video-1",
"operation" : "regex"
}
}
],
"DO" : [
{ "drupal_message" : {
"message" : "Sorry, access to URLs like [site:current-page:url] is not allowed ...",
"type" : "error"
}
},
{ "redirect" : { "url" : "no_access" } }
]
}
}
尝试访问相对路径的任何人都content/video-1
将被重定向到带有path的页面no_access
,并且将显示相关的错误消息(使该路径适应您自己的约定,并查看要显示的消息)。
上面的规则仅限制访问相对路径content/video-1
(如您的问题)。如果您想将规则扩展到相似的URL,请更改 content\/video-1
为content\/video-\\d+$
或类似符合路径命名约定的变体。
上面的规则(尚未)尚未考虑仅将规则操作应用于仅具有选定角色的用户。但是,对于任何熟悉“规则”模块的人来说,这就是添加的直接“条件” ...例如:跳过具有编辑者,管理员等角色的用户的“规则”操作。您可以通过添加“规则”来完成类似“用户没有角色管理员(和/或编辑者)”的条件。这样,那些特殊用户仍然可以查看此类节点(没有此类额外条件,他们也将无法查看此类节点...)。
要在您自己的站点中试用此规则,只需复制上面的整个“规则”代码,然后将其粘贴到您自己的站点中的新规则中即可,该规则是通过“导入”功能创建的(如果启用了规则UI,则可用)。然后进一步编辑/优化以使其适合您自己的环境(例如,显示“ Sorry,...”消息)。
在其他答案之一中,您添加了包含以下内容的评论:
...在某些情况下,我想重定向到主页,在其他情况下,则想重定向到404,因此我可以更好地控制...
如果那也是您想要做的,那么您还可以通过添加条件规则模块来进一步完善上述规则操作。这样,您就可以针对每种“某些情况”指定要重定向到的适当URL。请参阅我对“ 如何根据列表框的值设置某些字段的值? ”的答案,以获取有关如何在“规则操作”中使用此模块的说明。