Я застрял в проблеме, которую я исследовал в течение нескольких дней, но безуспешно, и ответы здесь, как правило, сразу.
У меня есть пользовательский код модуля, который добавляет узел из данных, предоставленных формой:
$edit = array();
$edit['uid'] = $user->id;
$edit['name'] = $user->name;
$edit['status'] = 1;
$edit['taxonomy'] = array($term_id);
$edit['title'] = $Title;
$edit['body'] = $body;
и т.д ...
и затем сохраняется с:
node_invoke_nodeapi($edit, $nType);
node_validate($edit);
if ($errors = form_get_errors()) {
print_r($errors);
}
$node = node_submit($edit);
node_save($node);
Это все работает отлично. Но я пытаюсь добавить данные о местоположении в каждый узел на основе предоставленного (очищенного) zip-поля.
У меня установлены и работают модули gmap и location. Когда я добавляю zip напрямую с помощью редактора контента drupal, все работает. Даже просмотров gmap. Так что я знаю, что версии и моды все правильные.
Я использовал это:
$location = array(
'country' => 'US',
'postal_code' => $zip,
);
$locationID = location_save($location);
и это:
$location['country'] = "US";
$location['postal_code'] = $zip;
$locationID = location_save($location);
с элементом страны и без него.
И затем в разделе инициализации данных узла (выше) это:
$edit->locations[0]['lid'] = $locationID;
или
if($locationID) $edit['field_location'][0]['lid'] = $locationID;
или
if($locationID) $edit['location'][0]['lid'] = $locationID;
Но ничего из этого не работает. На самом деле отправка пройдет нормально, но данные о местоположении не сохраняются. И никаких ошибок не выдано.
Любая помощь с этим будет принята с благодарностью.