メニューリンク出力のカスタマイズ


7

Drupal 7では、template.phpでメニューレンダリングをインターセプトし、メニューリンクの後にパイプを追加するにはどうすればよいですか?

template_preprocess_menu_treeを使用してみましたが、それが私が探しているものではないと思います。いくつかのメニューのHTML構造を変更したいと思います。


メニューリンクのことですか、それともメニューローカルタスクリンクのことですか?
kiamlaluno

ローカルタスクではなく、カスタムメニュー、メインメニュー。
ケビン

2013年9月27日のコメントメニューオプションでのHTMLの使用は、モジュールからも非常に役立ちます。つまり、メニューオプションとして画像を挿入します。以下のような使用の何かをする方法はありますfunction MODULE_preprocess_menu_link(&$variables)。PS:これも別の質問として尋ねます。
Gabriel R.

回答:



5

これは役に立ちます。前処理機能を使用して、メニューリンクを変更または追加できます。

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

このコードでは、すべてのナビゲーションリンクアイテムにスパンが追加されています。


5

個人的には、CSSを使用してパイプを追加するだけです-パイプは純粋にプレゼンテーションであるため、マークアップにパイプを必要としません。

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

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

1

メニューは、theme_links関数でテーマ化されています。[themes folder] /MYTHEME/template.phpにコピーを作成し、その名前をMYTHEME_linksに変更します。drupal 7のデフォルト関数は、次の場所にあります。http//api.drupal.org/api/drupal/includes--theme.inc/function/theme_links/7

これで、template.phpファイルからメニューの外観をカスタマイズできるようになります。


これも機能していません。コンテキストリンクのみをダンプします($ variablesでkrumoおよびvar_dumpを使用)。これは私がD6でかなり確かに使用したものですが、メニューブロックのメニューに触れていないようです。
ケビン

私はこれを特定のメニューに対してのみ行う必要がありました、この答えは役に立ちました。theme_menu_linkには、メニューに関する配列が含まれているため、特定のメニューの場合は出力を調整できます。stackoverflow.com/questions/2317462/...
ケビン

0

これにはプラグインを使用することをお勧めします。ここで完全なチュートリアル:drupal 8でHTMLマークアップを使用してメニューリンクを作成する

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;
  }

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.