3

我继承了一个 Druapl5 站点,它在发布时显示内容,但未在编辑内容表单的发布选项部分选中。

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

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

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

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

4

5 回答 5

3

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

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

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

于 2009-10-24T12:58:42.250 回答
2

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

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

于 2009-10-23T20:09:39.493 回答
1

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

于 2009-10-23T20:05:37.923 回答
1

比较奇怪。没有答案,只有猜测:

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

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

于 2009-10-23T19:26:54.427 回答
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>
于 2009-10-24T18:08:54.833 回答