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

span tags für primary links

Eingetragen von aschiwi (1113)
am 07.12.2007 - 11:11 Uhr in
  • Themes & Theming
  • Drupal 5.x

Für meine Hauptnavigation benötige ich <span> Tags zwischen den <a> Tags. Irgendwann habe ich das mal in der common.inc gefunden und dort hinzugefügt (Asche auf mein Haupt). Macht aber auch keinen Spaß, bei jedem Update aufpassen zu müssen. Davon, eine Funktion auffindbar zu machen und sie in die template.php einzufügen, habe ich natürlich öfter gelesen, aber noch nie verstanden :-) Aaalso *rauskram* - die Funktion sieht scheinbar so aus:

function l($text, $path, $attributes = array(), $query = NULL, $fragment = NULL, $absolute = FALSE, $html = FALSE) {
  if ($path == $_GET['q']) {
    if (isset($attributes['class'])) {
      $attributes['class'] .= ' active';
    }
    else {
      $attributes['class'] = 'active';
    }
  }
  return '<a href="'. check_url(url($path, $query, $fragment, $absolute)) .'"'. drupal_attributes($attributes) .'><span>'. ($html ? $text : check_plain($text)) .'</span></a>';
}

An den Beginn (statt function 1) würde ich nun "function templatename" stellen, aber dann noch etwas (bei den Views-Templates ist es z.b. der Views-Name) - aber was wäre es in diesem Fall? Denke ich beim Rest auch richtig, also dass ich das so komplett übernehme und meine Änderungen hinzufüge (<span> und </span>)?

Danke!
Anja

***edit*** Kann es sein, dass die "1" für Primary steht (weil Primary Links) und mein Text für template.php entsprechend function templatename_1 usw. wäre? Dann hätte ich mir ja die Frage hier sparen können :-D

‹ Menü ähnlich jogmap.de node-inhaltsty.tpl.php themen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit Deiner Vermutung zu dem

Eingetragen von quiptime (4972)
am 07.12.2007 - 12:21 Uhr

Mit Deiner Vermutung zu dem kleinen "l" liegst Du falsch. Die l() Funktion ist eine Funktion zum organisierten Erstellen von Links und kann nicht direkt gethemed werden.

Moment, schreibe Dir gleich noch was zum Theme "Davon, eine Funktion auffindbar zu machen und sie in die template.php einzufügen, habe ich natürlich öfter gelesen, aber noch nie verstanden".

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Drupal API - must have

Eingetragen von quiptime (4972)
am 07.12.2007 - 12:53 Uhr

Die URL http://api.drupal.org sollte zu Deinen Standard-Bookmarks von Drupal gehoeren.

Dort in der API hat man oft einen Einstieg zum gezielten finden von speziellen Infos. Im Falle von Funktionen bei Drupal 5 ist es der Bereich: http://api.drupal.org/api/functions/5

Nun lass Dich auf dieser Seite nicht von der langen Liste erschlagen. Gib oben Links Teile von Themen ein von denen Du Infos brauchst. Beispiele: link, theme, menu, primary

Im Falle der Primary Links fuehrt die Eingabe von theme, link oder primary zum Ziel. Du kommst auf eine Seite mit diesem Inhalt: http://api.drupal.org/api/function/theme_menu_links/5

Und siehe da, dort ist zu lesen:
theme_menu_links
...
Returns the themed HTML for primary and secondary links. Note that this function is overridden by most core themes because those themes display links in "link | link" format, not from a list. Also note that by default links rendered with this function are displayed with the same CSS as is used for the local tasks. If a theme wishes to render links from a ul it is expected that the theme will provide suitable CSS.

Und den Code dieser Funktion bekommst Du gleich noch praesentiert. So musst Du nicht in Deinen Drupal-Dateien rumwuehlen.

<?php
function theme_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
  }
 
$output .= '</ul>';

  return
$output;
}
?>

Damit weisst Du sofort, dass Du ein Template mit der Bezeichnung "menu_links.tpl.php" verwenden kannst. Du kennst auch sofort den Code den Du erst mal in die Template-Datei uebernehmen musst um ihn veraendern zu koennen.

