web-gelistirme-sc.com

Menü bağlantısı çıktısını özelleştirme

Drupal 7'de, template.php içindeki menü oluşturmayı nasıl engelleyebilir ve menü bağlantılarından sonra nasıl boru ekleyebilirim?

Template_preprocess_menu_tree kullanarak denedim ama aradığım şey olduğunu sanmıyorum. Birkaç menünün HTML yapısını değiştirmek istiyorum.

7
Kevin

theme_menu_link () hile yaptı. #original_link Öğesinin altında menü adı bulunan bir dizi içerir. Bunu kullanarak, belirli menülere sınırlandırılmış bağlantılar ekleyebilirim.

http://api.drupal.org/api/drupal/includes--menu.inc/function/theme_menu_link/7

7
Kevin

Bu yardımcı olabilir. Menü bağlantısını değiştirmek veya menü bağlantısını değiştirmek için önişleme işlevlerini kullanabilirsiniz.

function THEME_preprocess_menu_link(&$variables) {
  $variables['element']['#below']['#markup'] = ' <span>→</span>';
}

Bu kod aralığına her navigasyon bağlantı öğesine eklenir.

5
kalabro

Şahsen sadece CSS ile boruyu eklerdim - boruları işaretlemenizde istemezsiniz, çünkü bunlar sadece sunum amaçlıdır:

.breadcrumb li:after {
  content: "|";
  margin: 0 5px; // optional styling nicety
}

.breadcrumb li:last-child::after {
  content: "";
}
5
danbohea

Menüler, theme_links işlevi ile temalıdır. [Temalar klasörünüz] /MYTHEME/template.php içinde bir kopya oluşturmak ve MYTHEME_links olarak yeniden adlandırmak istersiniz. drupal 7 için varsayılan işlevi şu adresi ziyaret ederek bulabilirsiniz: http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_links/ 7

Artık menülerin template.php dosyasından nasıl görüneceğini özelleştirebileceksiniz.

1
Gelus

Bunun için bir eklenti kullanmanızı öneririm. Burada tam öğretici: drupal 8 içinde html işaretlemesiyle bir menü bağlantısı oluşturun

namespace Drupal\MYMODULE\Plugin\Menu;

use Drupal\Core\Menu\MenuLinkDefault;

/**
 * A menu link that displays number of points.
 */
class MyMessagesMenuLink extends MenuLinkDefault {

  /**
   * {@inheritdoc}
   */
  public function getTitle() {
    $count = 0;
    if(\Drupal::currentUser()->isAuthenticated()) {
      // Load in your count here
      ...
    }
    return $this->t('My messages <span class="badge badge-dark">@count</span>', ['@count' => $count]);
  }

  /**
   * {@inheritdoc}
   */
  public function getCacheMaxAge() {
    return 0;
  }

}
0

Bir menü seçeneğinde HTML kullanmak, bir modülden de çok faydalı olacaktır, yani bir menü seçeneği olarak bir görüntü eklemek. function MODULE_preprocess_menu_link(&$variables) gibi bir şey kullanmanın bir yolu var mı?.

Not: Bunu da ayrı bir soru olarak soracağım.

0
Gabriel R.