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

Menü mit Node-Daten / Bilder-Menü

Eingetragen von c (79)
am 27.03.2011 - 14:54 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo,

ich möchte ein Menü ausgeben und dabei in den einzelnen Links Daten aus dem Node-Objekt des jeweils verlinkten Nodes verwenden. Also, konkret: Jeder Node vom Typ „Page“ hat bei mir ein Image Field. Dieses Bild soll im Menü als Thumbnail ausgegeben werden.

Es ginge natürlich über Views, aber dann könnte ich wohl nicht mit der Menü-Struktur arbeiten und müsste für jedes neue Submenü eine eigene neue View anlegen.

Würde mich über alle Hinweise freuen.

Danke

‹ [gelöst] Link in Block wird falsch interpretiert "Suche" Eingabefeld - Text soll stehen bleiben .. ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst dies mithilfe der

Eingetragen von SteffenR@drupal.org (2262)
am 27.03.2011 - 19:26 Uhr

Du kannst dies mithilfe der Theming Funktionen von Drupal realisieren:

Dazu überschreibst du in deinem Theme die Funktion theme_menu_item -> {deintheme}_menu_item und liest dir die entsprechenden Daten des Nodes über menu_get_object aus. Ist etwas Frickelei - funktioniert aber...

Über einen View könntest du das aber auch realisieren - die "Untermenus" könntest du dann über ein Views Argument "ansprechen" bzw. anzeigen lassen.

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Cool, danke schon mal für die

Eingetragen von c (79)
am 28.03.2011 - 14:18 Uhr

Cool, danke schon mal für die Hinweise. Werde es erst mal mit den Theme-Funktionen versuchen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Hinweise, aber

Eingetragen von c (79)
am 28.03.2011 - 16:29 Uhr

Danke für den Hinweise, aber ja, tatsächlich etwas Frickelei.

Wie komme ich innerhalb der theme_menu_item() an die nid des jeweiligen verlinkten Link-Items? menu_get_object() braucht wohl selbst die Node-ID, um die jeweiligen Daten rauszugeben (ohne Übergabe eines konkreten Pfades geht er einfach vom aktiven aus). Die Doku erhellt mich da leider nicht.

Also, konkret - Das hier:

$node = menu_get_object();
$node->field_image[0]['imagepath'];

... wirft mir im Menü in jedem Link-Item das gleiche Bild aus – aber auch nur das des jeweils aktiven/geöffneten Nodes.

Und wie kann ich innerhalb der theme_menu_item()-Funktion den Link verändern? Ich möcte das Bild ja im A-Tag einfügen und nicht davor oder danach. Es gibt die Variable $link, die den fertigen Link auswirft. Diese Variable kann ich zwar anscheinend per theme_menu_item_link() anpassen, aber da komme ich dann ja eher noch weniger an die Daten des verlinkten Nodes.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Noch mal kurz

Eingetragen von c (79)
am 28.03.2011 - 16:37 Uhr

Noch mal kurz mein Ziel: Ich möchte einfach in jedem Menü-Item (innerhalb der A-Tags) ein paar Node-Daten (des jeweils verlinkten Nodes) mit ausgeben. Es würde ja schon reichen die Node ID zu bekommen (um das Node-Objekt dann per node_load() zu laden).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Genau dies tut die Funktion

Eingetragen von SteffenR@drupal.org (2262)
am 28.03.2011 - 16:51 Uhr

Genau dies tut die Funktion menu_get_object() menu_get_object() will provide you the current node on path - lass dir mal den Inhalt des $noce Objekts über devel ausgeben - dann kannst du dir die Felder einfacher durchschauen.

SteffenR

  • Anmelden oder Registrieren um Kommentare zu schreiben

Stehe ich gerade auf dem

Eingetragen von c (79)
am 28.03.2011 - 21:30 Uhr

Stehe ich gerade auf dem Schlauch? menu_get_object() gibt bei mir, wie in der Doku auch steht, (ohne Argument) den current Node aus. Also den aktuell aktiven/geöffneten. In einem Menü mit vier Links wird da vier mal das gleiche (aktive) Node-Objekt geladen.

Hier mein Code (vereinfacht):

function meintheme_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
  $node = menu_get_object();
  return '<a href="'.$node->path.'">' . $node->title . '</a>';
}

Resultat:

<a href="pfad/zum/aktiven/node/beispiel/42">Titel von Node 42</a>
<a href="pfad/zum/aktiven/node/beispiel/42">Titel von Node 42</a>
<a href="pfad/zum/aktiven/node/beispiel/42">Titel von Node 42</a>
<a href="pfad/zum/aktiven/node/beispiel/42">Titel von Node 42</a>

So sieht das Submenü dann auf Seite 42 aus. Es wird also nicht Link für Link das jeweils verlinkte Node-Objekt geladen, sondern immer nur das aktive, also das der Seite, auf der man sich gerade befindet.

Über das 3. Argument kann man die menu_get_object()-Funktion wohl ein anderes Node-Objekt laden lassen, aber da beißt sich die Katze in den Schwanz: Dazu muss man die Node ID des jeweils verlinkten Nodes übergeben (bzw. den Pfad). Aber woher bekomme ich ID oder Pfad?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Lösung gefunden und hier mal

Eingetragen von c (79)
am 30.03.2011 - 12:19 Uhr

Lösung gefunden und hier mal für die Nachwelt festgehalten:

function theme_menu_item_link($link) {
  $node = menu_get_object('node', 1, $link['href']);
  return theme('imagecache', 'preset_name', $node->field_image[0]['filepath'], '', '', null);
}

In der theme_menu_item()-Funktion bin ich nicht weiter gekommen, aber über theme_menu_item_link() kann man auf die Einzelteile des Links zugreifen. So kann dann der menu_get_object()-Funktion der Pfad übergeben werden und zurück bekomme ich das Node-Objekt. In diesem Fall greife ich auf ein Image-Feld zu, das ich per Imagecache ausgebe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • canadian pharmacy lotrisone cream used for cellulitis
  • 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?
Weiter

Neue Kommentare

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

Statistik

Beiträge im Forum: 250234
Registrierte User: 20461

Neue User:

  • WugPiola
  • marouane.blel
  • capilclinic

» 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 10 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