2010-05-20 1 views
2

Какая видимость блока PHP-фрагмент будет показывать блок только на страницах узлов, которые пользователь может войти в систему? Пользователь может не владеть узлом. В моем случае я хочу показать блок Content Complete для людей, которые могут фактически заполнять недостающие поля.Показать блок на узлах, которые пользователь может редактировать?

ответ

5

проверка node_access («обновление», $ узел) (подробнее http://api.drupal.org/api/function/node_access/6)

 
    //first check whether it is a node page 
    if(arg(0) == 'node' && is_numeric(arg(1))){ 
    //load $node object 
    $node = node_load(arg(1)) 
    //check for node update access 
    if (node_access("update", $node)){ 
     return TRUE; 
    } 
    } 

+3

+1 - прямое решение. Я бы заменил предложение if на 'return node_access (« update », $ node), хотя;) –

+0

вы правы, хотя мой код немного читабельнее. но если пользователь знает php, ваш лучший вариант. –

+0

просто сделайте это. btw, удалите те комментарии от темы и, при необходимости, создайте еще один вопрос. –

0

Ниже решение barraponto в переписан для нубов, как я и поддерживать несколько условий.

<?php 
$match = FALSE; 

// Show block only if user has edit privilges for the node page 
// first check whether it is a node page 
if(arg(0) == 'node' && is_numeric(arg(1))){ 
    //load $node object 
    $node = node_load(arg(1)); 
    //check for node update access 
    if (node_access("update", $node)){ 
     $match = TRUE; 
    } 
} 

return $match; 
?> 
Смежные вопросы