web-dev-qa-db-ja.com

ノードタイトルのトークンが機能しないのはなぜですか?

Drupal 8では、メッセージモジュールとメッセージサンプルサブモジュールをアクティブにしました。

これらは、新しいコメントが作成されたときにメッセージを作成するためにテンプレートに追加したフィールドです。

enter image description here

メッセージの内容です。

1)[message:node-title]
2)[message:field_node_reference:entity:title]

これらは、使用可能としてリストされているトークンです。

enter image description here

[message:node-title]は親ノードのタイトルから置き換えられますが、[message:field_node_reference:entity:title]は置き換えられません。どうして?

enter image description here

3
mmtt

_[message:field_node_reference:entity:title]_は、example_create_commentメッセージテンプレートの場合、field_node_referenceフィールドは、有効なノード参照が含まれています。

実際、Message exampleモジュールは次のコードを使用して_[message:node-title]_トークンの値を返します。 ( message_example_tokens() を参照してください。)

_    case 'node-title':
      if ($message->bundle() == 'example_create_comment') {
        $replacements[$original] = $message->field_comment_reference->entity->getCommentedEntity()->label();
      }
      else {
        $replacements[$original] = $message->field_node_reference->get(0)->entity->label();
      }
      break;
_

メッセージバンドル(メッセージテンプレート)がexample_create_commentの場合、field_comment_referenceフィールド($message->field_comment_reference->entity->getCommentedEntity()->label())、他のメッセージテンプレートに使用されるfield_node_referenceフィールドではありません。

_[message:field_node_reference:entity:title]_トークンがTokenモジュールから追加され、コンテンツエンティティが持つ各フィールドのトークンが追加されます。 (Messageはコンテンツエンティティであり、Messageテンプレートはそのバンドルです。)トークンモジュールは、別のfield_node_referenceフィールドに有効な参照が含まれていない場合に使用するフィールド。トークンは置き換えられません。

いずれにしてもノードのタイトルを取得したい場合は、_[message:node-title]_トークンを使用する必要があります。

2
kiamlaluno