Добрый день, прошу помощи товарищи.
Попробую по частям спросить
Имеется тип материала - ОТЧЁТ
в котором есть дополнительные Text поля: SUMMA и IMYA
Есть сторонний сервис, который может на определённый путь сайт посылать POST запрос типа x-www-form-urlencoded
со следующими параметрами
NAZVANIE = TESTOVYI OTCHET
SUMMA = 100
IMYA = PETROV IVAN
задача при получении данного запроса, сайт должен создать ноду для типа материала ОТЧЁТ
в которой заполнить дефолтные поля, такие как title, body, и т.п. ну т.е собственно как у xandeadx в примере
$node = new stdClass();
$node->type = 'story';
node_object_prepare($node);
$node->title = 'Заголовок ноды';
$node->language = LANGUAGE_NONE;
$node->body[LANGUAGE_NONE][0]['value'] = 'Содержание ноды';
$node->body[LANGUAGE_NONE][0]['summary'] = 'Текст анонса';
$node->body[LANGUAGE_NONE][0]['format'] = 'filtered_html';
$node->uid = 1; // необязательно
$node->status = 1; // необязательно
$node->promote = 1; // необязательно
node_save($node);
только title назвать из параметра NAZVANIE
и дополнительные поля SUMMA и IMYA тоже из параметров
Как это реализовать? получается нужно написать PHP код который сможет разобрать по параметрам POST запрос, а потом из полученных переменных по примеру выше создать ноду
Это был первый вопрос
Комментарии
hook_menu(), выхватит параметры, запихать в ваш код.
В чём проббема?
Наверное в том. что я не до конца понимаю что такое хуки в Drupal-е, наверное это какие то предпроцессы в коде, которые могут выполняться в определённом месте.
Вот например следующий код читает весь POST запрос и пишет его в файл
<?php
$fp=fopen('text.txt','a');
foreach ($_POST AS $field => $value)
{
fwrite($fp,"$field = $value");
}
?>
Скажите пожалуйста как этот код будет выглядеть в виде хук, и куда я его получается должен вставить
Спасибо за ответ
Точно так же он будет выглядеть.
Начните с чтения литературы о создании модулей
Погуглил, немного почитал, решил попробовать сделать микромодуль, сделал небольшой код в нём без всяких стандартов оформления
<?php
function my_module_menu() {
$items = array();
$items['my-page'] = array (
'title' => 'My page',
'page callback' => 'my_first_page',
'access callback' => TRUE
);
return $items;
}
function my_first_page() {
foreach ($_POST as $id=>$value)
{
Print(" $id = $value
");
}
}
Основную часть инициализации модуля взял с урока Drupalguide, позже до конца разберусь что где зачем, и надо ли мне это
в итоге моя страница созданная возращает сейчас параметры посланные POST-ом
а именно
notification_type = card-incoming
operation_id = 473290786557087012
amount = 0.98
currency = 643
datetime = 2014-12-30T21:39:46Z
sender =
codepro = false
label = test
sha1_hash = 1d21d2e0c556406a0d61e1cc72a0dfcba155e308
Скажите кто нибудь пожалуйста, что нужно в коде дописать чтобы все название id стали переменные под тем же именем, для того чтобы их дальше использовать в процессе программного создания ноды (т.е. $notification_type $operation_id $amount и т.д.)
Вы на верном пути
Спасибо, намекните пожалуйста, как всё же название параметра полученного обозначить новой переменной со значением из запроса
$notification_type
$operation_id
$amount
$currency
$datetime
$sender
$codepro
$label
$sha1_hash
Хм, похоже выдрать можно таким образом
$_POST["amount"];
------------
Всё, вроде как более менее разобрался, один вопрос, использую код выше (Создание ноды) могу ли я в нём заполнить значение дополнительно созданных полей?
у меня есть текстовое поле sha1, в интерфейсе его полное имя field_sha1
пробовал вставлять
$node->sha1 = "aaaa";
$node->field_sha1 = "aaaa";
не заполняет :/
$node->field_sha1['und'][0]['value'] =
Спасибо!