2012-07-25 83 views
2

我有一個名爲'logos'的內容類型,所有這些都在一個網格視圖中並作爲一個塊輸出。drupal 7 - 限制acces到完整節點

我不希望用戶查看完整的節點,只有視圖。我嘗試過content_access模塊​​,但我的網格視圖也消失了,有沒有辦法限制對特定內容類型的完整節點的訪問?

+0

嘗試[高級內容模塊(http://drupal.org/project/premium_content) – avadhutp 2012-07-25 14:10:53

回答

0

另一種選擇是不發佈節點按照https://drupal.stackexchange.com/questions/11026/how-to-restrict-direct-access-to-the-nodes-in-drupal-7

我測試和視圖仍然可以顯示數據。您可能需要調整樣式,儘管默認情況下,Drupal會爲未發佈的節點添加一個突出顯示以區分它是否未發佈。

+0

這是很好的知道,我認爲未發佈的節點將不可用的意見。我想我可以找到添加類的鉤子,並添加一些基於內容類型的邏輯來刪除改變樣式或做css修復的類。謝謝 – LeBlaireau 2012-08-16 12:57:53

+0

@welovedesign - 或者不去掉這個類,你可以覆蓋這個類的CSS,使它不顯示任何不同:) – nmc 2012-08-16 12:59:01

0

我只是做了再加工中的頁面功能髒修復

if ($variables['node']->type == "logos") { 
      drupal_goto('404'); 

    } 

必須有一個更好的辦法。另外谷歌忽略節點呢?

0

你能澄清一下嗎?您正在顯示塊視圖。那麼爲什麼你不把視圖限制在你想要顯示的字段而不是顯示節點?

您還可以使用字段權限(或CCK的權限,我忘了確切的名字),所以指定每個字段權限。

+0

「那你爲什麼不限制視圖到你想要顯示的字段而不是顯示節點?「 - 這是怎麼回事?我在視圖中嘗試了權限設置。 – LeBlaireau 2012-07-27 10:08:18

0

看一看https://www.drupal.org/project/restrict_node_page_view,這是相當簡單:

/** 
* Implements hook_node_access(). 
*/ 
function MYMODULE_node_access($node, $op, $account) { 
    // Default checks 
    if (!is_object($node)) { 
    return NODE_ACCESS_IGNORE; 
    } 
    $type = is_string($node) ? $node : $node->type; 
    if($op == 'view' && arg(0) == 'node' && arg(1) === $node->nid) { 
    // Restrict access to full MYTYPE node for anon users 
    if ($type == 'MYTYPE' && user_is_anonymous()) { 
     return NODE_ACCESS_DENY; 
    } 
    } 
    // Default 
    return NODE_ACCESS_IGNORE; 
}