我继承了Druapl5网站,并且在“编辑内容表单”的“发布选项”部分中未检查发布内容时显示内容。
我确认节点的DB中的状态为0。所以它应该不可见。
我的第一个猜测是我登录了,这就是为什么我能看到它,但我退出了,我仍然可以看到它。我尝试了不同的浏览器和同样的事情,所以不是那样。
此外,未发布的节点出现在我最初认为是过时搜索缓存的搜索结果中,但可能会有所不同。
有没有见过这样的?有什么想法吗?
答案 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>