[gelöst] Menülinks themen
Eingetragen von PaulchenPlump (55)
am 09.08.2009 - 20:50 Uhr in
am 09.08.2009 - 20:50 Uhr in
Hallo,
gibt es eine Möglichkeit einen Menülink mit HTMl-Codes zu versehen? Also zum Beispiel ein Menue<strong>Link</strong>
- bisher wandelt er die <> in &lt;&gt;
um...
Ciao, PaulchenPlump
- Anmelden oder Registrieren um Kommentare zu schreiben
Links formatieren...
am 10.08.2009 - 08:56 Uhr
Hallo,
für die Menüformatierung gibt es einfachere Lösungen, zudem solltest du nicht diese Einträge direkt verändern, weil du damit das System unflexibel und fehleranfällig machst (weitere Module die z.B. mit Änderung nicht klarkommen, Updateprobleme).
sieh doch mal in dein aktiviertes Theme, wenn es ein Core Theme ist so ist dieses unter Basispfad-> /themes,
bei contrib-Themes ist dies unter /sites/all/themes/(ev. noch custom/)themename.
Da drin findest du je nach Theme mehr oder weniger css-Dateien die auch unter anderem deine Links ansteuern. Für die linke Navi sind das glaube ich <ul>-Listen.
Nimm dir doch den Firefox zur Hilfe und benutze den Firebug, den kannst du einfach herunterladen als add-on und zeigt dir genau den Eintrag, wenn du über einen Content fährst mit der Maus...
Gruss
minou
Edit: Link entfernt...
Missverständniss! Ich will
am 10.08.2009 - 08:30 Uhr
Missverständniss!
Ich will mit CSS themen, aber um einen Textlink zum Beispiel ab dem dritten Buchstaben grün zu machen, muss ich es irgendwie kennzeichnen - dazu verwendet man schon noch html-tags. ;) Ich will also "MenueLink" als ein Link haben und in dieser Formatierung.
Danke und Ciao, PaulchenPlump
Nun denn, ^^^
am 10.08.2009 - 11:48 Uhr
Wie bereits von meinem Vorschreiber erwähnt, solltest Du Firefox AddOn Firebug installieren und damit deine Seite analysieren. Da wirst Du feststellen, dass die Menulinks bereist eine ID und mindestens eine Klasse haben. diese verwendest Du in der style.css zum formatieren, was willst Du noch mehr? Ich weiss jetzt zwar nicht, wie Du etwas erst ab dem x-ten Zeichen formatieren willst, aber ich lasse mich gerne überraschen.
Auch das Devel-Modul wird dir jenachdem gute Dienste leisten.
Gruss Roger
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen <==> das erleichtert das finden von Lösungen
Puuh, ich bekomme gleich die
am 10.08.2009 - 13:36 Uhr
Puuh, ich bekomme gleich die Krise - ihr versteht mich falsch! Ich untermauere es jetzt mit einigem aus der Hüfte geschossenen Code:
Ich habe ein Menü
<ul class="bla">
<li class="ueberfluessig1">MenueLink1</li>
<li class="ueberfluessig2">MenueLink2</li>
<li class="ueberfluessig3">MenueLink2</li>
</ul>
.bla {margin-left:100px;}
.ueberfluessig1 {color:red;}
Ich möchte jetzt aber folgendes in meiner style.css hinzufügen um einen Teil des Links Fett zu markieren:
.bla li strong {font-weight:bold; color:yellow;}
<ul class="bla">
<li class="ueberfluessig1">Menue<strong>Link1</strong></li>
<li class="ueberfluessig2">MenueLink2</li>
<li class="ueberfluessig3">MenueLink2</li>
</ul>
<ul class="bla">
<li class="ueberfluessig1">Menue<strong>Link1</strong></li>
<li class="ueberfluessig2">MenueLink2</li>
<li class="ueberfluessig3">MenueLink2</li>
</ul>
Ciao, PaulchenPlump
PS: FireBug und das Devel-Modul sind gute Hilfsmittel, aber die brauche ich dafür nicht - ich kann mir den Code auch im Quelltext ansehen und entsprechend das style.css anpassen. Das oben ist alles sinngemäß ausgespuckter Quellcode von Drupal.
Ich würde sowas mit JQuery
am 10.08.2009 - 14:59 Uhr
Ich würde sowas mit JQuery machen
$javascipt = "$('ul.bla .ueberfluessig1').html('Menue<strong>Link1</strong>');";
drupal_add_js($javascipt, 'inline');
Das in deine template.php deines Themes.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Ok, das ist eine
am 10.08.2009 - 22:17 Uhr
Ok, das ist eine Lösungsmöglichkeit - wenn auch keine schöne. Gibt es keine Funktion oder kann man das nicht irgendwie themen?
Vielen Dank nochmals, PaulchenPlump
Doch man kann mit der Api
am 10.08.2009 - 23:05 Uhr
Doch man kann mit der Api von vorhandene Menülinks den Titel ändern, aber ich fand diese Variante besser weil ohne extra Modul.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Dafür funktioniert Deine
am 11.08.2009 - 07:42 Uhr
Dafür funktioniert Deine Variante nur mit javascript. Wenn ich über die API sage "bitte <strong> nicht umwandeln", dann reicht mir das. Wo suche ich denn am besten nach der Funktion?
Eine template.php habe ich ja eh schon... Wie ich die Funktion dann überschreibe muss ich mir noch anlernen, aber das wird schon.
Danke und Ciao, PaulchenPlump
naja, wenn du umdebingt
am 11.08.2009 - 08:45 Uhr
naja, wenn du umbedingt willst hier http://api.drupal.org/api/function/hook_menu_alter/6
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
So wie mir es scheint ist
am 19.08.2009 - 19:16 Uhr
So wie mir es scheint ist dafür eher http://api.drupal.org/api/function/hook_menu_link_alter/6 zuständig. Dass das < ersetzt wird liegt an ein paar Zeilen in der l()-Funktion:
if (isset($options['attributes']['title']) && strpos($options['attributes']['title'], '<') !== FALSE) {
$options['attributes']['title'] = strip_tags($options['attributes']['title']);
}
return '<a href="'. check_url(url($path, $options)) .'"'. drupal_attributes($options['attributes']) .'>'. ($options['html'] ? $text : check_plain($text)) .'</a>';
Wie man hier sehen kann, ist es mit der Option "html" jedoch möglich den Link anders zu behandeln. Jetzt probiere ich schon seit einigen Stunden diese zwei Erkenntnise zu kombinieren es gelingt mir aber (aufgrund mangelnder Kenntnisse) nicht.
In meine template.php habe ich bisher in etwa folgendes geschrieben (wobei ich weiss, dass das sowieso nicht stimmt):
function phptemplate_menu_link_alter(&$item, $menu) {
if ($item['link_path'] == '/en/node/1') {
$item['options']['html'] = TRUE;
}
}
Leider greift dies bisher nicht...
Vielen Dank, PaulchenPlump
Versuch mal nur node/1 bzw.
am 19.08.2009 - 22:13 Uhr
Versuch mal nur node/1 bzw. en/node/1
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Hallo Tobias, das ist
am 20.08.2009 - 08:57 Uhr
Hallo Tobias,
das ist richtig - den Slash habe ich übersehen. Leider funktioniert es trotzdem noch nicht.
Ciao, PaulchenPlump
Dann müsstest du doch
am 20.08.2009 - 09:05 Uhr
Dann müsstest du doch node/% nehmen, da ja die Änderungen direkt abgespeichert werden in der Datenbank. Und Pfade wie en/node/1 werden einzeln so nicht abgespeichert, wenn du Dir mal die Tabellen anschaust.
deshalb würde ich lieber hiermit http://api.drupal.org/api/function/theme_menu_item_link/6 versuchen.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Überschreibe theme_menu_item() oder theme_menu_item_link()
am 20.08.2009 - 09:29 Uhr
Wenn ich über die API sage "bitte <strong> nicht umwandeln", dann reicht mir das.
Du musst ein eigene Templatefunktion schreiben, die
theme_menu_item
odertheme_menu_item_link
ersetzt.--
*Grr* ich stell mich mal
am 23.08.2009 - 22:35 Uhr
*Grr* ich stell mich mal wieder an. Ich habe meiner template.php folgende vereinfachte Funktion mitgegeben:
function fue_menu_item_link($link) {
drupal_set_message('ERFOLGREICH');
}
Leider greift die Funktion bisher nicht. Nach einiger Suche habe ich unter http://www.drupalcenter.de/node/17388 gelesen, dass ich die Primary als Block ausgeben lassen muss, aber auch dies brachte keinen Erfolg. Hat jemand eine Idee wie ich den Text angezeigt bekomme?
Danke, PaulchenPlump
Hooks sind für Module nicht
am 24.08.2009 - 06:53 Uhr
Hooks sind für Module nicht für Themes.
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).
Cache
am 24.08.2009 - 08:47 Uhr
@PaulchenPlump: hast Du mal den Cache geleert? Bzw. die Theme-Registry?
Sofern Dein Theme "fue" heisst, sollte die Funktion dann nämlich aufgerufen werden.
@Tobias:
theme_menu_item_link
ist kein Hook.hth,
Stefan
--
sei nett zu Deinem Themer
Hallo und danke für die
am 24.08.2009 - 10:32 Uhr
Hallo und danke für die antworten,
Stefan hatte recht - ich habe den Cache geleert und es funzte. Habe unter Leistung zwar alles deaktiviert, aber dennoch lag es daran. Wie Stefan richtig erkannt hat, heisst das Theme fue. Mein Code schaut nun so aus:
function fue_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
if (($link[menu_name] == 'primary-links') && (stripos($link[link_title],'<strong>') !== false)) {
$opt = $link['localized_options'];
$opt['html'] = TRUE;
return l($link['title'], $link['href'], $opt);
} else {
return l($link['title'], $link['href'], $link['localized_options']);
}
}
Vielen Dank! Bis zur nächsten Frage - PaulchenPlump ;)
Right, gepennt sorry
am 24.08.2009 - 22:23 Uhr
Right, gepennt sorry :D
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Ein Forum ist kein Ersatz für das www (Google.de).