2016-09-14 17 views
0

私はDrupalを初めて使用しています。私は非常に好きです。私は自分でそれを学んでいるが、私は今問題に固執している。Drupal 8 - リンクにクラスを追加する

タイトルとリンクのリストを表示するカスタムブロックを作成しました。したがって、そのブロック内の唯一のフィールドはタイプリンクです。私のフッタ領域のブロックです。ユーザーがクリックすると、新しいタブで新しいウェブサイトが開きます。

は、私はちょうどこのブロックタイプ用のHTML出力を変更したいので、私はこのテーマを提案取った: フィールド - ブロック - コンテンツ - フィールド - リンク - フッター-links.html.twigを

私の問題は、すべての<a>タグにクラスを追加する方法ですか?

私はモジュール 'リンククラス'を使ってみました。それはバグがあります。モジュールをインストールする前に、cssにすでに存在するクラスだけを読み込みます。モジュールのインストール後に作成された新しいクラスは読み込まれません。私は別のものを試して、何度もキャッシュをクリアしましたが、変です。モジュールなしでクラスを追加するには、より良い方法が必要です。

誰でも私を助け、私の<a>タグにクラスを追加する最良の方法を教えてください。

ありがとう:)

をここで

{% if label_hidden %} 
    {% if multiple %} 
    <div{{ attributes }}> 
     {% for item in items %} 
     <div{{ item.attributes }}>{{ item.content }}</div> 
     {% endfor %} 
    </div> 
    {% else %} 
    {% for item in items %} 
    {{ item.content }} -------------> add class here 
    {% endfor %} 
    {% endif %} 
{% else %} 
    <div{{ attributes }}> 
    <div{{ title_attributes }}>{{ label }}</div> 
    {% if multiple %} 
     <div> 
    {% endif %} 
    {% for item in items %} 
     <div{{ item.attributes }}>{{ item.content }}</div> 
    {% endfor %} 
    {% if multiple %} 
     </div> 
    {% endif %} 
    </div> 
{% endif %} 

答えて

0

のデフォルトのテンプレートは、それはあなたがそのカスタムブロックを構築する方法によって異なります。しかし、いくつかのクラスを追加するだけで新しいテンプレートを作成するのはちょっと残念だと言ったように。だからここ

は、一般的にリンクを作成する方法についていくつかの良い答えであり、またそれらにクラスなどの属性を追加する方法: https://drupal.stackexchange.com/questions/144992/how-do-i-create-a-link

異なる状況のためにわずかに異なる答えがありますので、あなたに合ったものを自分で探してケースベスト。

3

置き換え{{item.content}}ハードコーディングされたリンクを持つ:

<a href="{{ item.content['#url']|render }}" {% if item.content['#options']['external'] %} target="_blank" {% endif %} class="some class here">{{ item.content['#title'] }}</a> 

それとも、あなたはクラスのオプションをマージすることができますしたい場合:

{{ item.content|merge({'#options': {'attributes': {'class': ['some', 'class', 'here']}}}) }} 
0

私は、あまりにも、トラブルのリンクを拡張を持っていますDrupal 8で。 Drupalはシステムのリンク値をレンダリングしたいと考えています。

私の試行は、通常パターン通りです: 1.フィールドを使用する場合は、twigオーバーライドでクラスをビューに追加してください。

  1. これができない場合は、テーマフックを確認し、属性を使用してクラスを追加してください。 (ChromeのDrupalテンプレートヘルパー拡張機能が役立ちます)親ULにはクラスを追加できましたが、Aは追加できませんでした。

  2. twigテンプレートのキーをチェックし、{{var.name [#url]}}を明示的に使用してレンダリングします。 (ブートストラップDrupalのテーマは、彼らのmenu.html.twigでこれを行います!)例:

     a href="{{ item.url }}" class="dropdown-toggle" data-target="#" data-toggle="dropdown">{{ item.title }}
  3. これら3つの試みが失敗した場合...Javascriptで属性を追加します。

    のjQuery( 'コメント禁制。 ')親()addClass(' リストunstyled')。。。

私はnode.html.twigに(コメントを投稿するには、ログインまたは登録)ノードリンクにクラスを追加しようとしたと、エラーが表示された:#lazy_builderコールバックがある場合は

$variables['content']['links']['#attributes']['class'][] = 'list-unstyled'; 

プロパティーは存在しません。すべてのプロパティは、#lazy_builderコールバックによって生成されなければなりません。 #attributesという属性を指定しました。 Drupalの\コアで\ \ Renderer-> doRender(レンダリング)

1

PHPを使用して要素をレンダリングするHTMLを構築することを好む人のために。 かなり典型的なリンク:

$elements[$delta] = [ 
    '#type'  => 'link', 
    '#title'  => $value, 
    '#url'  => Url::fromUri('mailto:' . $value), 
    '#attributes' => [ 
     'class' => ['myClass'] 
    ] 
    ]; 
関連する問題