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

phptemplate_menu_item()

Eingetragen von drupalino (1064)
am 28.05.2008 - 07:08 Uhr in
  • Themes & Theming
  • Drupal 5.x

Hola,

wie bekomme ich es hin, dass ich eine phptemplate_menu_item() nur für ein bestimmtes Menü benutze?
Sprich, ich habe diese nun in meiner template.php, genauso, wie ich es gerne hätte. Nur werden jetzt alle Menüs da durchgejagt und das ist nicht gut.

gruss
drupalino

‹ Erklärung zu theme_menu_item Formular in user_profile.tpl.php ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Was heisst das ist nicht

Eingetragen von md (3717)
am 28.05.2008 - 08:52 Uhr

Was heisst das ist nicht gut? Diese Funktion generiert das HTML eines Menüitems. Wird also zwangsläufig für jedes aktivierte Menüitem aufgerufen.

Was möchtest du denn erreichen?

vg
--
md - DrupalCenter

mdwp* :: Drupal Services

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dass es dies eben nur für

Eingetragen von drupalino (1064)
am 28.05.2008 - 09:02 Uhr

Dass es dies eben nur für ein bestimmtes Menü macht, nicht für alle. Ich möchte meine Hauptnavi darüber Formatieren, klappt auch mehr oder weniger. Nur werden dann natürlich auch die primary Lins verändert und die sollen eben nicht so aussehen.

Habe in dem Zuge auch noch folgendes Problem---> Und zwar muss muss ich irgendwie aus menu_item_link() nur auf den Pfad zugreifen. Nur das gelingt mir irgendwie auch nicht so ganz.

menu_item_link() liefert mir ja schon den kompletten HTML Output mit title usw. nur ich muss den href-String selbst zusammenbauen und komme irgendwie nicht so richtig an sozusagen $link['url'] ran????

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

Daran hab ich gestern auch

Eingetragen von Kars-T (1473)
am 28.05.2008 - 09:43 Uhr

Daran hab ich gestern auch gesessen. Gründsätzlich ist es so: Schau mal in die API rein. Du kannst jeder dieser Funktionen bzw. Hooks angehen. Ich habe dies theme_menu_... funktionen angeschaut und allein _tree ist ja sehr unzureichend, da ich ja nichtmal den Namen oder die ID des Menüs übergeben bekomme.

Also hab ich mir das DHTML Menu Modul angesehen. Da haben die ul alle erweiterte Klassen und IDs. Wenn du dareinschaust, sieht man, das der viele Funktionen im Menu.inc ändert.

Ich verstehe aber das System noch nicht so ganz, das ich genau sagen könnte wie das geht.

Die eigentliche Ausgabe des Baums in Drupal 6 wird hier vorgenommen:
http://api.drupal.org/api/function/menu_tree_output/6

Und man kommt da wie ran?

aus dhtml menu

/**
* Build a specific DHTML Menu block's content.
*/
function _dhtml_menu_build_menu($delta) {
  // Retrieve menu tree data and build a DHTML menu from it.
  return theme('dhtml_menu_tree', menu_tree_all_data($delta));
}

/**
* Implementation of hook_theme().
*/
function dhtml_menu_theme($existing, $type) {
  $theme['dhtml_menu_item'] = array(
    'file'      => 'dhtml_menu.theme.inc',
    'arguments' => array('item' => array(), 'id' => NULL),
  );
  $theme['dhtml_menu_tree'] = array(
    'file'      => 'dhtml_menu.theme.inc',
    'arguments' => array('tree' => array(), 'parent' => NULL, 'pid' => NULL),
  );
  return $theme;
}

Ich muss sagen, das ich das hier noch nicht so recht verstehe. Das eine registriert die Hooks und theme() tut was? Wann wir das aufgerufen?

Also für meinen Teil sieht es einfacher aus, wenn auch nicht allgemein verwendbar, wenn ich menu_tree_page_data nutze, und das array dann selbst bearbeite.

Auch mal dazu gefragt:

Wenn schon eine Template Engine, warum dann nicht templates auf menu-name.tpl.php oder so?