Und Du weist auch sofort, abgeleitet aus der 1. Zeile des Code der Theme Funktion, was Du noch in der "template.php" erweitern musst um die Template-Datei "menu_links.tpl.php" verwenden zu koennen.

<?php
function phptemplate_menu_links($links) {
  return
_phptemplate_callback('menu_links', array('links' => $links));
}
?>

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo quiptime, erstmal

Eingetragen von aschiwi (1113)
am 11.12.2007 - 09:54 Uhr

Hallo quiptime,

erstmal vielen Dank für die ausführliche Erklärung. Auf dem Gebiet habe ich wirklich wenig Erfahrung, deshalb komme ich auch nicht wirklich mit. Ich kam soweit, dass ich

function phptemplate_menu_links($links) {
  return _phptemplate_callback('menu_links', array('links' => $links));
}

in meine template.php übernommen habe und so angepasst habe: return meintheme_phptemplate_callback usw. .

Dann habe ich eine Datei menu_links.tpl.php mit folgendem Inhalt gemacht:

<?php
function theme_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$output .= "><span>". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</span></li>\n";
  }
 
$output .= '</ul>';

  return
$output;
}
?>

siehe vor allem die hinzugefügten span tags. So gehts aber noch nicht, irgendwas fehlt. In deiner Erklärung zwischen den beiden Code-Blöcken verliere ich den Faden, da ich auf diesen Code gucke wie ein Schwein ins Uhrwerk und ich leider nichts sofort sehe :-)

Was habe ich vergessen?

Danke...
Anja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich war in meiner Erklaerung

Eingetragen von quiptime (4972)
am 11.12.2007 - 10:57 Uhr

Ich war in meiner Erklaerung bezueglich des Template nicht vollstaendig genug.

Gegenueber dem Originalcode einer solchen Theme Funktion wird der Code in der Template Datei immer mit print ausgegeben. Meist wird vor dem print im Template der auszugebende Coce in der Variable $output "gesammelt". Beispiel dafuer:

<?php
$output
= '';
$output .= '<div class="world">';
$output .= 'Hallo';
$output .= 'Welt';
$output .= '</div>';
print
$output;
?>

Der Code dieses Template gibt "Hallo Welt" aus.

Um auf das Template "menu_links.tpl.php" zurueck zu kommen muss die letztz Zeile lauten:

<?php
print $output;
?>

Wenn Du so willst hast Du dieses print vergessen.
 

Fuer den Durchblick weiterlesen:

Mit den momentan von Dir eingefuegten span Tags sieht die Ausgabe einer einzelnen li Zeile etwa so aus. Schematisch, ohne Beruecksichtigung der class Attribute:

<li><span><a href="/foo" class="blubber">Klaro</a></span></li>

Der Link Code wird mit der l() Funktion erzeugt. Die l() Funktion kannst Du Dir auch in der API ansehen um Dir klarzumachen was die einzelnen Parameter in dieser Funktion bewirken.

Im Falle meines schematischen Beispielcode einer li Zeile waere es so:

$link['title'] entspricht "Klaro"
$link['href'] entspricht "/foo"
$link['attributes'] entspricht "class="blubber""

Ich hoffe es hat sich ein wenig entwirrt.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Puh... also das klappt noch

Eingetragen von aschiwi (1113)
am 12.12.2007 - 11:55 Uhr

Puh... also das klappt noch nicht. Ich habe das print $output; zuerst in der Datei menu_links.tpl.php in die letzte Zeile vor ?> eingefügt, das ging nicht. Dann verschiedene andere Wege probiert - z.B. nach dem ?> das print $output; nochmal selbst in diese php-tags gewrappt eingefügt und aufgrund größter Unwissenheit einige andere Sachen probiert aber nichts hat funktioniert.

Dann habe ich noch gesehen, dass folgendes auch falsch wäre:

quiptime schrieb

Mit den momentan von Dir eingefuegten span Tags sieht die Ausgabe einer einzelnen li Zeile etwa so aus. Schematisch, ohne Beruecksichtigung der class Attribute:

