【问题标题】:How could I have a cck field get the computed value of another cck field?我怎么能让一个 cck 字段得到另一个 cck 字段的计算值?
【发布时间】:2010-10-17 14:37:27
【问题描述】:

假设我有一个名为 foo 的 cck 字段。它是一个带有 php 输入的文本字段。假设 foo 字段中的 php 代码在计算时的值是 1,256。我需要名为 bar 的 cck 字段来获取/获取/拥有 cck 字段 foo 的 VALUE (1,256)。


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

如果我在一个节点中只有 cck 字段 Foo,它会输出正确的值,(1,256),但该字段是我们的视图排序方式;并且视图无法按 php 字段排序。

我试图让computed_field.module 来获取它的值,但是它会吐出php 代码,而不是值。

有什么想法吗?

【问题讨论】:

  • 您的意思是“foo”在提交时或在提交之前获得该值?
  • 提交节点?如果这就是你的意思,然后提交。我需要 Bar 只有 1256 的值(整数或文本)。我基本上需要该字段将整数 1256 存储在数据库中。请参阅,字段 Foo 是计算出的 Alexa 流量排名数。它是在计算时返回数字的 php 代码。该数字可以将该计算值保留在数据库中,直到它被重新计算。 computed_field 在重新保存节点时重新计算该值。 (如果这能给你更多的想法)。
  • 如果字段 Bar 能够以某种方式抓取/提取值,或者只是以某种方式读取输出的值,而不是代码,我也可以。

标签: drupal drupal-6 field drupal-modules cck


【解决方案1】:

你需要挂钩节点提交表单,并添加一个提交处理程序

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

然后您创建将在提交时调用的处理程序

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;

}

【讨论】:

  • 当我将您的代码集成到检索排名的模块中时,效果非常好。从逻辑上讲,这是完全合理的。非常感谢您的帮助@cinqoTimo
  • 乍一看,它工作正常。我在一个视图中使用 3 个节点对其进行了测试。它排序正确。我按字段 Bar 对其进行排序。我先上升,然后下降;一切正常。然后当我开始添加更多节点时,结果没有排序。有什么想法吗?
  • 如果我进入一个节点编辑,字段 foo 是 php 代码(php 过滤器打开),并且也被复制到字段 bar(php 过滤器打开)。字段栏内显示的文本是来自 foo 的 php 代码,而不是 foo 的值。
猜你喜欢
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多