Ach und:
Ich mag zwar keine ul li ul li menüs und arbeite lieber mit reinen a und display:block; aber prinzipiel kannst du mit dem html was drupal macht und mehr oder minder brutalem CSS alles machen was du willst.

Installier dir dhtml menü, schalte den JS Effekt aus und du hast die ganzen CSS Einträge noch in den menüs drin. Das hilft z.B. auch ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupalino schrieb Dass es

Eingetragen von md (3717)
am 28.05.2008 - 09:49 Uhr
drupalino schrieb

Dass es dies eben nur für ein bestimmtes Menü macht, nicht für alle. Ich möchte meine Hauptnavi darüber Formatieren, klappt auch mehr oder weniger. Nur werden dann natürlich auch die primary Lins verändert und die sollen eben nicht so aussehen.

Kannst du das nicht besser mit CSS erledigen?

Zitat:

Habe in dem Zuge auch noch folgendes Problem---> Und zwar muss muss ich irgendwie aus menu_item_link() nur auf den Pfad zugreifen. Nur das gelingt mir irgendwie auch nicht so ganz.

menu_item_link() liefert mir ja schon den kompletten HTML Output mit title usw. nur ich muss den href-String selbst zusammenbauen und komme irgendwie nicht so richtig an sozusagen $link['url'] ran????

Wenn du für menu_item_link(mid,theme) als zweiten Parameter FALSE angibts, bekommst du ein Array zurückgeliefert.

Aber warum willst du für ein Menüitem den href selbst zusammen bauen?

vg
--
md - DrupalCenter

mdwp* :: Drupal Services

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit CSS alleine gehts nicht,

Eingetragen von drupalino (1064)
am 28.05.2008 - 11:04 Uhr

Mit CSS alleine gehts nicht, da jeder Punkt eine css id schon hat, also gehe ich hin und schmeisse dann meine id in das <li> nur damit habe ich ja noch keinen klickbaren Link, den bekomme ich ja erst, wenn ich mit menu_item_link() darauf zugreife. Nur dann wird mir der komplette Link zusammengebaut mit allem drum und dran also <a href="irgendwas" title...... und das geht natürlich nicht, da ich ja Images habe. Ich brauche nur den href!!

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich krieg die

Eingetragen von drupalino (1064)
am 28.05.2008 - 12:48 Uhr

Ich krieg die Krise.....

function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
  $link = menu_item_link($mid);
  $css_id = strtolower(str_replace(' ', '_', strip_tags($link)));
 
  if ($children){
  $output .= '<div id="subnavi"><li id="' . $css_id . '" class="' . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'" >'. $link . $children ."</li></div>\n";
  }
  else{
  $output .= '<li id="' . $css_id . '" class="' . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'" >'. $link . $children ."</li>\n";
 
  }
  return $output;
}

mein problem wäre gelöst, wenn ich es hier hinbekommen würde den punkt div id=subnavi aufzumachen beim ersten child und wieder zu schliesen beim letzen.... aber wie???

BZW. die css, dann brauche ich den ganzen Kram auch nicht. Das problem ist nur, dass bei so einem horizontalen Menü man

#mainnavi li{
display:inline;


}
#mainnavi ul li ul {float:left;

width:100%;}

einfügen muss, sonst bricht es nach dem aktiven link um. Aber da ich Bilder benutze gehtz das nicht, da die dann nicht richtig dargestellt werden.

die müssen so angezeigt werden

#mainnavi li{
display:block;
float:left;
height:23px;
margin:0;
padding:0;

}
#mainnavi ul li ul {float:left;

width:100%;}

und dann bricht der ganze Schmu wieder um ....ich könt schreien

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

URL?

Eingetragen von Kars-T (1473)
am 28.05.2008 - 13:06 Uhr

Kannst du eine URL geben? Das könnte das debuggen erleichtern wenn man das ganze html sieht und was du da darstellen willst.

Und ich verstehe nicht ganz was du mit

"wenn ich es hier hinbekommen würde den punkt div id=subnavi aufzumachen beim ersten child und wieder zu schliesen beim letzen."

