【Drupal】レンダリングAPIでリストタグを出力する

こちらのサイトではDRUPAL10に関連する記事を掲載しています。

Drupal を使用すると、文字列の配列を順序付きまたは順序なしの HTML リストに簡単に変換できます。 '#theme' => 'item_list'レンダリング配列内の要素。 これは通常、コンテンツへのリンク、モジュールの設定値、ページを閲覧した全員の名前などのリストを表示するためにモジュール開発者によって行われます。 リストの表示は、コンテンツ管理システムにとって非常に一般的なタスクです。

HTMLリストを出力する

順序なし ( <ul>) または注文した ( <ol>) レンダー配列内のリストでは、 '#theme' => 'item_list'要素タイプ。

マークアップは item-list.html.twigテンプレートを介してレンダリングされます。

要素固有のプロパティ

以下の固有のプロパティに加えて、 #item_list要素では、 すべてのレンダー配列で使用できる共通のプロパティを使用することもできます。

#it​​ems : リストに表示される項目の配列。 各項目は文字列またはレンダリング配列のいずれかになります。 もしも #type, #theme、 また #markupプロパティは子のレンダリング配列には指定されず、親リストから継承されるため、呼び出し元はすべてのネストされた子リストのレンダリング プロパティを明示的に指定して繰り返す必要がなく、より大きなネストされたリストを指定できます。

#title : リストのタイトル。

#list_type : リスト要素のタグ、「ul」または「ol」。

#wrapper_attributes : リスト ラッパーに適用される HTML 属性。 すべてのテーマがラッパーを実装しているわけではないことに注意してください。 ファイルを比較します のitem-list.html.twig Classy ( core/themes/classy/templates/dataset/item-list.html.twig ) と Stable9 ( core/themes/stable9/templates/dataset/item-list.html ) 。小枝)。

#empty : 項目がない場合に表示するメッセージ。 許可される値は文字列またはレンダリング配列です。

簡単な例:

$build['list'] = [
  '#theme' => 'item_list',
  '#items' => [
    $this->t('This is some text that should be put in a list'),
    $this->t('This is some more text that we need in the list'),
  ],
];

より複雑な例:

$items = array();
// A simple string item.
$items[] = 'Simple string';

// A simple string item as render array.
$items[] = [
  '#markup' => 'Simple <span>#markup</span> string',
];

// Set custom attributes for a list item.
$items[] = [
  '#markup' => 'Custom item',
  '#wrapper_attributes' => array(
    'class' => array('custom-item-class'),
  ),
];

// An item with a nested list.
$items[] = [
  '#markup' => 'Parent item',
  'children' => [
    'Simple string child',
    [
      '#markup' => 'Second child item with custom attributes',
      '#wrapper_attributes' => [
        'class' => array('custom-child-item-class'),
      ],
    ],
  ],
];

$build['theme_element'] = [
  '#theme' => 'item_list',
  '#title' => $this->t('Example of using #theme item_list'),
  '#items' => $items,
];

出力:

<h3>Example of using #theme</h3>
<ul>
  <li>Simple string</li>
  <li>Simple <span>#markup</span> string</li>
  <li class="custom-item-class">Custom item</li>
  <li>Parent item
    <ul>
      <li>Simple string child</li>
      <li class="custom-child-item-class">Second child item with custom attributes</li>
    </ul>
  </li>
</ul>

さいごに

このサイトに関するご意見・ご質問はこちらまで

この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました