要求匿名用户注册以添加内容类型

时间:2010-03-22 18:41:14

标签: drupal drupal-6

如何创建一个需要匿名观看者注册才能查看的表单?

现在,我已经创建了一个内容类型(提交计划),这是每个人都可以使用的主要链接(匿名+经过身份验证)。我已将“查看”用户权限限制为匿名用户,但他们仍然可以看到“标题”输入(我不希望这样)。

我希望这样,当匿名用户点击“添加计划”主链接(提交计划内容类型)时,它会转到页面并说:

  • “您必须注册帐户”
  • 将他们重定向到注册页面,要求他们注册以提交计划。

我一直在寻找一个模块或者可能会使用一些代码但是在这个主题上已经找不到了。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

这可以通过几种方式完成。

一,在您的菜单输出中,您可以更改提交计划的链接,如下所示:

<?php
  global $user;

  if ($user->uid == 0) {
     print '<a href="/user/register">Add a Plan</a>';
  } else {
     print '<a href="/node/add/submit-plan">Add a Plan</a>'l;
  }
?>

上面的代码查看用户对象是否具有UID。 0是匿名的,因此将打印发送它们进行注册的链接。否则,它将把它们带到提交计划内容类型的节点添加表单。这也假设您控制自己的菜单输出。您也可以使用主题函数以类似的方式覆盖它。

有几种方法可以做到这一点,所以从那里开始让我知道你的想法。

答案 1 :(得分:1)

如果您要将用户重定向到注册页面,我会强烈考虑使用logintoboggan之类的内容进行注册&gt;节点创建过程流畅。否则,注册是一个多步骤的过程,我想在这个过程中用户很容易回到“添加计划”表单。

对于“显示链接或显示表单”方向,至少有两种方法可以解决这个问题:1)创建一个自定义页面,您可以在其中“导入”add_plan表单(或显示链接)。 2)通过主题或fapi(表单api)修改节点/添加/计划页面本身。

如果没有尝试过,我可能会倾向于方法一。

更新:还有另外一个想法:您还可以将计划表单添加到注册表单中,以便他们一次性填写它们。我不确定如何一般地做到这一点,但是node profile如果他们只打算制定一个计划就可以工作,如果没有,你可以看看它是如何组合在一起的。