Drupal 8のコメント返信フォームにテンプレートの提案はありません。どのように作成できますか? Drupalがテンプレートを提案するノードに表示される返信フォームについて話していません。
field--node--comment--article.html.twig
コメントで[返信]をクリックした後のリダイレクトページのフォームについて話しています。テンプレートの提案はなく、このテンプレートのみが提案されます
form.html.twig
テーマの.themeファイルに特定のテンプレートを作成する方法を教えてください。
あなたが正確に何を達成したいのかは少し不明確です。ただし、フォームに hook_theme_suggestions_HOOK_alter
を実装することで、フォームIDに基づいて別のテンプレート候補を簡単に追加できます。フォームIDは$variables
で確認できます。ただし、ノードルートまたは応答ルートのどちらにいても、comment_comment_form
が返されます。
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function MYTHEME_theme_suggestions_form_alter(array &$suggestions, array $variables) {
$form_id = $variables['element']['#form_id'];
// Add template suggestion based on form ID.
$suggestions[] = 'form__' . $form_id;
}
返信ルートで別のことを実行する場合は、/reply
および/comment
引数の現在のパスを確認できますORルートパラメータにPIDが含まれているかどうかを確認します。これは親コメントIDになります。
/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function MYTHEME_theme_suggestions_form_alter(array &$suggestions, array $variables) {
// Add template suggestion based on form ID.
$suggestions[] = 'form__' . $variables['element']['#form_id'];
// Add template suggestion based on form ID and parent comment ID.
if ($pid = \Drupal::routeMatch()->getParameter('pid')) {
$suggestions[] = 'form__' . $variables['element']['#form_id'] . '__reply';
$suggestions[] = 'form__' . $variables['element']['#form_id'] . '__reply__' . $pid;
}
}
これにより、次のテーマが提案されます。
<!-- FILE NAME SUGGESTIONS:
* form--comment-comment-form--reply--1.html.twig
* form--comment-comment-form--reply.html.twig
* form--comment-comment-form.html.twig
x form.html.twig
-->