J'ai besoin de Drupal pour utiliser un modèle de page personnalisé si l'URL contient un paramètre _ GET particulier.
Dans D7 je ferais quelque chose comme ça dans le template.php du thème:
function mytheme_preprocess_page(&$variables) {
if($_GET['isCustomTpl'] == true)
$variables['theme_hook_suggestions'][] = 'page__myCustomTpl';
}
Cependant, cela ne fonctionne pas en D8 (j'aurais été surpris par le contraire, compte tenu de tous les changements architecturaux dans la couche de thème).
Des idées?
Question bonus: est-il possible de définir une telle fonction dans un module, afin de pouvoir la publier publiquement sans que les utilisateurs ne modifient leurs thèmes?
Vous pouvez implémenter le nouveau hook hook_theme_suggestions_HOOK_alter()
.
Modifie les suggestions nommées pour un crochet de thème spécifique.
Ce crochet permet à n'importe quel module ou thème de fournir des suggestions de nom de fonction ou de modèle de thème alternatif et de réorganiser ou de supprimer les suggestions fournies par hook_theme_suggestions_HOOK () ou par des invocations antérieures de ce crochet.
Vous pouvez l'utiliser comme ça
function MYMODULE_theme_suggestions_page_alter(array &$suggestions, array $variables) {
if (\Drupal::request()->query->get('foo') == 'bar') {
$suggestions[] = 'page__myCustomTpl';
}
}
Vous pouvez l'implémenter dans un module ou un thème