https://www.bryanbraun.com/2013/08/17/using-hook-form-base-form-id-alter/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;
/*
* Implement hook_form_base_id_alter()
*/
function atadmin_form_node_form_alter(&$form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
if($form['#form_id'] == 'node_story_form' || $form['#form_id'] == 'node_story_edit_form'){
$form['#theme'] = array('at_node_story_form');
}elseif($form['#form_id'] == 'node_video_form' || $form['#form_id'] == 'node_video_edit_form'){
$form['#theme'] = array('at_node_video_form');
}elseif($form['#form_id'] == 'node_photo_gallery_form' || $form['#form_id'] == 'node_photo_gallery_edit_form'){
$form['#theme'] = array('at_node_photo_gallery_form');
}elseif($form['#form_id'] == 'node_poll_form' || $form['#form_id'] == 'node_poll_edit_form'){
$form['#theme'] = array('at_node_poll_form');
}
}
I implemented the hook "hook_form_base_id_alter" in my atadmin.theme file. Where atadmin is my theme name. Now I am going to theme the form of Story,video , photo_gallery content types , The Form Url would be , node/add/story,node/add/video etc
/**
* Implements hook_theme()
*/
function atadmin_theme() {
$themes['at_node_story_form'] = ['render element' => 'form'];
$themes['at_node_video_form'] = ['render element' => 'form'];
$themes['at_node_photo_gallery_form'] = ['render element' => 'form'];
$themes['at_node_poll_form'] = ['render element' => 'form'];
return $themes;
}
Implement hook_theme() , in the same file name Now create the twig files with the below names , Just replaces the theme key '_' to '-' like below ,- at-node-story-form.html.twig
- at-node-video-form.html.twig
- at-node-photo-gallery-form.html.twig
- at-node-poll-form.html.twig
And The twig file code would be something like below,
{{ form|without('field_related_stories','actions','advanced', 'footer','group_seo_meta_tags') }}
{{ form.group_section_category }}
{{ form.group_custom_advanced }} {{ form.group_story_highlights }} {{ form.group_other_setting }} {{ form.group_story_date_time }} {{ form.group_story_social_media }} {{ form.group_story_other_setting }} {{ form.group_seo_meta_tags }} {{ form.field_related_stories }}{{ form.footer }}
wow this is do much helpful i also searching such tips thanks for sharing this
ReplyDeletedrupal developers australia