[gelöst] Menü für alle sichtbar -> Inhalt aber nur mit Login
am 23.09.2009 - 11:51 Uhr in
Hallo Community,
muss jetzt meine Menüstruktur umbauen.
Bisher war folgende Struktur:
Hauptnavi
- Unternavi
- Unternavi2
- Unternavi3
Unternavi 2 und 3 verweist als Menü auf einen Viewpfad. In der View ist geregelt, dass nur Rolle X auf die Inhalt Zugriff hat. Somit war auch das Menü überhaupt nicht für einen Gast sichtbar. Nun möchte ich aber, dass das Menü sichtbar ist, aber bei Klick darauf soll ein Text (Node X?) erscheinen, der zum Login auffordert. Ist das überhaupt möglich?
LG,
goisgo
- Anmelden oder Registrieren um Kommentare zu schreiben

Zugriff verweigert
am 23.09.2009 - 12:04 Uhr
Unter "/admin/settings/error-reporting" kannst Du die Seite 403 (Zugriff verweigert) einstellen.
Hier könntest Du zum Beispiel dann auf die Seite "/user" verweisen.
Somit wird immer auf die Login-Seite verwiesen, wenn ein User ene "Zugriff verweigert" Seite erhält.
Menu
am 23.09.2009 - 12:05 Uhr
Hi,
schau Dir doch mal dieses Modul hier an --> Menu Access
Damit könnte es funktionieren - hab allerdings selber noch keine Erfahrungen damit!
Erstmal Danke... aber....
am 23.09.2009 - 14:36 Uhr
.... aber leider funktionieren die Tipps nicht. Menu Access, einfach ne super Sache, greift hier nicht.
Das Menu "Menu X" verweist auf den Pfad eines Views, der wiederrum die Zugriffsrolle "keinen Gast" hat. Ich kann im Menu Access machen was ich will, das Menu taucht nur auf wenn ich in der View dazu die Zugriffsrolle abschalte. Das möchte ich nicht, da die View sehr wichtig ist und eine lange Liste aus versch. Inhaltstypen.....
Noch eine Idee... ?
LG,
goisgo
Was kam früher für eine
am 23.09.2009 - 14:46 Uhr
Was kam früher für eine Anzeige, wenn die View geöffnet wurde, aber der User nicht eingeloggt war?
------------------------------------------------------------------
Wenn immer der Klügere Nachgibt, dann regiert der Dumme die Welt!
Gruss Kemal
![]()
http://www.oguz-online.de
Du meinst, wenn man den Link
am 23.09.2009 - 15:03 Uhr
Du meinst, wenn man den Link quasi direkt oben eingibt, ohne Login.
Dann kommt:
Zugriff verweigert
Sie haben keine Zugriffsberechtigung für diese Seite.
Passt ja eigentlich alles. Es soll also das Menü dazu sichtbar sein, und wenn er klickt kommt eh die Meldung oben.
Ich komm nicht weiter.....
lg,
goisgo
Hi, ich fürchte ja, das das
am 23.09.2009 - 15:27 Uhr
Hi,
ich fürchte ja, das das zu kompliziert wird, aber du kannst die Zugriffsschicht eines Menüpunkts mit hook_menu_alter ändern, wie du willst.
http://api.drupal.org/api/function/hook_menu_alter/6
---
Viele Grüße,
Kars-T
Ok danke, kompliziert aber
am 23.09.2009 - 15:44 Uhr
Ok danke,
kompliziert aber ich denke es ist an der Zeit....
hook_menu() ist ja im menu.module.
Da es ein Standardmodule ist, wird es keinen Sinn machen da etwas zu ändern.
Sprich: Ich muss ein eigenes Modul anlegen und darin den hook laufen lassen?
LG und Danke,
goisgo
Ja du musst einen hook in
am 23.09.2009 - 17:36 Uhr
Ja du musst einen hook in einem Modul benutzen. Aber pass auf, hook_menu ist völlig was anderes als hook_menu_alter
http://drupal.org/node/231276
---
Viele Grüße,
Kars-T
Hallo wieder... :) Also
am 24.09.2009 - 08:18 Uhr
Hallo wieder... :)
Also Modul läuft teste und mache und stelle fest, dass views ja selbst den hook_menu_alter einsetzt.
Jetzt die Frage: Bei meinem Problem geht es ja nur um die View - Menüs (view->zugriffskontrolle steuert menu).
Macht es nun Sinn direkt im views_menu_alter zu arbeiten, oder in meinem eigenen .module?
Eigentlich ist die Grundfunktion ja richtig im views_menu_alter, allerdings weiss ich nicht ob
sich das mit meinem module dann "beisst" ?
LG und nochmals Dank für die "auf die Spur bringen",
goisgo
Module
am 24.09.2009 - 08:22 Uhr
Macht es nun Sinn direkt im views_menu_alter zu arbeiten, oder in meinem eigenen .module?
Immer in einem eigenen Modul!
Eigentlich ist die Grundfunktion ja richtig im views_menu_alter, allerdings weiss ich nicht ob
sich das mit meinem module dann "beisst"?
Beissen wohl nicht, jedoch sind nach dem nächsten Update von Views Deine Änderungen weg.
Wenn Du Dein Modul aktivierst kann es sein, dass der Code in der
..._menu_alter()keine Wirkung zeigt. Das liegt dann daran, dass die hooks in alphabetischer Reihenfolge (ausgehend vom Modulnamen) aufgerufen werden.Es sei denn, das Modul hat eine andere Gewichtung als "0".
Diese Gewichtung kannst Du entweder gleich bei der Installation (in der modulename.install, Funktion
modulename_install()) oder aber direkt in der Datenbank (Tabelle{system}) setzen.hth,
Stefan
--
sei nett zu Deinem Themer
Ok, vielen Dank für die
am 24.09.2009 - 13:40 Uhr
Ok, vielen Dank für die Hilfe....
Habe bisher folgende Dinge geschafft:
- Eigenes Modul angelegt
- Modul aktiviert
Meine Hooks sprechen das System auch an (Danke Stefan, weight war die Lösung - habe jetzt 99 für mein module in die DB eingetragen).
Allerdings hänge ich jetzt noch an meinem Problem: Die view hat den pfad ..... /downloadtest
Downloadtest hat die Zugriffsbeschränkung nur für Rolle X.
Das Menü sollte aber sichtbar sein (siehe TOP).
Mein Module ruft die Funktion auf:
<?phptest_menu_alter(&$items) {
$items['downloadstest']['access callback'] = TRUE;
}
?>
Problem: Es taucht tatsächlich das Menü auf.
Allerdings kann der Gast auch darauf klicken und übergeht den Zugriffsrollenschutz der view .........
Ich möchte keinen access ändern, sondern nur die Sichtbarkeit.
<?php$items['downloadstest']['hidden'] = 0;
?>
klappt nicht...
Letzte Frage: Ich muss nach jeder Änderung des test.module das update.php ausführen, sehe ich das richtig?
Lieben Gruß und THX,
goisgo
user_access
am 28.09.2009 - 09:51 Uhr
Was passiert, wenn Du den Menüpunkt nicht vom View anlegen lässt, sondern einfach per Hand (admin/build/menu) erstellst?
Stefan
--
sei nett zu Deinem Themer
Hallo Stefan, so habe ich
am 28.09.2009 - 10:04 Uhr
Hallo Stefan,
so habe ich das auch gemacht: View erstellt kein Menü. Das Menü habe ich händisch gebuildet, mit dem Pfad auf den view.
Heul.....
LG,
goisgo
Menü
am 28.09.2009 - 10:24 Uhr
Naja, Views kann schon Menüpunkte erstellen. Wenn man das möchte.
Ich bin der Meinung, dass das so eigentlich gar nicht möglich ist. Wenn Zugriff auf den Inhalt besteht, wird der Menüpunkt angezeigt. Wenn nicht, dann nicht.
Dafür sorgt das Menüsystem selbst (und lässt an diesem Punkt auch keine Veränderung zu).
Das Ändern des 'access callbacks' bringt in diesem Fall auch nichts, da hiermit ebenfalls der Zugriff auf den eigentlichen Inhalt gesteuert wird.
Du könntest allerdings Folgendes versuchen:
Im Template des Views (oder besser noch in der dazu passenden Funktion
TEMPLATENAME_preprocess_views_view__VIEWNAME) überprüfst Du, ob der aktuell angemeldete Benutzer den Inhalt ansehen darf.Wenn das nicht der Fall ist, rufst Du drupal_access_denied auf.
Das könnte funktionieren.
Stefan
--
sei nett zu Deinem Themer
Hallo Stefan, denke ich
am 28.09.2009 - 10:34 Uhr
Hallo Stefan,
denke ich verstehe: Sprich die Zugriffskontrolle der view selbst abstellen. Dann sind ja alle Menüs sichtbar. Über preprocess dann im view selbst überprüfen ob nach klick auf Menü die Rechte vorhanden sind. Wäre das der Weg? Teste das mal,
LG,
goisgo
Danke !
am 28.09.2009 - 11:26 Uhr
So,
jetzt ein dickes, sehr dickes DANKE !
Genau Dein Tipp ist die Lösung all meiner (selbstgestrickten...) Probleme.
meinthema_preprocess_views_view(&$vars) -> Dort überprüfe ich die $vars['name'] des views und kann dort anhand der Userfilterung schalten und walten wie ich will.
Nochmals: DANKE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LG,
goisgo