1

I'm attempting to theme a node add form for my new slide show content type in D8 using an example for D7 that I found here, but I'm not having much luck.

I've made and enabled a module named modulename, and have this in modulename.module:

function modulename_theme($existing, $type, $theme, $path) {
  return array(
    'slide_show_node_form' => array(
      'render element' => 'form',
      'template' => 'slide-show-node-form'
    ),
  );
}

and in modulename/templates/slide-show-node-form.html.twig I have this:

test
<div class="layout-node-form clearfix">
  <div class="layout-region layout-region-node-main">
    {{ form|without('advanced', 'actions') }}
  </div>
  <div class="layout-region layout-region-node-secondary">
    {{ form.advanced }}
  </div>
  <div class="layout-region layout-region-node-footer">
    {{ form.actions }}
  </div>
</div>

But, no luck on getting test to print out on the node add page. Any ideas on what I'm missing?

2 Answers 2

0

Try this:

/**
 * Implements hook_form_FORM_ID_alter().
 */
function mymodule_form_node_form_alter(array &$form, array &$form_state, $form_id) {
  $form['#theme'] = 'slide_show_node_form';
}
16
  • Using jshow_forms_form_slide_show_node_form_alter I was able to get dpm to output something, but using $form['#theme'] = 'slide_show_node_form'; within it yielded no results.
    – Samsquanch
    Jun 13, 2014 at 13:26
  • Try hook_form_alter() instead. Sometimes even I don't pick proper form id so I always use this to be sure I get it right and then use the proper form id in the hook_form_FORM_ID_alter for better DX instead of having just one hook_form_alter.
    – user21641
    Jun 13, 2014 at 15:24
  • I actually pulled the form_id from hook_form_alter (dpm($form_id) on the node create page) and double checked that dpm() was working on the node create page after I switched to hook_form_FORM_ID_alter, but it still didn't seem to be picking up my theme.
    – Samsquanch
    Jun 13, 2014 at 15:27
  • It may be stupid but just ot be sure, check if you are referencing the $form array in the function/hook arguments.
    – user21641
    Jun 13, 2014 at 16:23
  • And of course always clear the cache :)
    – user21641
    Jun 13, 2014 at 16:25
-1

Try adding something like the following to the top of your modulename/templates/slide-show-node-form.html.twig

{#
/**
 * @file
 * Override for Slide Show Node Form 'form' element.
 *
 * Available variables
 * - attributes: A list of HTML attributes for the wrapper element.
 * - children: The child elements of the form.
 *
 * @see template_preprocess_form()
 *
 * @ingroup themeable
 */
#}

(based on the default located at /core/modules/system/templates/form.html.twig) and the suggestions for Drupal Twig conversion instructions

Not the answer you're looking for? Browse other questions tagged or ask your own question.