如何编程方式启用匿名用户的权限,以查看单个节点上的注释? -- 7 领域 和 comments 领域 drupal 相关 的问题

How can I programmatically enable permission for anonymous users to view comments on a single node?


1
vote

问题

中文

如何以编程方式启用匿名用户在单个节点上查看注释?注释是开放的,但默认情况下,匿名用户不允许查看注释。我希望它们在一个节点上。

英文原文

How can I programmatically enable permission for anonymous users to view comments on a single node? Comments are open, but by default anonymous users are not allowed to view comments. I would like them to on one single node.

     

回答列表

0
 
vote
vote
最佳答案
 

如果您想要做的只是允许匿名用户在单个节点上查看注释,您可以首先允许所有匿名用户查看评论,例如:

输入图像描述

然后,在您的主题中,将默认值> node.tpl.php node--###.tpl.php nid nid 您希望匿名用户查看评论,然后进行以下更改:

node.tpl.php 中,沿着文件末尾的这些行应该有一些东西:

  <?php print render($content['comments']); ?>   

这是显示实际注释的位置。由于这是将用于每个节点的模板,除了您想要特殊评论处理的每个节点,因此将其更改为:

  <?php if ($logged_in): ?>   <?php print render($content['comments']); ?> <?php endif; ?>   

当用户登录时,它才会产生显示评论的效果。并且,由于 node--###.tpl.php 没有这个新添加的 if 周围的打印在评论中,它将显示匿名和经过身份验证/登录用户的评论。

当然,你也可以修改 node.tpl.php ,如下所示:

  node--###.tpl.php0  

并未将其复制到 node--###.tpl.php1 ,但如果您想将其扩展到另一个节点,则必须直接在模板中输入逻辑,而不只是复制 node--###.tpl.php2 node--###.tpl.php3

只是记住刷新缓存让Drupal了解您的更改。

 

If all you are wanting to do is allow anonymous users to view comments on a single node, you could take the dull ax approach by first allowing all anonymous users to view comments, eg:

enter image description here

and then, in your theme, copying the default node.tpl.php to node--###.tpl.php where ### is the nid of the node you are wanting your anonymous users to View the comments and then making the following changes:

In node.tpl.php, there should be something along these lines near the end of the file:

<?php print render($content['comments']); ?> 

This is where the actual comments are displayed. Since this is the template that will be used for every node except the one you want special comment treatment, change this to:

<?php if ($logged_in): ?>   <?php print render($content['comments']); ?> <?php endif; ?> 

which will have the effect of displaying the comments only if the user is logged in. And, since the node--###.tpl.php doesn't have this newly added if surrounding its printing of the comments, it will display the comments for both anonymous and authenticated/logged in users.

Of course, you could also just have modified node.tpl.php like this:

