Comment filtrer la vue en comparant 2 champs. Si champ-a <champ-b


18

J'ai un type de contenu de produit qui comporte 2 champs de prix.

Je veux créer une vue qui montre tous les produits où le prix-A est inférieur au prix-B.

J'espérais que je pourrais simplement ajouter un filtre et sélectionner le prix-A puis choisir opérer moins que et définir la valeur comme prix-B, mais vous ne pouvez pas le faire.

J'ai cherché à utiliser un hook de vues, principalement hook_views_query_alter, mais je n'ai pas eu de chance.

J'ai également essayé d'utiliser le module PHP Views et je n'ai pas réussi à le faire fonctionner.

Quelqu'un connaît-il la meilleure façon d'y parvenir?

Réponses:


10

Ce que vous recherchez, ce sont les critères de filtrage Global: Fields comparison:)


3
Ce devrait être la réponse acceptée.
joe_flash du

4

Bienvenue sur le Drupal Answers Stack Exchange! Il n'y a aucun moyen simple d'y parvenir dans les vues Drupal pour l'instant, et comme je le sais.

Vous pouvez le faire en utilisant le module PHP Views . Activez ce module et ajoutez un filtre filtre PHP que vous pouvez sélectionner dans le filtre de vues Catégorie globale une fois que vous avez installé le module ci-dessus.

Ajoutez du code php quelque chose comme ci-dessous dans la section code PHP du filtre.

$node = node_load($data->nid);

$field_a = field_get_items('node', $node, 'field_price_a');
$price_a = field_view_value('node', $node, 'field_price_a', $field_a[0]);

$field_b = field_get_items('node', $node, 'field_price_b');
$price_b = field_view_value('node', $node, 'field_price_b', $field_b[0]);

if ($price_a >= $price_b) {
  return TRUE;
}

Modifiez field_price_a avec votre nom de champ Price A et field_price_b avec votre nom de champ Price B.

J'ai testé et cela a fonctionné pour moi! J'espère que vous pourrez le casser aussi :-)


Merci pour la suggestion. Je ne parviens toujours pas à le faire fonctionner avec ce morceau de code et j'ai utilisé les champs qui s'affichent lors de l'exécution de dsm ($ data); Je pense que je pourrais aussi ajouter une case à cocher et filtrer si la case est cochée. Merci de votre aide.
Fadzy

Pendant ce temps, il est possible avec des vues, sans aucun codage personnalisé ou tout module contribué nécessaire.
Елин Й.



-2

Si le prix est un champ de votre type de contenu, dans les vues Drupal 7, vous pouvez automatiquement et facilement choisir un comparateur de champs. Je suppose que cela devrait fonctionner.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.