it-swarm-id.com

Menyesuaikan output tautan menu

Di Drupal 7, bagaimana saya bisa mencegat rendering menu di template.php dan menambahkan pipa setelah tautan menu?

Saya mencoba menggunakan template_preprocess_menu_tree tapi saya tidak berpikir itu yang saya cari. Saya ingin mengubah struktur HTML dari beberapa menu.

7
Kevin

theme_menu_link () melakukan trik. Ini berisi array di bawah elemen #original_link yang memiliki nama menu di dalamnya. Dengan menggunakan itu, saya dapat menambahkan tautan pipa terbatas ke menu tertentu.

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

7
Kevin

Ini mungkin bermanfaat. Anda dapat menggunakan fungsi preproses untuk mengubah atau menambahkan sesuatu ke tautan menu.

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

Dalam rentang kode ini ditambahkan ke setiap item tautan navigasi.

5
kalabro

Secara pribadi saya baru saja menambahkan pipa dengan CSS - Anda tidak benar-benar ingin pipa di markup Anda karena mereka murni presentasi:

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

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

Menu bertema dengan fungsi theme_links. Anda ingin membuat salinan di [folder tema] /MYTHEME/template.php Anda dan ganti namanya menjadi MYTHEME_links. Anda dapat menemukan fungsi default untuk drupal 7 dengan mengunjungi: http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_links/ 7

Sekarang Anda dapat menyesuaikan bagaimana tampilan menu dari file template.php.

1
Gelus

Saya sarankan untuk menggunakan plugin untuk ini. Tutorial lengkap di sini: Buat tautan menu dengan markup html di drupal 8

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

Menggunakan HTML dalam opsi menu akan sangat berguna dari modul juga, yaitu memasukkan gambar sebagai opsi menu. Apakah ada cara untuk menggunakan sesuatu seperti function MODULE_preprocess_menu_link(&$variables).

PS: Saya juga akan menanyakan ini sebagai pertanyaan terpisah.

0
Gabriel R.