primary_links (PHPTemplate) verschiedene IDs verteilen
Eingetragen von Anonymous (0)
am 29.11.2005 - 21:44 Uhr in
am 29.11.2005 - 21:44 Uhr in
Hallo erstmal :)
Ich bin neulich auch auf den Drupal-Zug aufgesprungen und möchte nun ein eigenes Theme (PHPTemplate) erstellen (die Drupal-Seite gibt es auf http://komani.hobby-dreh.de und das gewünschte Layout des Themes auf http://web190.server2.dce4u.de/site-7/komani/)
Ich möchte nun jedem einzelnen primaren Link eine eigene ID verpassen (zwecks Styling per CSS). Kann man aus der Variablen $primary_links nun irgendwie den Linktext herausextrahieren und als eigene Variable benutzen bzw. per $primary_links[name] oä. ansprechen?
Oder gibt es eine ganz andere Lösung?
Vielen Dank an alle Helfer,
Julius
- Anmelden oder Registrieren um Kommentare zu schreiben
Re: primary_links (PHPTemplate) verschiedene IDs verteilen
am 29.11.2005 - 23:44 Uhr
Ich möchte nun jedem einzelnen primaren Link eine eigene ID verpassen (zwecks Styling per CSS). Kann man aus der Variablen $primary_links nun irgendwie den Linktext herausextrahieren und als eigene Variable benutzen bzw. per $primary_links[name] oä. ansprechen?
Oder gibt es eine ganz andere Lösung?
Soweit ich es bisher beurteilen kann, wird es in der 4.7.x keine $primary_* und $secondary_links mehr geben. Mag aber auch ein Bug der CVS-Version sein. Anyway:
foreach ($primary_links as $key => $link) {
// Link holen
if (!preg_match("/<a*>([^<]+)<\/a>/i", $link, $parts))
die("Invalid entry");
else
$title = $parts[1];
// Analysiere $title um passende CSS festlegen zu können
$css = foo();
$primary_links[$key] = str_replace("href=\"", "class=\"$css\" href=\"", $link);
}
So, oder so ähnlich, wenn ich Dich richtig verstanden habe.
PHPTemplate.engine hacken
am 30.11.2005 - 14:23 Uhr
Die primären und sekundären links kommen aus der Template Engine selber. Der entsprechende Code findet sich in der Datei phptemplate.engine, in der Funktion phptemplate_page().
Interessant wird es so um Zeile 175, dort wird das Array der primary und secundary links geschrieben. Hier könnte auch eine ID hinzugefügt werden, etwa so:
if (theme_get_setting('toggle_' . $type . '_links')) {
for ($i =0; $i < $count; $i++) {
unset($attributes);
if (!empty($value['text'][$i])) {
// HACK: FÜGE ID HINZU
$attributes['id'] = 'id_' . $type . '_' . $i;
// ENDE DES HACKS
// Ab hier normaler Code
if (!empty($value['description'][$i])) {
$attributes['title'] = $value['description'][$i];
}
$text = ...
Das sollte den primary links IDs der Form "id_primary_1" und den secondary links IDs der Form "id_secondary_1" geben.
-------------------
Gerd Riesselmann
http://www.gerd-riesselmann.net
Jo!
am 30.11.2005 - 17:17 Uhr
@ gerd riesselmann
Das hat funktioniert! Vielen Dank!
Allerdings ist es jetzt so, dass die id nur angezeigt wird, wenn auch eine Beschreibung (also title="") eingegeben wird. Verschiebt man den Hack in die Zeile 128, d.h. nach der Abfrage von
if !empty($value['description'][$i])) {
dann funktioniert es wie gewünscht. Vielen Dank dafür!