2009-10-23 22 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