<li><span><a href="/foo" class="blubber">Klaro</a></span></li>

denn eigentlich sollen die <span> zwischen <a href=""> und </a> stehen. Wenn ich mir den Code so ansehe, wüsste ich echt nicht, wo ich die hinstellen sollte, damit es richtigrum rauskommt.

So nun nochmal mein jetziger Code, der keinerlei <span>-tags auswirft (auch nicht an der falschen Stelle):

template.php

function phptemplate_menu_links($links) {
  return _phptemplate_callback('menu_links', array('links' => $links));
}

menu_links.tpl.php

<?php
/* span tags für die primary links */
function theme_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$output .= "><span>". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</span></li>\n";
  }
 
$output .= '</ul>';

  return
$output;
}
?>

<?php
print $output; // das hatte ich auch schon direkt unter "return $output;"
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

span tags für die primarys

Eingetragen von quiptime (4972)
am 12.12.2007 - 12:39 Uhr

<?php
/* span tags für die primary links */
function theme_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$output .= "><span>". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</span></li>\n";
  }
 
$output .= '</ul>';

  print
$output;
}
?>

 

Zitat:

denn eigentlich sollen die <span> zwischen <a href=""> und </a> stehen.

<?php
/* span tags für die primary links */
function theme_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$title = '<span>'.$link['title'].'</span>';
   
$output .= ">". l($title, $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
  }
 
$output .= '</ul>';

  print
$output;
}
?>

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich wundere mich doch sehr,

Eingetragen von aschiwi (1113)
am 12.12.2007 - 14:49 Uhr

ich wundere mich doch sehr, dass trotzdem nichts geht. ich vermute, es liegt daran wie mein theme die primary links anspricht? das wäre so:

<?php print theme('links', $primary_links) ?>

ich stelle mich bestimmt furchtbar blöd an, aber geht leider nicht anders :-( und danke nochmal für die geduldige hilfe schon bisher!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das bisher gesagte bleibt

Eingetragen von quiptime (4972)
am 12.12.2007 - 15:59 Uhr

Das bisher gesagte bleibt gueltig. Aber eben fuer die Theme Funktion theme_links(). Es wird das gleiche Schema fuer die Erweiterung der "template.php" angewendet und der Code fuer die "links.tpl.php", um es schnell zu machen, steht hier: http://api.drupal.org/api/function/theme_links/5

Im Code der function theme_links() muss, wenn er sich in der links.tpl.php befindet, die letzte Zeile

return $output;

ersetzt werden mit

print $output.

Der Code dieser Theme Funktion bildet gegebenfalls bereits span Tags an den Links. Wenn keine zu sehen sind dann ist dieser Codebereich zustaendig um span Tags nachtraeglich einzufuegen:

<?php
if (isset($link['href'])) {
 
$output .= l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, $html);
}
?>

Um die span Tags hier einzufuegen das Codebeispiel wie weiter oben schon gepostet verwenden:
<?php
if (isset($link['href'])) {
 
$title = '<span>'.$link['title'].'</span>';
 
$output .= l($title, $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, $html);
}
?>
Sollte so gehen.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo quiptime, ich habe

Eingetragen von aschiwi (1113)
am 10.01.2008 - 14:27 Uhr

Hallo quiptime,