<?php if ($logged_in || $node->nid==###): ?>   <?php print render($content['comments']); ?> <?php endif; ?> 

and not copied it to node--###.tpl.php, but then if you wanted to extend this to another node, you'd have to enter the logic directly in the template, and not just copying node--###.tpl.php to node--######.tpl.php.

Just remember to flush your caches to let Drupal know about your changes.

 
 
1
 
vote

有几种方法可以处理这个问题,它取决于您想要进行更改时。

您想要更改的是$ node-&gt;评论以下之一:

  • compoud_node_closed
  • compount_node_hidden
  • compount_node_open

你可以使用一个 hook_node_preSave( )基于一些逻辑在保存之前更改值的功能。或者您只需要通过 node_load()。只要在加载它以进行更改时,请务必保存节点。

 

There are a couple ways to handle this and it depends on when you want to make the change.

What you'll want to change is $node->comment to one of the following:

  • COMMENT_NODE_CLOSED
  • COMMENT_NODE_HIDDEN
  • COMMENT_NODE_OPEN

You could use a hook_node_presave() function to change the value prior to saving based on some logic. Or you just need to get access to the node object through other means like node_load(). Just make sure to save the node if you're loading it up to make the change.

 
 
       
       

相关问题

4  如何在单内容类型上具有多个现场集合实例?  ( How to have multiple instances of a field collection on single content type ) 
我有一个内容类型,我想使用字段集合来组分组某些字段(单选按钮和文本字段)。我只需要许多这些在内容类型上,只有标签不同。 我希望在一个内容类型上制作一个字段收集实体并在一个内容类型上有多个实例,但现场收集不支持此。 基本上,我需要一组内容类型的一组字段的许多实例。我怎样才能完成这个? ...

0  如何将配置文件类型附加到特定的用户角色?  ( How to attach profile type to specific user role ) 
我有多种配置文件类型和多个用户角色。我想将特定的配置文件类型与特定角色的用户组合起来。例如,客户角色有自己的简档,内容作者有自己的简档等。 有没有办法将它们分配在一起? ...

1  如何排序字段_info_instances按字段权重返回值?  ( How to sort field info instances return value by field weight ) 
我正在使用 field_info_instances 函数来在内容类型下检索所有字段信息。 (例如: field_info_instances('node','bundle_name') )。 但返回阵列字段未按预期排序。我需要按照内容类型(根据权重)提到的顺序获取字段。 对于EX,管理字段列表中提交的重量为8(来自...

0  让用户将PDF添加到内容类型,但不是附件,内容类型是PDF  ( Let the user add a pdf to a content type but not as an attachment content type ) 
我希望这个标题有点清楚,但是我需要/想要的那么: 在有权制作内容的瞬间的用户可以为某些内容类型添加PDF,这被添加为附件,因此用户必须先转到内容,然后必须单击PDF以查看它。 是否有可能让我的用户只添加PDF到内容类型,并且内容类型仅是PDF? 因此,当有人进入该页面并单击链接时,请立即显示PDF 而不是介于附件之间...

0  指定要显示节点的子域(带共享数据库的多部)  ( Specify on which subdomain to show node multisite with shared database ) 
我正在使用与共享数据库的多电路数据库。有没有办法我可以指定我希望显示内容的子域(在节点创建上)? 因此,如果我创建一个节点,我想拥有复选框,说(子域1,子域2,子域3)。 提前感谢 ...

1  用户如何从视图中选择项目?  ( How can a user choose items from a view ) 
我有3种类型的用户: 作者 读者 网站管理员 到目前为止我所做的是什么?: 我创建了名为 Book 的内容类型。 Authors 在我的网站&amp上创建帐户;登录&amp;然后添加有关他们编写的书籍的信息。我有一个名为 books 的页面显示的视图,其中列出了所有书籍。 我需要什么? Reade...

1  自定义返回搜索页面上的结果  ( Custom facets return no results on search page ) 
我已为Apache Solr的节点索引创建了自定义字段。这是代码。 function myModule_apachesolr_index_document_build_node(ApacheSolrDocument $document, $node, $env_id) { if($node->type == ...

1  在视图筛选条件中启用分类学术语名称而不是ID存储  ( Enable storing of taxonomy term name instead of id in views filter criteria ) 
背景 我使用功能模块将代码部署到我的滞留。例如,我有一个出口的功能: 内容类型 - 播放器 在这种内容类型的转子学术语 - 奖牌 查看其中包含过滤器类型的播放器: Content: Has taxonomy term (=gold) 奖牌有三个术语 - 金,银,青铜。 在该功能中,术语不会导出...

2  omega kickstart亚文体中的次媒体媒体查询CSS  ( Subtheme media query css in omega kickstart subtheme ) 
我想建立基于Omega Kickstart的网站,这是欧米茄的一个次次。当然,我想稀疏地在我的变化中划分,所以我制作了一个欧米茄kickstart的次次。 所有 指南在那里这样做假设您只希望在新次次上面的一个全局CSS文件。对我来说似乎很疯狂 - 我想遵循我的象限中的相同移动第一模式,并单独覆盖每个目标的CSS文件...

1  查看最新版本VID  ( Get latest revision vid in views ) 
我正在使用修订模块来处理节点的状态。就节点来,他们一直在工作完美,工作流程正是我想要的。但是,我在尝试构建视图时运行到一个问题。 到目前为止我能做什么: 创建视图 设置节点类型 将其限制为只有待定修订的节点 (我获得两个节点,待定修订(未发布的Rev) 获取节点的nid 我有问题: 我尝试选择待定版本的...

1  根据菜单设置覆盖节点模板  ( Override node template depending on menu settings ) 
如何根据菜单中的位置覆盖节点的模板? 例如,我创建一个节点,在"菜单设置" 中,我将其放在一些"父项" 下。我希望为特定内容类型的节点使用特定模板,该节点归属于特定父项下。 ...

0  试图打印Apache Solr搜索的结果  ( Trying to print results of apache solr search ) 
我正在尝试打印到Drupal消息,索引项目作为Drupal中的对象。 这是我到目前为止的内容: function resource_library_search_apachesolr_process_results(&$results, DrupalSolrQueryInterface $query){ ...

1  检查面板页面是否以编程方式启用?  ( Check if a panel page is enabled programmatically ) 
我需要能够验证是否启用或禁用面板页面(仅仅是CTools页面的变体)。人会如何以编程方式执行此操作?如果它被禁用,如何通过编程方式启用它? ...

1  按URL /标题将Drupal节点作为JSON  ( Fetch drupal nodes as json by url title ) 
我们的Drupal系统使能服务模块已启用,并且能够使用以下URL格式将节点作为JSON返回 http://www.example.com/my_endpoint_path/node/123.json < / a> 但我想使用URL路径设置选项卡中设置的URL别名检索节点。我希望下面工作 http://ww...

0  drupal函数field_get_Items vs user_load  ( Drupal function field get items vs user load ) 
在drupal中,我想在登录管理员帐户时读取一组用户的自定义字段值。我只需要每个用户的1个字段值,相同的字段,我不需要这个信息缓存。 当我使用 user_load 时,它请求用户对象,因为我只需要一个字段,这是非常效率的。 所以我调查了 field_get_items ,但我看不到如何使用 user_load 。我...

2  如何在他的个人资料页面上显示用户按用户显示所有节点  ( How to display all nodes by user on his profile page ) 
我想创建一个"用户" /profiles/<RealName> ,它从用户内容类型列出所选字段。我完成了这一点。但现在,我希望从该用户创建的节点显示所选Fieds的相同视图。 我试图自己做,但我无法与所需内容类型添加关系。 ps:我是一个新手,如此恳求在答案中抛出一些细节。 ...

1  如何向这本书添加审查  ( How to add reviews to the book ) 
我有两个内容类型的"书" &amp; "审查" 。我希望角色的用户 reviewers 向他们想要的任何书添加评论。 我是怎么做到的?: 我已添加实体引用以通过(自动完成)小部件从审核中读取书籍。这只是允许审阅者添加评论节点并从自动完成中选择"预订" 。谁那样?我对它不满意。 如何我想要它: 我是每本书的...

0  将模板应用于特定页面  ( Apply template to a specific page ) 
我需要将模板应用于特定页面,而不是遵循相同的URL模式的页面。 例如,我有一个带有路径/亚洲的页面。我还有路径/亚洲/印度,/亚洲/中国等的页面。我想创建一个仅适用于/亚洲的模板,而不是其他路径。我创建了模板文件页面 - Asia.tpl.php,但它也适用于/亚洲/印度和/亚洲/中国。有没有办法将模板专门映射到此...

5  如何防止用户点总计低于给定用户的阈值?  ( How to prevent user point totals from going below a threshold for a given user ) 
我想为个人用户点设置一个绝对的地板(使用用户点模块)。具体而言,为了使得不可能在1以下的用户点数。 在Drupal 6中,userpoints_contrib中有 userpoints_no_negative 模块,但是删除了规则集成7.x( https://drupal.org/project/userpoints...

0  如何在页面加载中打开模态表单[重复]  ( How to open modal form on page load ) 
这个问题已经在这里有一个答案: ctools模块没有ajax (1答) ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.