Drupal Güzel Menüler A etiketleri içinde Aralığı Ekleme

1 Cevap php

Ben kapı CSS yuvarlama kayar metin kullanan bir drupal tema açılır menüler eklemek çalışıyorum.

Geçerli sürüm çalışıyor bir etiketleri içine yayılma birincil bağlantılar enjeksiyon kullanır. Ama menüleri desteklemiyor.

Çalışma kodu:

<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>

Bir template.php dosya ilavesi ile şablonda:

<?php
// function for injecting spans inside anchors which we need for the theme's rounded corner background images
function strands_guybrush_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;
}
?>

Yani Nice Menu module iyi çalışıyor ve şimdi kullanarak şablondan ele benim navigasyon menü fonksiyonları aşağı damla sağlayan ekledi:

<?php   print theme_nice_menu_primary_links() ?>

Sorun bir etiketleri seçilen devlet biçimlendirme için izin iç açıklıklı olması gerektiğidir. Ben bağlantıları oluşturmak için güzel menüler tarafından kullanılan drupal fonksiyon menu_item_link düzenlemek için bulabildiğim her açıyı denedim.

Örneğin Ben iki gün hiçbir sevinç için drupal forumda baktım.

Bağlantıları kurmak modülünde hatları şunlardır:

function theme_nice_menu_build($menu) {
  $output = '';
  // Find the active trail and pull out the menus ids.

  menu_set_active_menu_name('primary-links');
  $trail = menu_get_active_trail('primary-links');
  foreach ($trail as $item) {
    $trail_ids[] = $item['mlid'];
  }

  foreach ($menu as $menu_item) {
    $mlid = $menu_item['link']['mlid'];
    // Check to see if it is a visible menu item.
    if ($menu_item['link']['hidden'] == 0) {
      // Build class name based on menu path
      // e.g. to give each menu item individual style.
      // Strip funny symbols.
      $clean_path = str_replace(array('http://', '<', '>', '&', '=', '?', ':'), '', $menu_item['link']['href']);
      // Convert slashes to dashes.
      $clean_path = str_replace('/', '-', $clean_path);
      $class = 'menu-path-'. $clean_path;
      $class .= in_array($mlid, $trail_ids) ? ' active' : '';  
      // If it has children build a nice little tree under it.
      if ((!empty($menu_item['link']['has_children'])) && (!empty($menu_item['below']))) {
        // Keep passing children into the function 'til we get them all.
        $children = theme('nice_menu_build', $menu_item['below']);
        // Set the class to parent only of children are displayed.
        $class .= $children ? ' menuparent ' : '';
        // Add an expanded class for items in the menu trail.
        $output .= '<li id="menu-'. $mlid .'" class="'. $class .'">'. theme('menu_item_link', $menu_item['link']);
        // Build the child UL only if children are displayed for the user.
        if ($children) {
          $output .= '<ul>';
          $output .= $children;
          $output .= "</ul>\n";
        }  
        $output .= "</li>\n";
      }  
      else {
        $output .= '<li id="menu-'. $mlid .'" class="'. $class .'">'. theme('menu_item_link', $menu_item['link']) .'</li>'."\n";
      }  
    }  
  }
  return $output;
}

Gördüğünüz gibi $ çıkış bağlantıları içine dizi ayrıştırmak için menu_item_link kullanır ve seçilen navigasyon bağlantı aktif sınıfını ekledi.

Soru nasıl bir etiketleri içinde bir yayılma eklerim VEYA nasıl sürgülü kapı bağlantıları stil aktif sınıf olan bir yayılma ile bir etiketlerini şal yapmak nedir?

1 Cevap

Eğer bir yayılma ile bir etiketlerini kaydırmak istiyorsanız, theme_nice_menu_build üzerine ve çıkış için yayılma ekleyebilirsiniz. Eğer bir etiketi içinde isterseniz menu_item_link üzerine yazmak gerekir.

Eğer bir işlev çağrısı your_theme_name_function_name ve Drupal biçimlendirme yerine varsayılan birini işlemek için bu işlevi kullanın olacak yaratılmasıyla bir tema funciton üzerine yazabilirsiniz. Bu şekilde imlemeyi istediğiniz şekilde değiştirebilir. Bu fonksiyon temanın template.php dosyasında olmalıdır.

Başlamak için iyi bir yolu üzerine ve sadece beğenisine değiştirmek istediğiniz işlevi kopyalamak için.

Bir çok Drupal 4.7 yana oldu, ben bunu kullanabilirsiniz umut yok. Bu span etiketleri eklemek oldukça kolaydır:

function your_theme_name_menu_item_link($link) {
  if (empty($link['localized_options'])) {
    $link['localized_options'] = array();
  }
  $link['localized_options']['html'] = TRUE;
  return l('<span>' . $link['title'] . '</span>', $link['href'], $link['localized_options']);
}

Bu test edilmiş ve gayet güzel çalışıyor.