在视图中显示节点,但禁用节点页面
我正在使用新的内容类型和视图模块创建一个“推荐”块。问题是 Drupal 为每个推荐创建一个单独的页面,用户如果知道其 ID(或在 SERP 中找到该页面)就可以访问该页面。
是否可以禁用该特定内容类型的节点页面,但在视图块中列出节点?标准的“404”Drupal 页面将是理想的选择。
谢谢!
I'm creating a "Testimonials" block with a new content type and Views module. The problem is that Drupal creates a separate page for each testimonial and users could access the page should they know its ID (or find the page in SERP).
Is it possible to disable node pages for that specific content type, but list the nodes in a Views block? The standard "404" Drupal page would be ideal.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个棘手的问题,因为您将无法使用 hook_node_access() (视图模式永远不会通过,因此您无法确定预告片页面和完整页面)。一种快速的肮脏方法是 hook_node_view():
可能有更好的模式“Drupal”方法可以做到这一点,但在紧要关头就可以了。
Tricky one because you're not going to be able to use hook_node_access() (the view mode is never passed through so you can't determine between teaser and full pages). A quick dirty way to do it would be in hook_node_view():
There are probably better mode 'Drupal' ways to do it but that will do in a pinch.
Drupal 7可能非常相似...
这个答案适用于Drupal 6.x,但是 > and 面板用于Drupal的模块可以实现这一目标。使用混乱工具子模块“页面管理器”,您可以启用“管理页面...”下的“ Node_view”页面(站点构建 - >页面)。
一旦启用了“ node_view”页面,您将使用“选择规则”添加一个“变体”(例如标题:“非Admin用户”),然后将标准设置为“节点类型”,然后将其限制为您的内容类型(例如推荐)。
之后,“用户角色”将需要另外一个“选择规则”。因此,选择匿名和身份验证的用户角色。
接下来,继续进行设置,然后选择“单列”布局,然后在选择面板的内容时单击“中间列”中的“齿轮”图标。然后,您可以指定现有节点(例如您的404节点页面)。
接下来,我建议您在您的“ Node_view”页面上设置另一个“ variant”(例如标题'admin user'),其中设置为“选择规则”标准,并将用户标准设置为管理员角色或用户ID#1。然后,您可以将404节点作为内容添加到面板页面,而可以将“当前节点”添加到面板内容中。这样,Admins仍然可以看到节点页面,并且普通用户将被直接访问您的404页。
This answer is for Drupal 6.x, but it is probably quite similar for Drupal 7...
The Chaos Tools and Panels modules for Drupal can accomplish this. With the Chaos Tools sub module, 'Page Manager', you can enable the 'node_view' page under 'Manage pages...' (Site building -> Pages).
Once the 'node_view' page is enabled, you will add a 'Variant' (e.g. Title: 'Non-Admin User') with 'Selection Rules' and set the criteria to 'Node Type', then limit it to your content type (e.g. Testimonial).
After that, one more 'Selection Rule' will be needed for 'User Role'. With that, choose both the anonymous and authenticated user roles.
Next, continue through the setup and choose a 'Single column' layout, then click the 'gear' icon in the 'Middle column' when choosing your panel's content. You can then specify an existing node (e.g. your 404 node page).
Next, I would recommend setting up another 'Variant' (e.g. Title 'Admin User') on your 'node_view' page with 'Selection Rules' criteria set to your content type and set the user criteria to your administrator role(s) or user id #1. Then instead of adding the 404 node as the content to your panel page, you can add the 'current node being viewed' to the panel content. This way admins can still see the node pages and normal users will be directed to your 404 page.