Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Blöcke mit Menü ein- und ausblenden

Eingetragen von Anonymous (0)
am 01.10.2006 - 09:40 Uhr in
  • Allgemeines zu Drupal

Hallo Forum,

ich habe gerade begonnen, mit Drupal zu experimentieren und habe folgende Frage, auf die ich hier im Forum noch keine Antwort gefunden habe: Ich möchte mir eine Menüstruktur erstellen, die folgendermaßen aussehen soll: Oben einige Primary-Links, zum Beispiel "Säugetiere", "Vögel", "Fische". Wenn nun einer der Primary-Links angwählt wird, soll links in der Sidebar ein Block mit einem Menü erscheinen (bei "Vögel" dann zum Beispiel mit den Einträgen "Pinguine", "Flamingos" und - was weiß ich - "Buchfinken"). Bei "Fische" soll dann ein Block mit einem Fisch-Menü erscheinen, und die Vögel verschwinden.

Nun habe ich mir für jeden Primary-Link ein Menü angelegt, außerdem habe ich ein Vokabular erzeugt, das die Einträge "Säugetiere", "Vögel" und "Fische" enthält. Beim Anlegen eines neuen Node weise ich die entsprechende Kategorie zu.

So weit, so gut. Jetzt muss ich es nur noch hinbekommen, dass die Blöcke mit den Menüs so ein- und ausgeblendet werden, wie ich mir das vorstelle. Jetzt kann ich natürlich bei den Einstellungen zum Block jede Seite einzeln angeben, bei der der Block erscheinen soll. Eleganter fände ich es, wenn ich "Diesen Block nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt (PHP-Modus für Experten)." anwählen würde. Nun würde ich einen PHP-Ausdruck eintragen, der so ungefähr folgendermaßen aussehen würde:

category = "Fische"

Da ich aber keine Ahnung von PHP habe: Könnte mir vielleicht jemand behilflich sein, diesen Ausdruck zu formulieren?

Oder ist das ganze Konzept Schwachsinn, und es geht viel einfacher? Oder viel komplizierter?

Viele Grüße von
SSt

‹ node_save Anleitung? Kategorieansicht und Tabellen in nodes ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Path angeben

Eingetragen von md (3717)
am 01.10.2006 - 13:08 Uhr

Du kannst in der Block Konfiguration bei 'Zeige den Block nur auf den aufgelisteten Seiten' auch einen URL-Path angeben.

Beispiel:
"Fische"
"Fische/*"

vg, md - drupalcenter
--
www.mdwp.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genau hier hänge ich aber

Eingetragen von rener (33)
am 01.10.2006 - 14:42 Uhr

Genau hier hänge ich aber auch.
Durch die Path Angabe löse ich ja nur ein Teil des Problems - oder?

Ähnlich wie SST will ich auch ein Menü aufbauen. Ich halte mich daher mal an seinem Beispiel.

1. Wenn ich z.B. in der Primären Navi "Säugetiere" aufrufe, erhalte ich den entsprechenden Menü Block - soweit ok. ABER der Menü Block wird ja nicht mehr angezeigt, wenn ich davon einen Artikel z.B. kommentieren oder bookmarken möchte.

Und 2. Der Menü Block "Fische" soll z.B. nur der Benutzer-Rolle "Fischer" zugänglich sein. Alle Anderen Gäste und Benutzer sollen die Inhalte nicht lesen dürfen. Ich könnte es im Block per PHP z.B. so umsetzen:

<?php
global $user;
if (
in_array('Fischer',$user->roles)) {return TRUE;};
if (
$user->uid == 1) {return TRUE;} else {return FALSE;}
?>

Aber den Block brauche ich ja auch, um die URLs anzugeben.

Hier komme ich z.Z. noch nicht weiter.

Für Tipps und Lösungen wäre ich wirklich dankbar.

  • Anmelden oder Registrieren um Kommentare zu schreiben

URLs angeben?

Eingetragen von md (3717)
am 01.10.2006 - 17:09 Uhr