ich habe mich nochmal rangewagt, nachdem der letzte Versuch mit dem von dir geposteten nicht funktioniert hatte. Ich bin mir ganz sicher, dass das an mir lag und nicht an dir, Fakt war nun aber dass ich es so nicht hingekriegt hab... Nun bin ich dieser Anleitung (http://www.usingdrupal.com/node/20) gefolgt und hatte endlich Erfolg. Folgendes habe ich gemacht:

1. den Code für die Ausgabe der Primary Links in meiner page.tpl.php geändert (hätte ich wohl vorher schon mal probieren sollen). Jetzt werden sie mit <?php print theme('menu_links', $primary_links); ?> ausgegeben (vorher ohne "menu_").
2. in die template.php:

function phptemplate_menu_links($links) {
  if (!count($links)) {
    return '';
  }
  $level_tmp = explode('-', key($links));
  $level = $level_tmp[0];
  $output = "<ul class=\"links-$level\">\n";
  foreach ($links as $index => $link) {
    $output .= '<li';
    if (stristr($index, 'active')) {
      $output .= ' class="active"';
    }
    $output .= ">". l('<span>'.$link['title'].'</span>', $link['href'], /* hier sind die span tags */
$link['attributes'], $link['query'], $link['fragment'],$absolute, $html = TRUE) ."</li>\n"; /* und in dieser Zeile html erlauben */
  }
  $output .= '</ul>';

  return $output;
}

Ich danke dir trotzdem für deine geduldige Hilfe - nicht so leicht wenn jemand wie ich keine Ahnung hat, worum es geht :-)

LG
Anja

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, ich habe das gleiche

Eingetragen von Horster (8)
am 31.05.2008 - 04:58 Uhr

Hallo,

ich habe das gleiche Problem und muss weitere Tags im a Tag unterbringen. Bei der ersten Lösung wird das Standardverhalten nicht überschrieben.
Beider zweiten Lösung wird gar kein Menü mehr ausgegeben, obwohl ich den Code 1:1 kopiert habe und in der template.php auch nichts weiter drin steht.

Hier ist meine templte.php:

<?php
function phptemplate_menu_links($links) {
  if (!
count($links)) {
    return
'';
  }
 
$level_tmp = explode('-', key($links));
 
$level = $level_tmp[0];
 
$output = "<ul class=\"links-$level\">\n";
  foreach (
$links as $index => $link) {
   
$output .= '<li';
    if (
stristr($index, 'active')) {
     
$output .= ' class="active"';
    }
   
$output .= ">". l('<b></b><em>'.$link['title'].'</em>', $link['href'], /* hier sind die span tags */
$link['attributes'], $link['query'], $link['fragment'],$absolute, $html = TRUE) ."</li>\n"; /* und in dieser Zeile html erlauben */
 
}
 
$output .= '</ul>';

  return
$output;
}

und hier der aufruf im Seitentemplate:
<?
php print theme('menu_links', $primary_links)
?>

Danke

  • Anmelden oder Registrieren um Kommentare zu schreiben

Heyho

Eingetragen von Lefthanded (21)
am 03.12.2008 - 17:58 Uhr

<?php
function phptemplate_menu_links($links) {

achte darauf den Namen deines Templates zu verwenden. Dann sollte es auch klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Um weitere Fragen zu vermeiden. Gemeint ist ...

Eingetragen von quiptime (4972)
am 03.12.2008 - 18:39 Uhr
Zitat:

achte darauf den Namen deines Templates zu verwenden

Um weitere Fragen zu vermeiden. Gemeint ist der Name des Themes.

Beispiel fuer das Theme Zen Classic:

<?php
function zen_classic_menu_links($links)
?>

Die zu verwendenden Theme-Bezeichnungen kann man beispielsweise in der Theme-Administration erfahren wenn man mit der Maus ueber dem Link konfigurieren (des entsprechenden Themes) ist und dabei in die Statuszeile des Browser guckt.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

span-Tags in a-Anker einfügen unter Drupal 6

Eingetragen von drupal-blog-ers... (70)
am 02.06.2009 - 19:58 Uhr

Hallo,

gibt es für dieses Problem bereits eine Lösung für Drupal 6? Ich möchte zwischen meine Primary-Links ein span-Tag einfügen. Also in etwas so:

<a href="#" title=""><span>Link</span></a>

Hat jemand eine Idee? Ich versuche mich gerade in D6 einzufuxen.

Dankeschöööön!!

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was soll das bringen?

Eingetragen von quiptime (4972)
am 02.06.2009 - 20:11 Uhr

Warum willst Du in die Primarys SPAN Tags einfuegen? Was soll das bringen?

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Einfach um die Links per CSS

Eingetragen von drupal-blog-ers... (70)
am 02.06.2009 - 20:18 Uhr

Einfach um die Links per CSS besser stylen zu können. Siehe: CSS Button

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

SPAN Tags um Primary Links mittels jQuery

Eingetragen von quiptime (4972)
am 02.06.2009 - 20:53 Uhr

Eventuell etwas unkonventionell.

SPAN Tags um Primary Links mittels jQuery. Hier der Code:

$('#primary li a').wrap('<span></span>');

Wer will kann das gleich hier auf DrupalCenter testen und den Primary Links mit diesem Code SPAN Tags verpassen. Fuer diesen Test einfach im Firebug die Console fuer diese Website aktivieren und den Code einfuegen und auf "Ausfuehren" klicken. Und schon haben die Primary Links von DrupalCenter SPAN Tags.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Na das ist wirklich

Eingetragen von drupal-blog-ers... (70)
am 02.06.2009 - 21:00 Uhr

Na das ist wirklich unkonventinell :) Aber ne gute Idee.

