ノードが挿入または更新されるたびにジオコード ルックアップを実行するサイト (D6) を開発しています。ノードには住所テキスト フィールドと緯度/経度ペアの非表示フィールドがあり、hook_nodeapi 中にこのジオコーディング関数を呼び出したいと考えています。
問題は、ジオコーダーがこの新しい latlng ペアをノードに保存する必要があることです。これにより、hook_nodeapi が呼び出され、再帰の問題が発生します。
この頭痛を避けるための最良の方法は何ですか?
ノードが挿入または更新されるたびにジオコード ルックアップを実行するサイト (D6) を開発しています。ノードには住所テキスト フィールドと緯度/経度ペアの非表示フィールドがあり、hook_nodeapi 中にこのジオコーディング関数を呼び出したいと考えています。
問題は、ジオコーダーがこの新しい latlng ペアをノードに保存する必要があることです。これにより、hook_nodeapi が呼び出され、再帰の問題が発生します。
この頭痛を避けるための最良の方法は何ですか?
ジオコーダーの動作を変更できないことが完全にわかっている場合は、簡単な回避策を使用できます。
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ロジックで破棄されないかどうかはわかりませんが、これは機能するはずです。