[gelöst] Aussehen und Format der Primary Links ändern - Wie?
Eingetragen von BeTZe (105)
am 15.07.2010 - 12:29 Uhr in
am 15.07.2010 - 12:29 Uhr in
Hallo Zusammen,
ich habe noch mal eine Frage. Ich möchte die Primary Links oben rechts neben meinem Logo ausgeben. Die Links sollen nicht untereinander sondern nebeneinander stehen. Außerdem möchte ich das aussehen noch ändern. Wie mache ich das? Wie kann ich auf das aussehen der Primarylinks einfluß nehmen? Aktuell stehen sie untereinander mit einem kleinen Punkt davor.
Schon mal vielen Dank im voraus.
- Anmelden oder Registrieren um Kommentare zu schreiben
Per CSS
am 15.07.2010 - 12:53 Uhr
Außerdem möchte ich das aussehen noch ändern. Wie mache ich das? Wie kann ich auf das aussehen der Primarylinks einfluß nehmen? Aktuell stehen sie untereinander mit einem kleinen Punkt davor.
Die einzelnen Menupunkte sind alle per CSS ansprechbar und so dann auch zu designen. Bei Lullabot gibt es ein nettes Screencast, welches zeigt wie man die Secondary-Links bearbeitet. Da wird natürlich nicht in CSS eingefuehrt, aber gut gezeigt, wie man die einfachsten Aenderungen vornimmt, was natürlich auch fuer die primary-Links/Menus zutrifft:
http://www.lullabot.com/videos/using-secondary-menus
Vergessen: Allgemeine Infos zum Theming findest du hier: http://drupal.org/theme-guide/6
Ok. Das aussehen kann ich
am 15.07.2010 - 15:57 Uhr
Ok. Das aussehen kann ich über die CSS-Dateinen ändern. Ich möchte aber das Format noch ändern.
Ich gehe mal davon aus, dass ich dafür die Funktion überschreiben muss. Die Funktion wäre dann doch "theme_links". Oder liege ich da falsch?
Zum rumtesten habe ich jetzt eine template.php Datei angelegt und folgenden Code eingefügt:
<?php
function epms_links($links, $attributes = array('class' => 'links')) {
global $language;
$output = '';
if (count($links) > 0) {
$output = '<ul'. drupal_attributes($attributes) .'>';
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = $key;
// Add first, last and active classes to the list of links to help out themers.
if ($i == 1) {
$class .= ' first';
}
if ($i == $num_links) {
$class .= ' last';
}
if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))
&& (empty($link['language']) || $link['language']->language == $language->language)) {
$class .= ' active';
}
$output .= '<li'. drupal_attributes(array('class' => $class)) .'>Hallo';
if (isset($link['href'])) {
// Pass in $link as $options, they share the same keys.
$output .= l($link['title'], $link['href'], $link);
}
else if (!empty($link['title'])) {
// Some links are actually not links, but we wrap these in <span> for adding title and class attributes
if (empty($link['html'])) {
$link['title'] = check_plain($link['title']);
}
$span_attributes = '';
if (isset($link['attributes'])) {
$span_attributes = drupal_attributes($link['attributes']);
}
$output .= '<span'. $span_attributes .'>'. $link['title'] .'</span>';
}
$i++;
$output .= "</li>\n";
}
$output .= '</ul>';
}
return $output;
}
?>
Durch diese Zeile
$output .= '<li'. drupal_attributes(array('class' => $class)) .'>Hallo';
müsste doch eigentlich ein Hallo vor jedem Menüpunkt mit ausgegeben werden. Leider klappt das nicht. Den Cache habe ich geleert. Wo liegt mein Fehler?
BeTZe schriebOk. Das
am 15.07.2010 - 16:19 Uhr
Ok. Das aussehen kann ich über die CSS-Dateinen ändern. Ich möchte aber das Format noch ändern.
Kannst du kurz sagen, was du mit Format meinst? Ein "Hallo" vor jeden Link hinzuzufuegen kannst du doch auch ohne Ueberschreiben von theme_links erreichen, oder?
Der Sinn und Zweck von theme_links (und all den anderen theme-Funktionen) ist, den Inhalt zu uebergeben und einen Output zu erhalten, der themable ist. Das bedeutet, die uebergibst der theme_links() Funktion deine Links und ausgespuckt wird entsprechender HTML/CSS-Code, den du dann voll und ganz modifizieren kannst, weil jedes Element eine genaue Bezeichnung erhaelt.
Ich gehe mal davon aus, dass ich dafür die Funktion überschreiben muss. Die Funktion wäre dann doch "theme_links". Oder liege ich da falsch?
Wenn du die uebeschriebene Funktion entsprechend aufrufst, muesste das tatsaechlich eigentlich funktionieren (aus dem Bauch heraus), aber ich habe die theme-Sachen noch nicht wirklich ueberschrieben ;-) Ergaenzung: Und versuch auch mal beim Testen einen neuen Menupunkt hinzuzufügen.
Also. Aktuell werden die
am 15.07.2010 - 16:31 Uhr
Also. Aktuell werden die Menüpunkte untereinander ausgegeben. Ich möchte sie aber nebeneinander haben. Kann ich das auch über CSS steuern?
Das Hallo gebe ich nur aus um zu sehen ob die Funktion überschrieben wird oder nicht.
Achso. EPMS im Namen der Funktion steht für den Namen meines themes.
BeTZe schrieb ... Ich möchte
am 15.07.2010 - 18:04 Uhr
... Ich möchte sie aber nebeneinander haben. Kann ich das auch über CSS steuern?
Ja! Im Normalfall über die Anweisungen block und float
Kleiner Tip, sieh Dir mal diverse Navigationen in Themes mit Firefox und Firebug an. Dann hast Du Beispiele und kannst diese leicht nachbauen.
So, ich habe mir jetzt mal
am 16.07.2010 - 08:59 Uhr
So, ich habe mir jetzt mal den Quellcode angeschaut. Das Problem ist, wenn ich es über CSS änder, dann ändere ich das aussehen der Primary Links die oben stehen sollen und auch das aussehen der Links im Menü in der linken Seitenleiste.
BeTZe schrieb So, ich habe
am 16.07.2010 - 09:28 Uhr
So, ich habe mir jetzt mal den Quellcode angeschaut. Das Problem ist, wenn ich es über CSS änder, dann ändere ich das aussehen der Primary Links die oben stehen sollen und auch das aussehen der Links im Menü in der linken Seitenleiste.
Schau dir doch nochmal das obige Screencast an, dort wird genau dieses "Problem" besprochen.
In deinen Template-Dateien wird jeweils mit theme_links() oder theme('links',...) das Menu ausgegeben. Diese Funktionen haben die Möglichkeit, dass man ihnen per Parameter eine CSS-Klasse zuweist. Das ist normalerweise "links primary-links". Wenn du diesen Parameter veraenderst, kannst du deinem Menu in der sidebar eine andere Klasse zuweisen als oben und so unterschiedlich gestalten oder du sprichst sie ueber sidebar-left an (das ist die übergeordnete Instanz links) und gestaltest sie dann darueber.
BeTZe schrieb So, ich habe
am 16.07.2010 - 10:13 Uhr
So, ich habe mir jetzt mal den Quellcode angeschaut. Das Problem ist, wenn ich es über CSS änder, dann ändere ich das aussehen der Primary Links die oben stehen sollen und auch das aussehen der Links im Menü in der linken Seitenleiste.
Garantiert nicht! Du hast bei DRUPAL sooooo viele ID´s und Klassen zum themen.
Deine Primary Links stehen bestimmt in irgendeinem DIV mit ner ID ... z.B.:
<div ID="nav"> ...</div>
Wenn Du jetzt nur die Links in diesem DIV ansprechen willst, dann schreibst Du eben als CSS Anweisung:
#nav a { color: red; }
Alles klar? Schnapp Dir den FIREBUG und erkunde mal die vorhandenen CSS Klassen und IDs Deiner Seite!
Habe es jetzt über CSS
am 16.07.2010 - 10:41 Uhr
Habe es jetzt über CSS hinbekommen. Habe eine CSS Angabe bzgl. des Menüs übersehen. Vielen Dank für die Hilfe.