我继承了一个 Druapl5 站点,它在发布时显示内容,但未在编辑内容表单的发布选项部分选中。
我确认该节点的数据库中的状态为 0。所以它应该是不可见的。
我的第一个猜测是我已登录,这就是为什么我可以看到它,但我退出了,我仍然可以看到它。我尝试了不同的浏览器和相同的东西,所以不是那样的。
此外,未发布的节点出现在搜索结果中,我最初认为这是一个过时的搜索缓存,但可能有所不同。
见过这样的事情吗?有任何想法吗?
您在评论中提到该站点上安装了Content Access 。这个模块(以及其他几个,例如ACL)覆盖默认的 Drupal 节点访问机制,以提供额外的/更细粒度的权限设置。
所以我的猜测是该模块中的权限配置对于您想要的结果配置错误。据我记得,它允许每个内容类型(为作者和角色定义)单独的权限集。您应该查看您的内容类型编辑/定义页面 - 该模块应该添加一个选项卡来配置权限。还要检查模块的 readme.txt,因为它可能会提供一些额外的提示。
如果这没有帮助,您应该检查是否还安装了其他节点访问模块。如前所述,它们有很多,它们的交互作用不容易确定(如果可能,应该只使用一个)。
你在使用视图吗?如果是这样,请确保您将过滤器设置为仅显示已发布。
我在评论中遇到了类似的问题,这导致了一些极好的垃圾邮件机会,直到我发现它。
检查您对匿名用户的权限。好像在某个地方他们有错误的权限。
比较奇怪。没有答案,只有猜测:
尝试访问 admin/content/node-settings 并单击 Rebuild permissions。
也许清除缓存管理/设置/性能
所有访问模块在使用 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>