2009-10-23 59 views
3

我继承了Druapl5网站,并且它在编辑内容表单的发布选项部分没有选中发布内容时显示内容。Drupal允许查看未发布的内容

我确认该节点的数据库中的状态为0。所以它应该是不可见的。

我的第一个猜测是我登录了,这就是为什么我可以看到它,但我退出了,我仍然可以看到它。我尝试了不同的浏览器和相同的东西,所以不是这样。

此外,未发布的节点出现在搜索结果中,我原本认为这是过时的搜索缓存,但可能会有所不同。

曾见过这样的事情吗?有任何想法吗?

+0

你直接查看节点或你怎么能看他们? – googletorp 2009-10-24 06:00:39

回答

3

您在评论中提到Content Access安装在网站上。此模块(以及其他一些模块,例如ACL)将覆盖默认的Drupal节点访问机制,以便提供更多/更精细的权限设置。

所以我的猜测是该模块中的权限配置配置错误,为您的预期结果。据我记得,它允许单独的权限设置每个内容类型(为作者和角色定义)。你应该看看你的内容类型编辑/定义页面 - 应该有一个由该模块添加的选项卡来配置权限。同时检查模块的readme.txt,因为它可能会提供一些额外的提示。

如果没有帮助,您应该检查是否安装了其他节点访问模块。如前所述,它们中有相当一部分,它们的相互作用并不容易确定(如果可能的话,应该只使用一个)。

+0

只是为了记录......这也发生在我身上,并最终成为因为我有2个模块控制发布的状态:[Moder8](http://drupal.org/project/modr8)和[LM Paypal]( http://drupal.org/project/lm_paypal)。节点正在与Moder8批准,因此_published_,但LM贝宝仍然表示,他们实际上是未发布的,所以节点无需付费即可发布。 – 2011-06-13 23:09:39

1

颇为奇怪。没有答案,只能猜测:

尝试访问管理员/内容/节点设置,然后单击重建权限。

也许清除缓存管理员/设置/性能

+0

不幸的是,既没有工作。 – easement 2009-10-23 19:41:21

1

检查您的匿名用户的权限。似乎他们有错误的地方。

+0

就权限而言,在节点模块中选中的唯一匿名用户是访问内容。 – easement 2009-10-23 20:42:17

+0

还有一个名为Content Access的模块,但它只提供访问权限而不能编辑。任何其他想法? – easement 2009-10-23 21:02:59

2

您是否使用Views?如果是这样,请确保您设置了仅显示已发布的过滤器。

我遇到了类似的问题与评论,这导致了一些优秀的垃圾邮件机会,直到我发现它。

+0

奇怪的是,我可以去实际未发布的页面。 – easement 2009-10-23 20:32:27

+0

在我们的设置中有一个搜索视图,但没有可用的发布过滤器。 – Andy 2015-05-20 16:53:46

0

使用hook_node_access()时,所有访问模块都会覆盖默认设置。这很可能是问题所在。所以你需要调整内容访问部分的设置。

而这不是最好的解决方案。但是,如果你需要在临时的东西,你可以随时把这个代码在node.tpl.php文件:

if(!$node->status && $user->uid != 1){ 

的代码添加:

<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?> clear-block"> 

<?php print $picture ?> 
<?php 

if(!$node->status && $user->uid != 1){ 

?> 
<?php if ($page == 0): ?> 
    <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2> 
<?php endif; ?> 

    <div class="meta"> 
    <?php if ($submitted): ?> 
    <span class="submitted"><?php print $submitted ?></span> 
    <?php endif; ?> 

    <?php if ($terms): ?> 
    <span class="terms"><?php print $terms ?></span> 
    <?php endif;?> 
    </div> 

    <div class="content"> 
    <?php print $content ?> 
    </div> 

<?php 
    if ($links) { 
    print $links; 
    } 
}//if for published node 
?> 

</div> 
+1

只允许用户1是一个不好的破解。 – googletorp 2009-10-24 19:56:14

+0

这应该是一个临时解决方案。正如我的帖子所述。如果您想将其变为可用的长期解决方案,您可以更改&& $ user-> uid == 1以允许任何允许管理节点的用户。 – lilott8 2009-10-26 16:10:24

相关问题