it-swarm-vi.com

Tùy chỉnh đầu ra liên kết menu

Trong Drupal 7, làm cách nào tôi có thể chặn hiển thị menu trong template.php và thêm đường ống sau khi liên kết menu?

Tôi đã thử sử dụng template_pre process_menu_tree nhưng tôi không nghĩ đó là thứ tôi đang tìm kiếm. Tôi muốn thay đổi cấu trúc HTML của một vài menu.

7
Kevin

theme_menu_link () đã lừa. Nó chứa một mảng dưới phần tử của #original_link có tên menu trong đó. Sử dụng điều đó, tôi có thể thêm các liên kết giới hạn đường ống vào các menu nhất định.

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

7
Kevin

Điều này có thể hữu ích. Bạn có thể sử dụng các chức năng tiền xử lý để thay đổi hoặc thêm một cái gì đó vào liên kết menu.

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

Trong khoảng mã này được thêm vào mỗi mục liên kết điều hướng.

5
kalabro

Cá nhân tôi chỉ cần thêm đường ống bằng CSS - bạn không thực sự muốn các đường ống trong đánh dấu của mình vì chúng hoàn toàn mang tính trình bày:

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

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

Menu được theo chủ đề với chức năng theme_links. Bạn sẽ muốn tạo một bản sao trong [thư mục chủ đề] /MYTHEME/template.php và đổi tên nó thành MYTHEME_links. Bạn có thể tìm thấy hàm mặc định cho drupal 7 bằng cách truy cập: http://api.drupal.org/api/drupal/includes--theme.inc/feft/theme_links/ 7

Bây giờ bạn sẽ có thể tùy chỉnh giao diện của các menu từ tệp template.php.

1
Gelus

Tôi khuyên bạn nên sử dụng một plugin cho việc này. Hướng dẫn đầy đủ tại đây: Tạo liên kết menu với đánh dấu html trong 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
Stef Van Looveren

Sử dụng HTML trong một tùy chọn menu cũng rất hữu ích từ một mô-đun, tức là chèn một hình ảnh dưới dạng tùy chọn menu. Có cách nào để sử dụng cái gì đó như function MODULE_preprocess_menu_link(&$variables).

Tái bút: Tôi cũng sẽ hỏi đây là một câu hỏi riêng biệt.

0
Gabriel R.