Wie kann ich in den Aufbau der Primary Links eingreifen?

am 28.10.2009 - 18:04 Uhr in
Hallo,
Ich möchte das Suchfeld innerhalb eines <li></li>
mit in die Primary Links aufnehmen. Die Primary Links sind folgendermassen ins Template eingebunden: <?php print theme('links', $primary_links); ?>
.
Nun sollte nach dem letzten Link und vor dem finalen </ul>
der Primary Links das stehen: <li class="search"><div class="searchbox"><?php print $search_box; ?></div></li>
.
Wie sollte denn die Funktion heissen und in der Standardkonfiguration lauten, die ich da überschreiben müsste? Reingefummelt bekomme ich das dann schon.
Ich habs mit function meinthemename_menu_primary_links($links)
und function meinthemename_menu_links($links)
versucht, leider zeigt es nicht die geringste Wirkung.
Danke für jede Hilfe,
Marc
- Anmelden oder Registrieren um Kommentare zu schreiben
theme_links
am 28.10.2009 - 18:22 Uhr
Hallo.
Kopiere die Funktion theme_links in Deine template.php und benenne sie nach Wunsch (Vorschlag:
my_primary_links
).Dort fügst Du dann an der entsprechenden Stelle die search-Box ein und rufst die so erstellte Funktion in der page.tpl.php anstelle von
<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
auf.Und schon sollte das Suchfeld als neues Item der Liste erscheinen.
hth,
Stefan
--
sei nett zu Deinem Themer
Danke, aber es gibt noch ein kleines Problem...
am 28.10.2009 - 21:23 Uhr
Hab es FAST geschafft...
$output .= '<li class="search"><div class="searchbox"><?php print $search_box; ?></div></li>';
Das steht nun dort drin und wird auch ausgegeben. Leider aber Wort für Wort, denn "print $search_box;" sollte ja als PHP-Befehl ausgeführt werden. Wie lautet da die Schreibweise innerhalb dieses $Output? Geht das überhaupt?
Ich kenne leider nicht die Syntax von PHP.
Aber trotz allem... danke nochmals.
Kurz noch zur Verdeutlichung.. so erscheint es im Quelltext:
<div id="main-menu">
<ul class="links my_primary_links"><li class="menu-121 active-trail first active"><a href="/node/1" title="Eine Testseite" class="active">Home</a></li>
<li class="menu-127 last"><a href="/node/2" title="Nächster Link">Artikel</a></li>
<li class="search"><div class="searchbox"><?php print $search_box; ?></div></li></ul>
IM Prinzip ja alles super aber das PHP wird nicht ausgeführt, es erscheint nicht mal der Text auf der Seite, so wie er im Quelltext steht. Wenn ich
<p>bla bla bla bla</p>
anstatt dem PHP-Seachbox-Aufruf reinsetze steht es im Quelltext, sowie auf der Seite. Vermutlich muss ich ja nur "print $searchbox" reinsetzen, aber mit welchen KLammer, Punkten etc. muss ich den Befehl umschliessen?Unwissend wie ich bin hatte ich es so probiert:
$output .= '<li class="search"><div class="searchbox">'. $search_box .'</div></li>';
Das bewirkt aber rein garnichts. Kann er die Variable garnicht aufrufen oder ist nur meine Syntax grundlegend falsch, um das zu erreichen?
Habe auch mal einfach
echo "$search_box"
dort eingegeben... kein Ergebnis. Setze ich am Anfang hingegen$search_box = "bla"
erscheint "bla". Muß die Variable irgendwo übernommen werden oder geht es am Ende einfach nicht?Hi, verssuche mal
am 29.10.2009 - 08:46 Uhr
Hi,
also normalerweise sollte das hier unten wunderbar funktionieren.
$output .= '<li class="search"><div class="searchbox">'.$search_box .'</div></li>';
Du hast mit deinem Code aus dem PHP-Schnipsel einfachen Text gemacht hier oben wir der Inhalt der Variablen $search_box mit den anderen Werten (davor und dahinter) konkatiniert.
Wenn in deiner Variable $search_box gar nichts drin steht dann ist es vielleicht nicht die korrekte Variable. Ich wuerde mal in der Richung forschen und schauen ob in der Variablen ueberhaupt drinstehen kann was du erwartest.
Gruss Martin
Danke für die Mühen...
am 30.10.2009 - 21:51 Uhr
... hab aber letztendlich aufgegeben und dann halt doch ein weiteres DIV gemacht, was nun auch relativ sicher an seinem Platz bleibt, wenn wer die Schriftgröße im Browser ändert.
nochmals Danke,
Marc