[РЕШЕНО]Как сделать, чтоб поле на затиралось пустым значением

Главные вкладки

Аватар пользователя makbuk makbuk 17 марта 2017 в 17:43

Есть поле Координаты, которое были заполнено вручную. В данный момент поменялась функциональность и поле Координаты заполняется из поля Фотография (EXIF).
Проблема возникает при обновлении ноды. Если поле Фотография не содержит фотографию или фотография без EXIF GPS данных, то поле Координаты стираются.
Как можно это предотвратить?

Комментарии

Аватар пользователя makbuk makbuk 17 марта 2017 в 18:53

Думал сделать что-то такое, но это не работает

<?phpfunction prev_del_coor_node_update($node) {
     //get updated value
    $new_location = field_get_items('node', $node, 'field_location_exif');
    //get old value
    $loaded_node = node_load($node->nid);
    $old_location = field_get_items('node', $loaded_node, 'field_location_exif');
    
    if ($new_location || $old_location) {
        
//Как можно скопировать значение поля? и сохранить его?

        drupal_set_message('old gps coordinates was copied');
    }
}?>

Аватар пользователя makbuk makbuk 27 марта 2017 в 17:00

makbuk wrote:

Думал сделать что-то такое, но это не работает
function prev_del_coor_node_update($node) {
//get updated value
$new_location = field_get_items('node', $node, 'field_location_exif');
//get old value
$loaded_node = node_load($node->nid);
$old_location = field_get_items('node', $loaded_node, 'field_location_exif');

if ($new_location || $old_location) {

//Как можно скопировать значение поля? и сохранить его?
drupal_set_message('old gps coordinates was copied');
}
}

Аватар пользователя xakd xakd 27 марта 2017 в 18:59

Не видя всего модуля невозможно сказать, как именно там у вас это сохранялось и работало. А весь модуль изучать тут нашару никто не будет

Аватар пользователя makbuk makbuk 1 апреля 2017 в 18:53

Весь модуль это и есть эта функция, но к сожалению он зависает при выполнении. На сколько я понимаю проблема в сохранении.
Если вопрос о том как читаются данные с фотографий, для этого используется модуль drupal geocoder

<?php
function prev_del_coor_node_update($node) {
     
//get updateed value
    
$new_location field_get_items('node'$node'field_location_exif');
    
//get old value
    
$loaded_node node_load($node->nid);
    
$old_location field_get_items('node'$loaded_node'field_location_exif');
    
    
dpm($old_location);
    
dpm($new_location);
    
    if (
$new_location <> $old_location) {
        
$node_wrapper entity_metadata_wrapper('node'$node);
        
$node_wrapper->field_location_exif $old_location;
        
$node_wrapper->save();        
        
        
drupal_set_message(t('Old gps coordinates was copied'));
    }
}

?>
Аватар пользователя makbuk makbuk 1 апреля 2017 в 20:13

Работает следующим образом

<?php
function prev_del_coor_node_presave($node) {
     
//get updated value
    
$new_location field_get_items('node'$node'field_location_exif');
    
//get old value
    
$loaded_node node_load($node->nid);
    
$old_location field_get_items('node'$loaded_node'field_location_exif');

    if (

$new_location <> $old_location) {
        
        
$node->field_location_exif $old_location;
        
drupal_set_message(t('Old gps coordinates was copied'));
    }

}

?>