Comment nommer les vues-exposées-form.tpl.php par affichage des vues

8

J'ai essayé views-exposed-form--"view_name"--"display_name".tpl.phpmais ça ne marche pas. Est-il possible de créer un fichier de modèle qui s'applique uniquement au filtre exposé d'un affichage de vues?

J'ai deux filtres exposés à partir de deux affichages différents dans une même vue, et je voudrais thème les deux filtres exposés différemment par deux fichiers de modèle.

chinita7
la source
Non, j'essaie. Mais ça ne marche pas.
Ce n'est pas vraiment une réponse à la question. Il serait peut-être préférable de poser à nouveau la question et d'expliquer comment et pourquoi la solution existante ne fonctionne pas pour vous ».
Neograph734
Cela ne fournit pas de réponse à la question. Une fois que vous avez une réputation suffisante, vous pourrez commenter n'importe quel message ; fournissez plutôt des réponses qui ne nécessitent pas de clarification de la part du demandeur . - De l'avis
Shawn Conn

Réponses:

2

Tout est possible dans Drupal;)

Probablement, Views ne fournit pas automatiquement de suggestions de modèles pour le filtre exposé, comme il le fait pour les champs eux-mêmes. Vous devrez donc faire un peu plus de travail pour celui-ci:

  1. Utilisez le module devel_themer pour savoir quelle fonction / modèle est le thème de ce filtre exposé.
  2. Créez un préprocesseur pour cette fonction / modèle de thème. Dans votre préprocesseur, vous pouvez ensuite insérer des suggestions de modèles dynamiques qui se déclencheront en fonction de la condition souhaitée. Vous pouvez créer ce préprocesseur dans le fichier template.php de votre thème personnalisé ou dans l'un de vos modules personnalisés. Cet article DO vous guidera dans la création de la suggestion de modèle dynamique.

Je suppose que vous afficherez différents affichages de vues en fonction d'un chemin URL. Si tel était le cas, vous pouvez utiliser la arg()fonction de Drupal dans votre préprocesseur pour déterminer quel est l'affichage d'affichage que vous affichez actuellement et construire votre suggestion de modèle en utilisant ces informations.

Une fois que vous avez correctement configuré vos suggestions, Drupal appelle automatiquement le modèle approprié et voilá, vous disposez de différents modèles de filtre en fonction du chemin (ou de toute autre condition que vous spécifiez dans votre préprocesseur).

barista amateur
la source
25

Pour Drupal 7, vous pouvez utiliser vues-exposé-forme - nom_vue - nom_affichage.tpl.php (remplacer les traits de soulignement par des tirets dans le nom de la vue et le nom d'affichage.)

Cela a fonctionné pour moi de cette façon.

milkovsky
la source
Cela a fonctionné de moi. Voici un exemple du nom de mon modèle de formulaire exposé: vues-exposé-formulaire - trunk_shows - panel-pane-1.tpl.php
albertski
Même si votre vue-exposé-formulaire - nom_vue - nom_affichage.tpl.php peut ne pas être répertorié lorsque vous faites cela, lors de l'ajout de votre nouveau fichier de modèle, vous devez également modifier la vue, cliquez sur Avancé-> Autre-> Thème -> Informations, puis cliquez sur le bouton Rescan Template Files.
kbrinner
Vous n'avez pas besoin du nom d'affichage, si vous n'avez pas besoin d'être aussi spécifique. Pour ma vue de bloc, "Affichage des événements", nommer mon fichier de modèle "vues-exposé-formulaire - événements-vue.tpl.php" a fonctionné pour moi. Merci, @kaimlaluno. Cela devrait probablement être la réponse acceptée.
ProGrammar
3

dans drupal8

/ admin / structure / views / view / event_related

serait

vues-exposé-formulaire - event_related.html.twig

Matoeil
la source
1

Pour drupal 8, le mode de débogage de thème n'affiche pas les suggestions de modèles disponibles. Vous pouvez savoir lesquels sont disponibles en utilisant kint () ou en créer de nouveaux dans ce crochet:

/**
 * Implements template_theme_suggestions_node_HOOK_alter().
 * Add theme suggestions to the view exposed forms.
 */
function YOUR_THEME_theme_suggestions_views_exposed_form_alter(&$suggestions, $vars, $hook) {
  kint($vars['form']['#theme']);
  //$suggestions[] = 'views__exposed__form__' . $anything; 
}
Interdruper
la source