Программно перезаписать значение поля

Аватар пользователя nnelitse nnelitse 21 октября в 21:55

Здравствуйте, друзья. Итак, мучаюсь уже давно, но никак не могу найти решение. Обращаюсь за помощью.
На сайте стоит модуль feeds, которые собирает новости с rss источников. Есть полк filed_source и поле filed_yii.
Filed_source- это url новости на сайте-источнике
Field_yii - должно быть поле с укороченной ссылкой на этот источник. То есть, объясняя проще: для сбора статистики, когда и сколько человек перешли по этой ссылке. Обычное укорочение ссылок. Есть свой сервис для этого на yourls.
Есть api, по которому легко можно программно укоротить ссылку. Но вот проблема: как перезаписать значение поля перед сохранением материала?
Первый вариант думал сделать с Feeds Tamper PHP, но так и не понял каким образом поставить значение поля field_source
Вот сам код:

<?php
$username 
'111';
$password '333';

// EDIT THIS: the query parameters
$url Здесь должно быть значение поля field_source
$keyword 'ozh';                      
$title   'Super blog!';           
$format  'simple';                  

$api_url 'http://yi2.ru/yourls-api.php';

///////////////////////////////////////////////////////////////////
///////////////////////////// SCRIPTS /////////////////////////////
///////////////////////////////////////////////////////////////////

// Init the CURL session

$ch curl_init();
curl_setopt$chCURLOPT_URL$api_url );
curl_setopt$chCURLOPT_HEADER);            // No header in the result
curl_setopt$chCURLOPT_RETURNTRANSFERtrue ); // Return, do not echo result
curl_setopt$chCURLOPT_POST);              // This is a POST request
curl_setopt$chCURLOPT_POSTFIELDS, array(      // Data to POST
        
'url'      => $url,
        
'keyword'  => $keyword,
        
'title'    => $title,
        
'format'   => $format,
        
'action'   => 'shorturl',
        
'username' => $username,
        
'password' => $password
    
) );

$data curl_exec($ch);
curl_close($ch);

return 

$data;?>

Второй вариант это rules, но опять таки, никогда с ним не работал и не знаю как это сделать.
Буду благодарен за подсказку и наводку)

0 Thanks

Комментарии

Аватар пользователя ivnish ivnish 22 октября в 11:11

как перезаписать значение поля перед сохранением материала?

Покажите ваш код сохранения материала

Аватар пользователя ivnish ivnish 22 октября в 11:35

Как вариант менять вашу ссылку уже после сохранения материала модулем Feeds. Загрузили уже созданный материал, поменяли ссылку, сохранили материал

Аватар пользователя nnelitse nnelitse 22 октября в 11:45

Спасибо большое, но вопрос в другом. Как её получить? Это можно сделать и с рулс и программно. Но, мне нужно получить значение поля field_source и подставить значение в код для генерации ссылки.

Аватар пользователя ivnish ivnish 22 октября в 11:55

Как-то так:

<?php
$node 
node_load($nid);

$longUrl $node->field['field_LONGURL'][LANGUAGE_NONE][0]['value'];

$shortURL СУПЕРФУНКЦИЯ_ИЗМЕНЕНИЯ_URL($longUrl);

$node->field['field_SHORTURL'][LANGUAGE_NONE][0]['value'] = $shortURL;

node_save($node);
?>

Писал на коленке

Аватар пользователя ivnish ivnish 22 октября в 16:36

После импорта через модуль Feeds. Скорее всего нужно будет отловить это событие через хук