Изменение классов меню, создание шаблона

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

Аватар пользователя airam airam 14 сентября 2008 в 12:08

Создаю примари линк в шаблоне
пишу

<?php if (isset($primary_links)) : ?>
   <?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
<?php endif; ?>

получаю:

   <ul class="links primary-links">
      <li class="menu-122 first"><a href="http://localhost/?q=node/1" title="Меню1">Меню1</a></li>
      <li class="menu-129"><a href="http://localhost/?q=node/7" title="Меню2">Меню2</a></li>
      <li class="menu-137 last"><a href="http://localhost/?q=node/11" title="Меню3">Меню3</a></li>
   </ul>

но я не хочу в коде:

<li class="menu-137 last">

видеть menu-137, если честно то и last мне лишнее.. как их убрать?
и оставить чистый без лишнего класс active

Комментарии

Аватар пользователя direqtor direqtor 15 сентября 2008 в 5:09

А чем мешают лишние классы? Разве что количеством кода... Но сегодня это не так актуально как пять лет назад. А их наличие в таком виде позволяет подкрасить через CSS любой пункт меню.

Аватар пользователя airam airam 16 сентября 2008 в 5:06

если предугадать присвоение номера в меню..
мне нужно просто выделить активную.. и сейчас появилась возможность не меняя css просто сгенерировать под нее страничку с нужными классами

Аватар пользователя airam airam 16 сентября 2008 в 6:48

вставил в template.php

function phptemplate_links($links, $attributes = array('class' => 'links')) {
  $output = '';
 
  if (count($links) > 0) {
    $num_links = count($links);
    $i = 1;
 
    $items_str = '';
    foreach ($links as $key => $link) {
      $class = '';
 
      // Automatically add a class to each link and also to each LI
      if (isset($link['attributes']) && isset($link['attributes']['class'])) {
        $link['attributes']['class'] .= ' ' . $key;
        $class = $key;
      }
      else {
        $link['attributes']['class'] = $key;
        $class = '';
      }
 
      // Add first and last classes to the list of links to help out themers.
      $extra_class = '';
 
      // Is the title HTML?
      $html = isset($link['html']) && $link['html'];
 
      // Initialize fragment and query variables.
      $link['query'] = isset($link['query']) ? $link['query'] : NULL;
      $link['fragment'] = isset($link['fragment']) ? $link['fragment'] : NULL;
 
 
      //Check if we have a link, for sometimes we need to output just a splain string.
      //A class can only contain spaces, hyphens or underscores. Translate these to underscores.
      $func_class = strtr($link['attributes']['class'], '- ', '__');
      //dpm($func_class);
      if (isset($link['href'])) {
        //First, see if we have a theme function for this class
        if (!empty($func_class) && ($function = theme_get_function('links_'. $func_class))) { //then,  look for a theme function based on the class.
          dpm($function);
          $items_str .= theme('links_'. $func_class, $link);
        }
        else { //If no specific function was found, fall back to a default.
          $items_str .= '<li class="'. $extra_class . $class .'">';
          $items_str .= l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, $html);          $items_str .= "</li>\n";  
        }
      }  
      else if ($link['title']) {
        //Some links are actually not links, but we wrap these in <span> for adding title and class attributes
        if (!$html) {
          $link['title'] = check_plain($link['title']);
        }
        $items_str .= '<span'. drupal_attributes($link['attributes']) .'>'. $link['title'] .'</span>';
      }
 
      $i++;
    }
    $output = '<ul'. drupal_attributes($attributes) .'>'. $items_str .'</ul>';
  }
 
  return $output;
}

но никаких изменений в конечном варианте..
чем это может быть вызвано?
при внесении аналогичных изменений в theme.inc - все работает, но шаблон тогда теряет свою универсальность..

Аватар пользователя Sinn Sinn 18 мая 2009 в 21:22

"direqtor" wrote:
А чем мешают лишние классы?

Мешают для раскрутки. Сайты с легким содержимым лучше индексируются.