Сделать видимым описание у пунктов Primary Links

Главные вкладки

Аватар пользователя A5lex A5lex 7 октября 2010 в 11:44

Нужно вывести описание (description) из Primary links в span, чтобы получить примерно следующее

Есть код, который при вставке в PHPTemplate делает это, но для всех ссылок, а нужно только для Primary links.

Вот пример на теме garland

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

      if (isset($link['href'])) {
           
            if ('$primarylinks') {
                $link['html'] = true;
                $output .= l($link['title'] . '<span>' . $link['attributes']['title'] . '</span>', $link['href'], $link);
            } else {
                $output .= l($link['title'], $link['href'], $link);
            }
        // 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;
}

код был взят здесь
не работает условие if ('$primarylinks')

сделал так, место

if ('$primarylinks') {
    $link['html'] = true;
    $output .= l($link['title'] . '<span>' . $link['attributes']['title'] . '</span>', $link['href'], $link);
} else {
    $output .= l($link['title'], $link['href'], $link);
}

поставил код

$link['html'] = true;
$output .= l($link['title'] . '<span>' . $link['attributes']['title'] . '</span>', $link['href'], $link);

но он срабатывает для всех ссылок с атрибутом «title»

помогите правильно задать условие в PHPtemplate именно для Primary links

Комментарии

Аватар пользователя A5lex A5lex 7 октября 2010 в 13:51

в том то и дело, что не знаю как правильно указать условие если ссылка находится в Primary links

так как в php не силен, а в api друпаловском тем более, пришлось пробовать все что под руку попадало и методом «тыка» решил задачу вставкой данного кода в template.php

function template_preprocess_page(&$vars) {
   
    $links = $vars['primary_links'];
   
    foreach ($links as $key => $link) {
        $links[$key]['html'] = true;
        $links[$key]['title'] = $link['title'] . '<span>' . $link['attributes']['title'] . '</span>';
    }
   
    $vars['primary_links'] = $links;
}