2010-10-17 6 views
2

Disons que j'ai un champ cck appelé foo. C'est un champ de texte avec une entrée php. Supposons que le code php dans le champ foo donne la valeur de 1 256 lorsqu'il est calculé. J'ai besoin de cck field bar pour récupérer/obtenir/avoir la VALEUR (1,256) de cck field foo.Comment pourrais-je avoir un champ cck obtenir la valeur calculée d'un autre champ cck?


Node XYZ 
Foo:*some php code*  ===>results in value of 1,256 
Bar:1,256 

Si je viens de champ CCK Foo dans un nœud, il crache sur la valeur correcte, (1256), mais ce domaine est la façon dont sont classés nos points de vue; et les vues ne peuvent pas trier par un champ php.

J'ai essayé d'obtenir computed_field.module pour obtenir sa valeur, mais il cracherait le code php, pas la valeur.

Des idées là-bas?

+0

Voulez-vous dire « foo » obtient que valeur sur soumettre, ou avant de soumettre? – tpow

+0

Soumettre le noeud? Si c'est ce que vous voulez dire, alors soumettez. J'ai besoin de Bar pour SEULEMENT avoir la valeur de 1256 (entiers ou texte). J'ai besoin fondamentalement du champ pour avoir les entiers 1256 stockés dans le DB. Voir, champ Foo est un nombre calculé Alexa Traffic Rank. C'est le code php qui renvoie le nombre lors du calcul. Ce nombre peut rester cette valeur calculée dans la base de données jusqu'à ce qu'elle soit recalculée. computed_field a recalculé la valeur lors de la ré-enregistrement du noeud. (Si cela vous donne plus d'idée). – picxelplay

+0

Et aussi je serais ok si la barre de champ était en quelque sorte en mesure de gratter/extraire la valeur, ou juste en quelque sorte lire la valeur sortie, et non le code. – picxelplay

Répondre

2

Vous devez connecter le nœud soumettre forme et ajouter un gestionnaire soumettre

function moduleNameHere_form_nodeNameHere_node_form_alter(&$form, $form_state) { 
      //Add handler 
      $form['#submit'][] = 'moduleNameHere_submit_function'; 
} 

alors vous créez le gestionnaire qui sera appelé à soumettre

function moduleNameHere_submit_function($form, &$form_state) { 
    //Assign foo's value to variable 
    $myValue = $form_state['values']['foo']; 

    //Set bar to foo's variable 
    $form_state['values']['bar'] = $myValue; 

} 
+0

Cela a fonctionné parfaitement lorsque j'ai intégré votre code dans mon module qui récupère les rangs. Logiquement, cela prend tout son sens. Merci beaucoup pour votre aide @cinqoTimo – picxelplay

+0

@picxelplay - Pas de problème. Bienvenue sur Stackoverflow .. – tpow

+0

A première vue, ça marchait. Je l'ai testé avec 3 nœuds dans une vue. Il triait correctement. Je triais par domaine Bar. Je l'ai fait d'abord ascendant, puis descendant; tout a bien fonctionné. Puis, quand j'ai commencé à ajouter plus de nœuds, les résultats n'étaient pas triés. Des idées? – picxelplay

Questions connexes