Skip to research

Déclarer son custom DRUPAL 8 theme à la configuration de AMP module

Image
Illustration for amp setting form ksm
Temps de lecture
Environ 1 minutes
Étiquettes

Lorsque l'on créer un custom thème sous Drupal 8 en souhaitant l'intégrer aux configurations du Accelerated Mobile Pages (AMP) module, l'on observe qu'il est invisible aux configurations et donc impossible a déclarer à AMP. En effet celui-ci n'accepte de travailler qu'avec son AMP thème.

la page d'administration de AMP : http://votresite.com/admin/config/content/amp

Il nous faudra déclarer notre thème nous même via un custom module.

Dans le fichier .module de notre custom module, ajoutons le hook hook_form_alter, dans lequel nous déclarons la fonction ksm($form_id) pour recherche l'id de la form (pour utiliser la fonction ksm(), vous devez avoir le module Devel et Kint d'activer. Il est recommandé d'activer ce module uniquement en local).

use Drupal\Core\Form\FormStateInterface;

function my_module_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  ksm($form_id);
}


Retournons sur la page settings de AMP module et rafraichissons là. Nous obtenons ainsi l'id de notre form.
amp_setting_form id

Les bonnes pratiques Drupal voudraient que l'on remplace maintenant le hook_form_alter() par le hook_form_FORM_ID_alter() pour cibler directement notre form. Modifions notre code et ajoutons un ksm($form) sur la form pour avoir plus d'informations.
Avant de voir le résultat, il faut vider les caches.

function my_module_form_amp_admin_settings_alter(&$form, FormStateInterface $form_state, $form_id) {
  ksm($form);
}


Nous souhaitons cibler le champs 'amptheme'.

amp setting form ksm

Dans notre hook ajoutons notre thème dans les options.

<?php

use Drupal\Core\Form\FormStateInterface;

/*
 * implement hook_form_alter
 * 
 * Need to alter settings AMP form for add our theme in settings AMP
*/

function my_module_form_amp_admin_settings_alter(&$form, FormStateInterface $form_state, $form_id) {
  // If settings theme AMP form
  if ($form['amptheme']) {
     // Insert theme to options settings AMP module
     $form['amptheme']['#options']['name_of_my_theme'] = t('My theme');
  }
}


Voilà, notre thème est enfin déclarer aux configurations de AMP.