Separator dla odnośników secondary_links

Chcę odchudzić dodatkowe linki ze zbędnego mi kodu HTML. Wiem, że można to zrobić za pomocą własnej funkcji w template.php. Niestety nie potrafię ułożyć poprawnego kodu. Przeglądałem moduły w poszukiwaniu pierwotnej takiej funkcji (chciałem utworzyć własną na jej podstawie), ale nie znalazłem. Gdzie może się ona jeszcze znajdować? Chcę uzyskać taki efekt: http://img375.imageshack.us/…nkseckz0.gif

Sposób wyświetlania odpowiedzi

Wybierz preferowany sposób wyświetlania odpowiedzi i kliknij "Zachowaj ustawienia", by wprowadzić zmiany.
Portret użytkownika archetwist

Chcesz usunąć zbędny kod

moderator

Chcesz usunąć zbędny kod HTML czy zmienić wygląd menu? Jedno z drugim nie ma nic (czytaj: prawie nic) wspólnego.

Prawie to co na screenie

Prawie to co na screenie udało mi się uzyskać za pomocą CSS. Żeby jednak uzyskać separatory „|” potrzebuję wyrzucić kody listy (ul, li) i pozostawić same odnośniki. Podałem też to jako przykład, bo później wykorzystam to sobie do innych elementów (wyszukiwarki, czy drzewa nawigacji).

Portret użytkownika archetwist

Funkcja

moderator

Funkcja menu_secondary_links. Jeżeli nie chcesz listy, to będziesz musiał pozbyć się menu_navigation_links. Dodatkowych podpowiedzi może udzielić, polecany już kilkakrotnie na forum, moduł Devel.

Moduł Devel jest na prawdę

Moduł Devel jest na prawdę pomocny, dzięki.

Pojawił się jednak inny problem. W stylu bazującym na ATCK nie chcą nadpisywać się funkcje. Próbowałem na przykładzie breadcrumb. Zmieniałem nazwy funkcji z phptemplate_bre­adcrumb() na atck_breadcrumb(), ast_preproces­s_breadcrumb() itp. Jednak i to nie skutkowało (przedrostki nadawałem na wzór innych użytych w funkcjach template.php motywu ATCK).W Garlandzie sprawa wygląda już lepiej. Udało mi się nadpisać tą funkcję, jednak nie mogę zrobić tak ze wszystkimi. Część funkcji da się nadpisywać, a część nie. Dla sprawdzenia działania dodawałem znak, który miałby być wyświetlony np. obok linku. Przykładowo

<?php
function theme_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 class="'. $class .'">NP. TUTAJ JAKIŚ ZNACZEK CZY NAWET TEN TEKST';

      [...]
?>

Dalszą część funkcji wyciąłem (całość jest tutaj). Tak ma być, czy ja coś źle robię?

Portret użytkownika archetwist

Można nadpisywać tylko

moderator

Można nadpisywać tylko funkcje theme_. Do wstawienia separatora w zupełności to jednak wystarczy. W powyższym przykładzie separator umieściłbym przed </li>. Pamiętaj tylko, że modyfikując tę funkcję wpłyniesz nie tylko na wygląd tego konkretnego menu, ale i innych.

To będę dalej bawił się

To będę dalej bawił się z funkcjami. Najpierw jednak przepiszę styl na bazie Garlanda.

Do wstawienia separatora w zupełności to jednak wystarczy. W powyższym przykładzie separator umieściłbym przed . Pamiętaj tylko, że modyfikując tę funkcję wpłyniesz nie tylko na wygląd tego konkretnego menu, ale i innych.

Tamo podałem tylko dla przykładu.