Drupal 5.x contains the ability to specify which roles can see specified blocks (Drupal 4.7.x did not contain this feature). But what if you want to display sections of nodes or other content types to certain roles only? You can use PHP to define which roles see the content, all the way down to sections of a page (as opposed to controlling the entire page). The Drupal module nodeaccess will allow you to control node access based on user roles for entire nodes only. Note: failing to correctly implement PHP code can cause the node to not load at all - proceed with caution.
Use the following code to control access to an entire node based on user role:
<?php
global $user;
$approved_roles = array('authenticated user', 'super user');
if (is_array($user->roles)) {
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
return TRUE;
} else {
return FALSE;
}}
?>Use the following code around content snippets you wish to be viewed only by certain users:
<?php
global $user;
$approved_roles = array('authenticated user', 'super user');
if (is_array($user->roles)) {
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
print '<p>Access controlled content</p>';
} else {
return FALSE;
}}
?>
<?php
global $user;
$approved_roles = array('authenticated user', 'super user');
if (is_array($user->roles)) {
if (count(array_intersect($user->roles, $approved_roles)) > 0) {
print '<p>Access controlled content</p>';
} else {
print '<p>Please <a href="/user/register">register</a> to view this content.</p>';
}}
?>All Content © 2005 - 2008 Contract Web Development, Inc. All Rights Reserved. Privacy Policy | Terms of Use | Powered by Drupal
1 day 6 hours ago
1 day 20 hours ago
2 days 7 hours ago
2 days 7 hours ago
2 days 12 hours ago