Voir Exposed Drupal
-
26-09-2019 - |
Question
est-il un moyen de ne pas afficher les résultats initialement jusqu'à ce que le formulaire a été soumis?
En outre, je ne vois pas où je peux passer outre la forme exposée
La solution
@googletorp mentionné , vous pouvez remplacer la forme d'exposer en utilisant hook_form_alter()
: consultez un des exemples d'un couple dans d'autres questions pour avoir une idée de comment cela fonctionne:
- supprimer un opérateur logique (déverrouillé) d'un filtre exposé
- Fourniture d'une liste prédéfinie d'options pour un élément exposé dans une vue dans Drupal?
Pour afficher un formulaire vierge sauf si l'utilisateur remplit le formulaire exposé, vous pouvez utiliser hook_views_query_alter()
dans un module personnalisé:
function test_views_query_alter(&$view, &$query) {
$filter_set = FALSE;
foreach ($view->filter as $filter) {
// Check if we've found a filter identifier that is set
if ($filter->options['exposed'] && array_key_exists($filter->options['expose']['identifier'], $_GET)) {
$filter_set = TRUE;
break;
}
}
// If the filter isn't set, add a WHERE clause to the query that
// cannot be TRUE. This ensures the view returns no results.
if (!$filter_set) {
$query->add_where(0, 'FALSE');
}
}
Autres conseils
Vous pouvez remplacer le formulaire avec hook_form_alter
dans un module personnalisé.
Je ne crois pas qu'il y ait une option dans les vues à afficher l'interface utilisateur rien avant la sélection. Dans votre thème, vous pouvez vérifier s'il y a une sélection, et de masquer les résultats si nécessaire.
vous pouvez définir un filtre par défaut (entre les exposés) avec une comparaison qui est toujours faux.
Si un filtre est en option dans les paramètres de filtre exposés, la vue devrait toujours afficher les résultats ...
Exposed Form Section
changer le style de forme Exposed
de basic
à input required