Zugriff auf Menuinhalte nur nach Anmeldung
am 19.06.2008 - 16:15 Uhr in
Hallo zusammen,
ich habe folgendes Problem:
Ich will auf meiner Seite nur angemeldeten/registrierten Benutzern bestimmte Punkte im Navigationsmenü anzeigen. Genauso wie der Punkt "verwaltung" erscheint, wenn ich mich als Administrator anmelde.
z.B unter dem Menüpunkt "Media" darf nur der registrierte Benutzer den Unterpunkt "Forum" sehen bzw. darf auf ihn zugreifen.
Leider konnte ich als Drupal-Rookie noch keine Zufriedenstellende Lösung via google oder SuFu finden.
Danke im Voraus.
Mfg
StrinBreak
- Anmelden oder Registrieren um Kommentare zu schreiben

Blöcke und Module
am 19.06.2008 - 17:14 Uhr
Entweder du machst Menüs pro Rolle und zeigst deren Block nur zugehörigen Rolle an.
Oder du versuchst eines dieser module, wobei die nicht so richtig gut geführt sind.
http://drupal.org/project/menu_per_role
http://drupal.org/project/menu_stp
http://drupal.org/project/remove_nonviewable_menu_items
---
Viele Grüße,
Kars-T
Arbeit: comm-press
Hobbies: Tower Defense HQ, plamo.de, Blog
Hide the navigation menu and create your own.
am 19.06.2008 - 17:39 Uhr
Es gibt irgendwo eine Seite "50 heisse Drupal Tipps" oder so. Finde leider grad die URL nicht.
Einer der Tipps lautet:
Hide the navigation menu and create your own.
Das ist die effektivste Methode zu einem eigenen Navigationsmenü zu kommen mit gleichzeitig absoluter Kontrolle über dessen Inhalt. Funktioniert immer weil keine zusätzlichen Module sondern Drupals Bordmittel verwendet werden.
In diesem Navigationsmenü (ein Block) wird per Hand die Liste der Navigationspunkte nachgebildet.
Hier mal ein real eingesetztes Beispiel:
<?php /* $Id: block-my-account.tpl.php, v 1.0 2008/03/29 quiptime Exp $ */
/**
<div id="idRegionSidebarBox6" class="sidebar-block">
<div id="block-menu-271" class="clear-block block block-menu">
<h2>Mein Konto</h2>
<div class="content">
<ul class="menu">
<li class="leaf"><a href="/taxonomy/term/55">Hilfe</a></li>
</ul>
</div>
</div>
</div>
*/
global $user;
?>
<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="clear-block block block-<?php print $block->module ?>">
<?php if ($block->subject): ?>
<h2><?php print $block->subject ?></h2>
<?php endif;?>
<div class="content">
<ul class="menu">
<li class="leaf"><a href="/user/<?php print $user->uid; ?>"><?php print t('My account'); ?></a></li>
<?php
if ( module_exists('privatemsg') ) {
if ( user_access('access private messages') && (isset($user->privatemsg_allow) ? $user->privatemsg_allow : 1) ) {
$new = _privatemsg_get_new_messages();
?>
<li class="leaf"><a href="/privatemsg/inbox"><?php print t(variable_get('privatemsg_menu_link', 'My inbox')) . ($new ? ' ('.'<span class="new-private-message">'. $new .'</span>'.')' : ''); ?></a></li>
<?php
}
} ?>
<li class="leaf"><a href="/bookmark/view"><?php print t('My bookmarks'); ?></a></li>
<?php
if ( user_access('create project content') ) { ?>
<li class="leaf"><a href="/project/user"><?php print t('My projects'); ?></a></li>
<?php
} ?>
<li class="leaf"><a href="/node/add"><?php print t('Create content'); ?></a></li>
<li class="leaf"><a href="/logout"><?php print t('Log out'); ?></a></li>
</ul>
</div>
</div>
Die Links sollte man aber besser mit der l() Funktion erzeugen.
PS
In den FAQ gibt es einen Beitrag zur Verwendung von Block-Templates der den ungewöhnlichen Namen des Block-Template im Beispielcode erklärt.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Vielen Dank für die
am 20.06.2008 - 16:39 Uhr
Vielen Dank für die schnelle Hilfe. Habs hinbekommen!
Klasse Community hier ;)
Gruß,
StringBreak
Sage doch bitte noch wie Du
am 20.06.2008 - 16:43 Uhr
Sage doch bitte noch wie Du es hinbekommen hast.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Hallo, sorry das es solange
am 08.07.2008 - 12:17 Uhr
Hallo,
sorry das es solange gedauert hat. Ich hab das ganze mit dem Modul "Access Control" realisiert. Da kann ich angeben, welche Inhalt wie für Angemdelte User zu sehen sind.
Vielen Dank.
Gruß, StringBreak