2010-06-02 72 views
2

我接管了現有的Drupal安裝,並且被要求從網站搜索結果中刪除單個頁面。我通過這個問題了解了lullabot教程:Hide Drupal nodes from search,但是當我真的只想排除一個頁面時,會談到排除一類內容。Drupal - 隱藏搜索索引中的單個頁面

我已經試過手動刪除從search_index表中的節點,但似乎沒有任何工作。

從搜索索引中排除一個單一的常規內容頁面的任何建議?

回答

0

問題是搜索索引遵循1)訪問權限。爲用戶隱藏單個頁面的模塊是私有模塊。允許按節點訪問設置的模塊。然後,搜索將按照訪問設置進行操作,並將隱藏搜索結果中的隱藏頁面。

1)技術上並不完全正確

+0

本身需要對未認證用戶訪問的網頁什麼的完美工具(它的需要的法規遵從一種形式),但我們只想要那些直接的人邀請使用它。所以,它不在我們的菜單或任何地方連接,但只作爲電子郵件的直接鏈接。 我不能只是手動從索引中刪除這個如何? – ilowe 2010-06-02 14:18:52

+0

有兩件事: 1.你這樣做是錯誤的。如果你想要這種只有邀請的東西,你真的需要一個有效的系統。私有模塊是該解決方案的一部分,但是您需要某種一次性的網址系統。否則就是安全低谷,根本就沒有安全保障。 Drupal不會幫助你。 2.因爲1. Drupal不會幫助你。只是從搜索中刪除它是不可能的,因爲Drupals索引跟隨訪問系統。 如果您選擇「正確」系統,該頁面不會顯示在索引中(對於無法訪問該頁面的用戶)。你得到它「免費」 – berkes 2010-06-02 16:12:52

+0

感謝您的幫助,berkes。該網站目前僅爲維護服務,將在未來幾個月內重新開發,因此我們不會爲其實施隱私模塊。 – ilowe 2010-06-02 18:19:36

2

我剛纔已經制定出類似的東西(隱藏從搜索索引中特定的CCK字段由節點的基礎節點上) - 花了一些跟蹤,但這個橫空出世是答案:

<?php 
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { 
    switch ($op) { 
    case 'view': 
     $nid = ---insert your node id here---; 
     if ($node->build_mode == NODE_BUILD_SEARCH_INDEX && $node->nid == $nid) { 
     unset($node); 
     }  
    break; 
    } 
} 
?> 
+0

這可能有效,但在某些情況下不會。問題是nodeapi只是索引期間調用的鉤子之一。一些領域,例如向搜索索引自己提供信息,導致節點再次位於索引中:)。此外,節點本身,雖然emty仍然在索引中。 一個醜陋的解決方案,可能會工作:) – berkes 2010-06-03 09:13:51

+0

我想知道這裏涉及的其他鉤子。 – lazysoundsystem 2010-06-03 12:30:25

+0

...爲什麼你覺得它很醜。 – lazysoundsystem 2010-06-04 18:17:38