Davon mal abgesehen - wie sieht denn die Drupallösung aus? Ne Idee?

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Drupal-Loesung ergibt

Eingetragen von quiptime (4972)
am 02.06.2009 - 21:06 Uhr

Die Drupal-Loesung ergibt sich aus den Posts weiter oben.

Bleibt noch die Frage: Drupal 5 oder 6?

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

D6 - die Lösungsansätze

Eingetragen von drupal-blog-ers... (70)
am 02.06.2009 - 21:13 Uhr

D6 - die Lösungsansätze oben scheinen bei D6 nicht zu funktionieren. Zumindest bei mir nicht :-/

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Korrekt. Deswegen meine Nachfrage zur Version.

Eingetragen von quiptime (4972)
am 02.06.2009 - 22:52 Uhr
Zitat:

D6 - die Lösungsansätze oben scheinen bei D6 nicht zu funktionieren.

Korrekt. Deswegen meine Nachfrage zur Version.

In D6 kann man eine Template Datei direkt ohne Umweg ueber die template.php erzeugen und im Themeordner ablegen. Die Template Datei heisst "links.tpl.php" und enthaelt den Code der Themefunktion theme_links() (ohne Funktionszeile).

Das ist alles.

FETTES EDIT

Das gilt zwar so aber man kommt damit nicht an die Primary Links heran.

------------------------
Quiptime Group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Irgendwie will es noch

Eingetragen von drupal-blog-ers... (70)
am 03.06.2009 - 19:41 Uhr

Irgendwie will es noch nicht. Ich hab jetzt die "links.tpl.php" angelegt und folgenden Code hinzugefügt:

<?php

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)) .'>';

      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;

?>

Muss ich das jetzt noch irgendwie einbinden? Vielen Dank für Deine Hilfe.

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe letztens mein

Eingetragen von aschiwi (1113)
am 04.06.2009 - 09:23 Uhr

Ich habe letztens mein Template mit span-Tags in Primary Links von D5 zu D6 "geportet" und dafür auch den neuen Code gebraucht. So hat's funktioniert:

<?php
/** Span tags in Primary Links
*/
function phptemplate_links($links, $attributes =  array('class' => 'links')) {
 
$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()))) {
       
$class .= ' active';
      }
     
$output .= '<li'. drupal_attributes(array('class' => $class)) .'>';

      if (isset(
$link['href'])) {
       
$link['title'] = '<span class="link">' . check_plain($link['title']) . '</span>';
       
$link['html'] = TRUE;    
       
// 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;
}
?>

***edit
bin nicht ganz sicher, ob es auch mit dem normalen primary links code in der page.tpl.php ging (verwende inzwischen ein anderes theme) - aber hier zur sicherheit der code zur ausgabe der primary links in der page.tpl.php

<?php if (isset($primary_links)) { ?><?php print theme('links', $primary_links, array('class' =>'links', 'id' => 'navlist')) ?><?php } ?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

primary links

Eingetragen von stBorchert (6003)
am 04.06.2009 - 09:29 Uhr