meinst

Und benutz dann class="submenu" eine id muss immer eindeutig sein!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nein, leider kann ich keine

Eingetragen von drupalino (1064)
am 28.05.2008 - 13:06 Uhr

Nein, leider kann ich keine URL schicken.

Damit meine ich, wenn ich keine Bilder benutze, bekomme ich fast genau das, was ich will, nur wenn ich diese rolloverbilder verwende, dann klappt das mit dem style nicht mehr und die bilder werden nur halb angezeigt und auch nicht richtig positioniert. UND wenn ich dann einen Menüpunkt aufklappe, dann rutschen die folgenden Hauptpunkte so weit nach rechts wie darunter sublinks stehen.

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eigentlich müsste irgendwie

Eingetragen von drupalino (1064)
am 28.05.2008 - 14:17 Uhr

Eigentlich müsste irgendwie immer der submenuoutput solange festehalten werden in der Funktion bis sie durch ist und dann an den output angehangen werden, damit ich zwei li listen habe

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

rapsli keine

Eingetragen von drupalino (1064)
am 28.05.2008 - 15:15 Uhr

rapsli keine Idee???

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

Orakel

Eingetragen von Kars-T (1473)
am 28.05.2008 - 17:12 Uhr

Also so kann man leider nur in die Kristallkugel gucken. Kannst du nicht wenigstens ein HTML Fragment oder so posten?

Und wenn du JS nutzt, dann brauchst du für getElementById() eindeutige IDs im HTML! Hast du das schon behoben?

Display: inline könnte ein Problem darstellen. Ein Bild ist so ein halb float / inline ding. Du musst sehen ob du nicht standardmäßig mit display:block; arbeiten kannst und damit dann mit position oder float?

Wie schon gesagt, dafür müsste man das HTML sehen. Oder du müsstest Tutorials wälzen in Bezug auf CSS Menüs und JS

http://www.pmob.co.uk/pob/rollovers.htm#

---

Viele Grüße,

Kars-T

Arbeit: comm-press
Hobbies: Tower Defense HQ, plamo.de
Karsihasis

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jo, ne menge Code habe ich

Eingetragen von drupalino (1064)
am 28.05.2008 - 21:33 Uhr

Jo, ne menge Code habe ich schon gepostet in diesem Thread.

Das Was Du als Link geschickt hast ist ja auch nicht das Problem. das ist ja auch ne recht einfache Sache mit phptemplate_menu_item(). Aber ich kann eben nicht richtig an die entsprechenden Submenus dran, da liegt das Problem, weil die einfach so rausgeschrieben werden.

Nochmal: Ich muss irgendwie in dieser

  • liste des Hauptmenüs den Punkt abfragen können/müssen, wo das verschachtelte
    • des submenüs abfängt und auch wieder aufhört. Aber da komme ich irgendwie nicht dran!!!

-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

wird die

Eingetragen von drupalino (1064)
am 28.05.2008 - 21:35 Uhr

wird die phptemplate_menu_item() für jeden Menüeintrag aufgerufen?
Weil eine Schleife gibt es ja nicht darin.

Irre ich mich? oder wie?
-------------------
gruss
drupalino

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielleicht könntest du dir

Eingetragen von netzkoop (1820)
am 29.05.2008 - 00:52 Uhr

Vielleicht könntest du dir eine zusätzliche Variable definieren in hook_menu ?
Schau mal hier:
http://drupal.org/node/16383

Obwohl ich zugeben muss, die Problematik hat sich mir noch nicht gänzlich erschlossen.
Ist das ein dynamisches Menü oder ein statisches? Und wird es nur auf manchen Seiten gezeigt?

Hast du denn funktionierendes HTML dafür, ohne Drupal?

Fragen über Fragen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

mittels $mid Menu auswählen

Eingetragen von tiger (415)
am 29.05.2008 - 07:35 Uhr

Kannst du nicht ganz simpel, das Ganze nur ausführen, wenn $mid bestimmte Wert(e) hat?

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

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 27 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