2010-09-29 22 views
1

J'ai une vue qui utilise des champs du module Biblio et ceux-ci sont malheureusement tous définis comme champs de texte. Je dois trier mon point de vue selon le numéro d'accès, mais si définir le tri dans la vue, il trie les mauvais chiffres commeTri personnalisé dans les vues Drupal

1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20 ... 

au lieu de

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ... 

Je suppose que c'est parce que Vues interprète les comme une chaîne et les trie en conséquence.

Existe-t-il un moyen facile de créer une fonction de tri personnalisée qui les trierait en tant que nombres? Ou peut-être que je pourrais remplacer le SQL autogénéré (je sais comment faire cela), mais je ne sais pas comment trier les chaînes en tant que nombres en SQL.

+0

J'ai champ personnalisé pourcentage à mon avis. Comment puis-je ajouter un tri sur ce champ? –

Répondre

3

Vous pouvez utiliser CAST ou CONVERT pour rendre le texte en chiffres et il suffit de faire le triage, documentation

2

Tenir compte en utilisant le module de champ calculé (http://drupal.org/project/computed_field). Il vous permet de définir la valeur du champ en tant que valeur calculée d'autres champs CCK dans le type de contenu.

Créer un champ calculé. Définissez le type de données sur Entier. Dans les réglages pour le champ calculé,

$node_field[0]['value'] = (int)($node->field_biblio_that_has_text[0]['value']);

Maintenant, vous pouvez trier sur la base du champ calculé et le tri se produira numériquement et non textuellement. Bien sûr, vous devez changer field_biblio_that_has_text pour le nom de la machine du champ biblio (allez à gérer les champs et vous y trouverez le nom).

Pour en savoir plus sur le champ calculé (et apprendre quand on calcule le terrain exactement calculé) vérifier http://drupal.org/node/126522