Und wer die Änderungen nicht gleich für alle Auflistungen von Links machen will, kann sich auch einfach die gegebene Funktion theme_links in seine template.php kopieren und in phptemplate_primary_links umbenennen (und dann dort die Änderungen machen). Diese Funktion wird dann einfach in der page.tpl.php anstelle von

<?php
print theme('links', ...);
?>
für die primary links aufgerufen.

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Super - vielen Dank. Ich hab

Eingetragen von drupal-blog-ers... (70)
am 04.06.2009 - 11:28 Uhr

Super - vielen Dank. Ich hab das Problem gestern auch lösen können ;)

Aber vielen Dank nochmal. Ich habe allerdings noch eine andere Frage. Und zwar, wie man die Primärnavigation in Haupt- und Sekundärlinks unterteilen kann. Dafür lege ich aber nochmal einen eigenen Post an.

EDIT:

Hier der Link: http://www.drupalcenter.de/node/19009

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich glaube du suchst das

Eingetragen von aschiwi (1113)
am 04.06.2009 - 11:16 Uhr

ich glaube du suchst das hier: http://drupal.org/project/menu_block

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das ist schonmal das was ich

Eingetragen von drupal-blog-ers... (70)
am 04.06.2009 - 12:02 Uhr

Das ist schonmal das was ich suche - ich habe aber auch schon http://drupal.org/project/menu_block_split ausprobiert - möchte dort jedoch auch ein span-Tag im Anker haben. Jedoch bekomm ich es nicht hin.

Wenn ich den Block mit Theme Devel auslese, bekomme ich heraus, dass er über die Funktion theme_menu_item_link eingebunden wird. Wenn ich diese:

<?php
function theme_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }

  return
l($link['title'], $link['href'], $link['localized_options']);
}
?>

jetzt in der template.php überschreibe also:

<?php
function themename_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }

  return
themename_l($link['title'], $link['href'], $link['localized_options']);
}
?>

und die Funktion theme_namel($link['title'], $link['href'], $link['localized_options']) (die ich bereits erfolgreich überschrieben habe) aufrufe - passiert garnichts.

Wat is da los?? :)

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

l-Funktion

Eingetragen von stBorchert (6003)
am 04.06.2009 - 12:02 Uhr

Moin.

drupal-blog-erstellen.de schrieb

und die Funktion theme_namel($link['title'], $link['href'], $link['localized_options']) (die ich bereits erfolgreich überschrieben habe) aufrufe - passiert garnichts.

Ganz einfach: die Funktion "theme_namel" existiert nicht. l() ist eine Core-Funktion, die nicht überschrieben werden kann. Nur Funktionen mit "theme_" am Anfang können so überschrieben werden.

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay - hab ich verstanden.

Eingetragen von drupal-blog-ers... (70)
am 04.06.2009 - 12:15 Uhr

Okay - hab ich verstanden. Wenn ich jetzt jedoch:

<?php
function theme_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }

  return
l($link['title'], $link['href'], $link['localized_options']);
}
?>

mit

<?php
function themename_menu_item_link($link) {
  if (empty(
$link['localized_options'])) {
   
$link['localized_options'] = array();
  }

  echo
"test";

  return
l($link['title'], $link['href'], $link['localized_options']);
}
?>

überschreibe bekomme ich keine Ausgabe "test". Ich gehe davon aus, dass die Funktion erst garnicht aufgerufen wird - müsste doch aber, oder?

--------------------------
www.drupal-blog-erstellen.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Theme-Registry

Eingetragen von stBorchert (6003)
am 04.06.2009 - 12:23 Uhr

Moin.
Hast Du die Theme-Registry geleert?
Und nur zur Sicherheit: der Funktionsname beginnt mit dem Namen Deines Themes?

hth,

 Stefan

--
sei nett zu Deinem Themer

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank

Eingetragen von drupal-blog-ers... (70)
am 04.06.2009 - 12:30 Uhr

Super, das war es.

Vielen Dank Stefan sagt der Stefan :)

--------------------------
www.drupal-blog-erstellen.de

  • 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 15 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • 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 12 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 20 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