Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Aktiver Hauptmenüpunkt

Eingetragen von vistree (238)
am 07.01.2008 - 22:34 Uhr in
  • Themes & Theming
  • Drupal 5.x

Hallo Forum,
so langsam schwirrt mir der Kopf. Nun habe ich so viele Beträge zu meinem Problem gelesen und komme doch nicht klar ;-(
Ich verwende Drupal 5.5 und versuche gerade ein neues Theme mit phptemplate zu erstellen.
Nun, prinzipiell funktioniert alles sehr gut, aber ein Punkt bringt mich zur Verzweiflung: ich bekomme es nicht hin, dass ein aktiver Hauptmenüpunkt immer aktiv dargestellt wird, auch wenn ein von ihm abhängiger Unterpunkt ausgewählt wird.
Es gab hier schon viele Diskussionen, die aber meistens auf PrimaryLinks und Sec. hinauswollten.
Ich selber möchte gerne ein neues Menü anlegen oder Menüpunkte einfach im Menü Navigation zufügen.
Wo muss ich nun ansetzen? Muss ich auch bei Drupal 5.5 Anpassungen in der template.php vornehmen?
Wie gehe ich dann korrekt in der CSS vor? Ich habe versucht den Style im Bereich #sitemenu-left anzupassen. Ist das korrekt.

Kann mich hier jemand auf den richtigen Weg bringen?
Gruß
Kai

‹ Darstellungsprobleme CSS im IE 6/7 Probleme mit CSS -bitte schnell helfen-!!! ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Schau dir mal das Modul

Eingetragen von Alexander Langer (3416)
am 08.01.2008 - 07:54 Uhr

Schau dir mal das Modul menutrails an.

--
"Look, Ma, I'm dead!"
Cell, Stephen King

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal das

Eingetragen von tiger (415)
am 08.01.2008 - 10:57 Uhr

Wenn du template.php um folgende Funktion erweiterst sollt es klappen

<?php
/**
* überschreibt theme_menu_item() aus includes/menu.inc
*
* fügt zusätzlich eine class 'active' für alle aktiven menupunkte zum <li>-element
*/
function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
 
$item = menu_get_item($mid); // hole den jeweiligen menupunkt

 
if ($item['path'] == 'forum' || ...)
    {
    if (
drupal_get_normal_path($item['path']) == $_GET['q']) {
   
$active = 'expanded ';
    }
    else {
   
   
$active = 'collapsed ';
    }
  }
  else {
   
$active = '';
  }
  return
'<li class="' . $active . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'">'. menu_item_link($mid) . $children .'</li>';
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo und erst mal danke an

Eingetragen von vistree (238)
am 08.01.2008 - 11:06 Uhr

Hallo und erst mal danke an euch beide!
Leider kriege ich es immer noch nicht hin. Wahrscheinlich mache ich einen grundsätzlichen Fehler.
Fange ich erst mal bei TIGERs Lösung an:
Hier kommt eine Fehlermeldung in der Zeile mit dem If ... Forum und er meckert über die ... . Die habe ich jetzt einschließlich der || rausgeschmissen und nun meckert er nicht mehr.
Wenn ich nun aber im CSS-Teil

#sidebar-left ul li a.active {}

eingebe, so wird nach wie vor nur der Menüpunkt formatiert, den ich gerade angeklickt habe.
Mache ich hier einen Fehler?
Genauso verhält es sich beim Menutrail.

Als Basis verwende ich übrigens das burnt-Thema

Gruß
Kai

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hauptnavipunkte bestimmen

Eingetragen von tiger (415)
am 08.01.2008 - 11:35 Uhr

Du musst halt deine Hauptnavigationspunkte bestimmen, und deren Name dann in der Funktion auflisten (z.B. 'forum'). Mit print($item['path']); Kannst du dir den Namen des jeweiligen Menupunktes ausgeben lassen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo tiger, danke für

Eingetragen von vistree (238)
am 08.01.2008 - 12:18 Uhr

Hallo tiger,
danke für deine Rückmeldung.
Leider kapier ich das nun nur halb:
ich habe, sagen wir, 5 Menühauptpunkte.
Z.B. habe ich einen Menüpunkt mit dem Titel: "was machen andere?" (Titel in den Menüeinstellungen).
Muss das jetzt zum Beispiel statt 'forum' in die Funktion rein?
Und wie formatiere ich das dann im CSS? über #sidebar-left li.active ??

Sorry, aber ich schein hier voll der Dau zu sein.
Gruß
Kai

  • Anmelden oder Registrieren um Kommentare zu schreiben

Damit funktioniert es bei mir:

Eingetragen von RC.Otto (73)
am 08.01.2008 - 14:31 Uhr

Ich habe Menu Trails installiert und meine template.php und style.css ergänzt, wie unter http://drupal.org/node/179908 beschrieben. Damit funktioniert es bei mir.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es ist wirklich nicht schwierig

Eingetragen von tiger (415)
am 08.01.2008 - 17:20 Uhr

Also zuerst holst du mit

<?php
$item
= menu_get_item($mid);
print_r($item);
?>

den Menupunkt und gibst zu Testzwecken mit print_r mal die Daten aus.

Dann klickst du im Browser auf deine Menupunkte, die Unterpunkte haben, anhand der Ausgabe siehst du dann, durch was du in meinem Beispiel 'forum' ersetzten musst. In der Klammer listest du einfach die Menupunkte auf.

Im css kannst du dann die Klasse .active stylen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Array ()

Eingetragen von vistree (238)
am 08.01.2008 - 18:20 Uhr

Hi tiger,
auch das funzt nicht.
Wenn ich z.B. in der page.tpl.php den Code unter den print content einfüge, dann bekomme ich immer nur ein leeres Array(). Das selbe Phänomen, wenn ich deinen Code in die Seite reinnehme (und Typ der Seite auf PHP umstelle).
So komme ich leider auch nicht weiter ;-(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktioniert mit Firefox aber nicht mit dem IE

Eingetragen von vistree (238)
am 08.01.2008 - 18:22 Uhr

Hallo RC. Otto

... ist das bei dir auch so?
Und müssten die Anpassungen nicht auch ohne das trailsmenu funktionieren=

Gruß
Kai

  • Anmelden oder Registrieren um Kommentare zu schreiben

template.php

Eingetragen von tiger (415)
am 08.01.2008 - 18:35 Uhr

Du musst die template.php bearbeiten, direkt mit einem Editor, das geht garantiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, bei mir steht jetzt

Eingetragen von vistree (238)
am 08.01.2008 - 19:17 Uhr

OK, bei mir steht jetzt jeweils hinter dem path
node/1, node/2, usw.
Durch den danach folgenden "title" weiß ich nun, welcher der node Hauptmenüpunkte darstellt.
Und wie formatiere ich die dann im CSS?
Sind im Hauptmenü (Navigation) also einfach über #sidebar-left li a.active ???

  • Anmelden oder Registrieren um Kommentare zu schreiben

Schau mal die Source an

Eingetragen von tiger (415)
am 08.01.2008 - 21:35 Uhr

Schau doch einmal den Quelltext an, dann ist ziemlich offensichtlich, welche Klassen du stylen musst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nun, es funktioniert jedenfalls ...

Eingetragen von RC.Otto (73)
am 09.01.2008 - 07:39 Uhr

Hallo Kai,

ich bin wahrlich kein Experte, sondern eher ein "Endanwender" und habe nahezu keine Ahnung von PHP. Deshalb war ich froh, dass es mit Menu Trails funktioniert. Das ging dann ganz einfach:

1. Menu Trails installierren
2. Wie in der Readme.txt von Menu Trails beschrieben, die beiden Zeilen

$vars['primary_links'] = menutrails_primary_links(1);
      $vars['secondary_links'] = menutrails_primary_links(2);

in die template.php einfügen.
3. Menu Trails im Backend einstellen.
4. template.php und style.css in dem Betrag http://drupal.org/node/179908 ergänzen, wobei ich die Änderungen der template.php am Ende und der style.css am Anfang der jeweiligen Datei eingefügt habe.

Das war es dann bei mir. Ich kann nicht sagen, dass ich verstanden habe, was ich da getan habe, denn PHP beherrsche ich nicht. Aber es funktioniert und ich bin froh, dass es solche Module und viele freundliche Helfer in den Foren gibt, die es auch solchen Gelegenheitsnutzern wie mir ermöglichen, ohne besondere Kenntnisse von PHP ein entsprechendes Ergebnis zu erzielen.
Gutes Gelingen,

Rolf-Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo RC. Otto, danke für

Eingetragen von vistree (238)
am 09.01.2008 - 10:10 Uhr

Hallo RC. Otto,
danke für die erneute Beschreibung.
Mir geht es da wie dir - auch ich bin eher ein Anfänger und suche genau so eine Lösung wie du Sie beschreibst.
Was bei mir krass ist: im Firefox funktioniert das ganze super, aber im IE6 ignoriert er die gegebene CSS-Anweisung

ul li.active-trail > a {
color: #2677e3;
background: url(images/leaf_main.gif) no-repeat left 50%;
width: 130px;
border-bottom: 1px solid #fff;
border-top: 1px solid #fff;
}

Hast du mal einen Auszug aus deiner template.php und style.css für mich?
Und gibt es eine Seite wo ich mir das mal anschauen könnte?

Gruß & Danke
Kai

  • Anmelden oder Registrieren um Kommentare zu schreiben

tiger schrieb Schau doch

Eingetragen von vistree (238)
am 09.01.2008 - 10:12 Uhr
tiger schrieb

Schau doch einmal den Quelltext an, dann ist ziemlich offensichtlich, welche Klassen du stylen musst.

Hallo tiger,
danke noch mal für die Hilfe. Leider komme ich hier nicht weiter, da ich mit der Drupal internen CSS-Formatierung noch nicht so vertraut bin (ul, li, li.leaf, ....)

Werde jetzt erst mal mehr auf den Menutrail-Ansatz gehen.

Gruß
Kai

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gerne

Eingetragen von RC.Otto (73)
am 09.01.2008 - 11:57 Uhr

Zum IE6 kann ich nichts sagen, im IE7 funktioniert es bei mir. Die template.php lautet auszugsweise so:

<?php
(...)
if (
theme_get_setting('newsflash_uselocalcontent'))
{
  
$local_content = drupal_get_path('theme', 'newsflash') . '/' . theme_get_setting('newsflash_localcontentfile');
     if (
file_exists($local_content)) {
       
drupal_add_css($local_content, 'theme');
 
     
$vars['primary_links'] = menutrails_primary_links(1);
     
$vars['secondary_links'] = menutrails_primary_links(2);
   }
}

function
phptemplate_menu_links($links, $attributes = array())
{

  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level ".$attributes['class']. "\" id=\"".$attributes['id']."\">\n";

 
$num_links = count($links);
 
$i = 1;

  foreach (
$links as $index => $link) {
   
$output .= '<li';

   
$output .= ' class="';
    if (
stristr($index, 'active')) {
     
$output .= 'active';
    }
// frontpage AND current-link in menu is <front>
   
elseif((drupal_is_front_page()) && ($link['href']=='<front>')){
     
$link['attributes']['class'] = 'active';//add class active to <li
     
$output .= 'active';//add class active to <a
   
}
    if (
$i == 1) {
     
$output .= ' first'; }
    if (
$i == $num_links) {
     
$output .= ' last'; }

   
$output .= '"';

   
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";

   
$i++;
  }
 
$output .= '</ul>';
  return
$output;
}

function
newsflash_menu_item($mid, $children = '', $leaf = TRUE) {
 
$active_class = in_array($mid, _menu_get_active_trail()) ? ' active-trail' : '';
  return
'<li class="'. ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) . $active_class .'">'. menu_item_link($mid) . $children ."</li>\n";
}
?>

Die style.css habe ich einfach am Anfang geändert. Dort lautet sie jetzt so:

/* layout */

li.active-trail > a {
font-weight:bold;
color:#000000;
}

Ich habe also diesen Eintrag gleich als ersten Eintrag gewählt.

Du kannst Dir das gerne auch life ansehen unter www.bnm-p.de. Da es sich aber um unsere "experimentelle" Seite handelt, ist diese über die .htaccess geschützt. Benutzername und Passwort bekommst Du per pm.
Falls es wichtig sein sollte: Ich verwende das Theme Newsflash.

Herzliche Grüße und gutes Gelingen,

Rolf-Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auch bei mir Array()

Eingetragen von mausschubser (3)
am 21.04.2008 - 08:40 Uhr

Hallo,

auch ich bekomme nur Array() als Ausgabe, wenn ich den Snippet in template.php einfüge. Warum?

Vielen Dank für die Hilfe!

Gruß,

ms

  • 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 Tag 22 Stunden
  • Hey danke
    vor 2 Tagen 17 Stunden
  • Update: jetzt gibt's ein
    vor 3 Tagen 11 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 21 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 1 Benutzer und 16 Gäste online.

Benutzer online

  • snsblvd

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