我正在开发一个站点(D6),每次插入或更新节点时都会运行地理编码查找,该节点有一个地址文本字段和一个lat / lng对的隐藏字段,而在hook_nodeapi期间我想调用这个地理编码功能
问题是地理编码器需要将这个新的latlng对保存到节点,而节点又调用了hook_nodeapi,因此产生了递归问题。
什么是避免这种头痛的最佳方法?
答案 0 :(得分: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逻辑上是否不会丢弃此字段,但这应该可行。