Drupal允许查看未发布的内容

时间:2009-10-23 19:19:41

标签: drupal publish drupal-5

我继承了Druapl5网站,并且在“编辑内容表单”的“发布选项”部分中未检查发布内容时显示内容。

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

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

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

有没有见过这样的?有什么想法吗?

5 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

您使用的是视图吗?如果是这样,请确保您将过滤器设置为仅显示已发布。

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

答案 2 :(得分:1)

相当奇怪。没有答案,只有猜测:

尝试访问admin / content / node-settings并单击Rebuild permissions。

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

答案 3 :(得分:1)

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

答案 4 :(得分: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>