drupal 7のテンプレートにメッセージがあるかどうかを確認したい。7ページテンプレート変数にグローバル変数があった messages
drupal 8になりました。8messages
変数にpage--front.html.twig
は常に空です。別の方法は、領域の強調表示をチェックすることです(ステータスメッセージブロックが強調表示された領域にあるため)しかし、以下のステートメントは常にTRUEを返します。
{% if page.highlighted %}
{% block highlighted %}
<div class="highlighted">{{ page.highlighted }}</div>
{% endblock %}
{% endif %}
drupal 8のページにメッセージが存在することを確認する方法はありますか?
_page.highlighted
_変数にはメッセージ表示用のブロックデータ(_mytheme_messages
_)が含まれていますが、ブロックレンダリングデータにはメッセージ自体が含まれていないため、メッセージの存在を確認する方法はありません。
ただし、現在のメッセージキューに基づいて、カスタム変数を drupal_get_messages()
から挿入できます。
たとえば、MYTHEME.themeの場合:
_/**
* Implements hook_preprocess_page() for page.html.twig.
*/
function MYTHEME_preprocess_page(array &$variables) {
// Inject a flag based on the current message queue.
$variables['available_messages'] = !empty(drupal_get_messages(NULL, FALSE));
}
_
page.html.twig内:
_{% if available_messages == true %}
<!-- TODO: Add custom markup when there are messages -->
{% endif %}
_