0

我正在开发一个站点(D6),每次插入或更新节点时都会运行地理编码查找,该节点有一个地址文本字段和一个 lat/lng 对的隐藏字段,在 hook_nodeapi 我想调用这个地理编码函数。

问题是地理编码器需要将这个新的 latlng 对保存到节点,而节点又调用 hook_nodeapi,因此产生了我的递归问题。

避免这种头痛的最佳方法是什么?

4

1 回答 1

0

如果您完全确定无法更改地理编码器的行为,则可以使用简单的解决方法:

static $geocoded_nodes = array();

if (!$geocoded_nodes[$node->nid]) {
   $geocoded_nodes[$node->nid] = TRUE;
   call_geocoder_stuff().
}

作为替代方案,您也可以尝试将未使用的字段添加到传递给地理编码器逻辑的节点。

if (!isset($node->geocoding_done)) {
   $node->geocoding_done = TRUE;
   call_geocoder_stuff($node).
}

我不确定这个字段是否不会在 node_save 逻辑上被丢弃,但这应该可以工作。

于 2012-03-28T10:23:29.203 回答