Aber den Block brauche ich ja auch, um die URLs anzugeben.

Da versteh ich nicht was du meinst.

vg, md - drupalcenter
--
www.mdwp.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der Menü Block Fische soll

Eingetragen von rener (33)
am 01.10.2006 - 19:37 Uhr

Der Menü Block Fische soll nur erscheinen, wenn die URLs:
fische
fische/*
aufgerufen werden. Das kann ich in dem Menü Block Einstellungen vornehmen, wie von Dir beschrieben.
Also, habe ich für den Menü Block "Fische" die Einstellung "Diesen Block nur auf den aufgelisteten Seiten anzeigen." akiviert und:
fische
fische/*
eingegeben. Klappt auch super (bis auf das Problem, dass der Menü Block ja nicht mehr angezeigt wird, wenn ich z.B. den Artikel mit URL "fische/hecht" kommentieren will).

Nun ist das Thema Fische aber so heikel, dass nur die Benutzer der Rolle "Fischer" darauf zugreifen dürfen. Um dies zu erreichen, bräuchte ich daher die "Seitenspezifische Sichtbarkeitseinstellungen" noch einmal, um die Einstellung "Diesen Block nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt (PHP-Modus für Experten)." aktivieren zu können, um den entsprechenden php Code einzugeben.

Hier liegen meine zwei Probleme, die ich mit der Menü Erstellung momentan habe.

---------
Ich will u.a. meine aktuelle Seite: www.rener.de auf Drupal umstellen und mich von Joomla! verabschieden.
Dort habe ich einen privaten Bereich, der über die Top Navigation zu erreichen ist. Das entsprechende Menü und die Inhalte werden aber nur angezeigt, falls man über die entsprechenden Benutzerrechte verfügt.

Ich hoffe ich konnte mein Problem etwas deutlicher ausdrücken und würde mich für jegliche Hilfestellung freuen.

rener

  • Anmelden oder Registrieren um Kommentare zu schreiben

URL-Path

Eingetragen von sst (nicht überprüft) (0)
am 02.10.2006 - 11:54 Uhr

Hallo vg,

Du hast geschrieben:

>> Du kannst in der Block Konfiguration bei 'Zeige den Block nur auf den aufgelisteten Seiten' auch einen URL-Path angeben.

>> Beispiel:
>> "Fische"
>> "Fische/*"

Das hört sich prima an, davon hatte ich auch schon gelesen, bin aber anscheinend auch dazu zu dusselig. Woher weiß das Node "Karpfen", dass es ein Unterpunkt von "Fische" ist (das durch "/*" angesprochen werden soll)?

Grüße von
SSt

  • Anmelden oder Registrieren um Kommentare zu schreiben

@md

Eingetragen von Poldrack (288)
am 02.10.2006 - 12:23 Uhr

Ich glaube er meint, daß ich ja bezüglich der sichtbarkeit die möglichkeit habe

entweder nach pfad (zB /blog/*) oder nach php-code (zB ob registriert oder nicht) die sichtbarkeit des blockes ein und auszuschlaten. will ich aber sagen:

nur registrierte nutzer und nur bei den seiten so und so, komme ich ohne weitergehenden php-code nicht weiter

--------------------------------

http://www.autokauf-und-recht.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sichtbarkeit von Blöcken

Eingetragen von md (3717)
am 02.10.2006 - 12:43 Uhr

Eine Möglichkeit für den PHP-Code für die Sichtbarkeit von Blöcken wäre:

<?php
global $user;
if (
in_array('Fischer',$user->roles) && arg(0) == 'Fische') {return TRUE;};
?>

vg, md - drupalcenter
--
www.mdwp.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Problem 2

Eingetragen von TobiasH@drupal.org (2)
am 02.10.2006 - 23:33 Uhr

Problem 2 kannst du lösen, wenn du die Blockanzeige von einem Taxonomie-Term abhängig machst.
Ich habe deinen Code mal ein bißchen erweitert.

<?php
 
if (arg(0)=='node') {
   
$cats = taxonomy_node_get_terms(arg(1));

    foreach (
$cats as $cat) {
     
$mycategory = $cat->name;
      if (
$mycategory=="Fischer") return TRUE;
    }
  }
  global
$user;
  if (
in_array('Fischer',$user->roles) || ($user->uid == 1)) return TRUE;
  else return
FALSE;
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

arg(0)

Eingetragen von md (3717)
am 02.10.2006 - 23:44 Uhr

arg(0) ist aber nicht zwangläufig 'node'. Z.B. dann nicht wenn man einen URL-Alias (path) eingegeben hat oder das pathauto Modul einsetzt.

vg, md - drupalcenter
--
www.mdwp.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

auf meinen drupal-seiten

Eingetragen von TobiasH@drupal.org (2)
am 03.10.2006 - 00:07 Uhr

auf meinen seiten gibt drupal außerhalb der theming-funktionen immer node zurück.
d.h. der code funktioniert mit pathalias. ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auch auf meinen Seiten kann

Eingetragen von rener (33)
am 03.10.2006 - 09:02 Uhr

Auch auf meinen Seiten kann arg(0) z.B. ein comment, ein taxomony sein.

  • Anmelden oder Registrieren um Kommentare zu schreiben

JAWOLL!

Eingetragen von sst (nicht überprüft) (0)
am 03.10.2006 - 13:41 Uhr

@TobiasH: Das isses, mit dem Code kann ich was anfangen!

Vielen Dank, das hat mir sehr geholfen!

Grüße von
SSt

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe nun auch eine

Eingetragen von rener (33)
am 03.10.2006 - 15:59 Uhr

Ich habe nun auch eine Lösung.
Egal, ob einen Artikel über node/xxx bzw. eine Kategorie über taxonomy/term/xxx oder die entsprechenden URL-Alias Namen aufrufe, werden die Seiten angezeigt.
Auch wird der Menü Block nun angezeigt, wenn man einen Artikel kommentiert oder zitiert.

Man muss lediglich die IDs der Kategorien eingeben und die url alias Namen.
Ich hoffe ich habe nichts übersehen.

<?php
global $user;
if (
in_array('Fischer',$user->roles) || ($user->uid == 1)) {

/*
    This snippet returns TRUE if the node we are
    currently viewing is tagged with specific terms,
    or has a particular URL path assigned to it
*/
$desired_terms = array(9, 35,); // put here the term IDs (tid) you're interested in
$desired_paths = array('fische', 'hecht'); // put the URL path components of interest here
// check taxonomy terms first
if ( arg(0) == 'node' and is_numeric(arg(1)) ) {
   
// Yes, we're viewing a node.
   
$node = node_load(arg(1));
    foreach (
$node->taxonomy as $term) {
        if (
in_array($term->tid, $desired_terms)) {
            return
TRUE;
        }
    }
}

if (
arg(0) == 'comment' and is_numeric(arg(2)) ) {
   
// Yes, we're viewing a comment form.
   
$node = node_load(arg(2));
    foreach (
$node->taxonomy as $term) {
        if (
in_array($term->tid, $desired_terms)) {
            return
TRUE;
        }
    }
}

// check url path next
// this should get the current drupal path, regardless of the clean url setting
if ($_GET['q']) {
   
$my_drupal_path = $_GET['q'];
} else {
   
$my_drupal_path = substr($_SERVER['REQUEST_URI'], 1);
}
// this will convert a path like node/37 to clean/url/path, if one exists
$my_path_alias = drupal_get_path_alias($my_drupal_path);
// check for the the url path component anywhere in the alias
// change this to $mypathalias == $desired_path to get an exact match instead
foreach ($desired_paths as $desired_path) {
    if (
stristr($my_path_alias, $desired_path)) {
        return
TRUE;
    }
}

}

// if all else fails, return false
return FALSE;
?>

schöne Grüße
rener
------------
Wir sind lediglich hier, um Erfahrungen zu sammeln.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 5 Tagen
  • Hey danke
    vor 1 Woche 6 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Stunden
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 23 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association