Помимо обратного вызова AJAX, вам, вероятно, понадобится обратный вызов меню в Drupal, который будет принимать запрос AJAX и превращать его в объект узла и сохранять его с помощью node_save .
В простейшей форме это выглядело бы примерно так (учтите, что здесь нет проверки доступа, поэтому любой может создать узел с помощью этого обратного вызова):
<?php
/**
* Implementation of hook_menu().
*/
function demo_menu() {
$items = array();
$items['demo/js'] = array(
'title' => 'Demo page',
'page callback' => 'demo_js_page',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Page callback that saves a node.
*/
function demo_js_page() {
if (isset($_REQUEST['title'])) {
$node = new stdClass;
$node->type = 'blog';
$node->title = check_plain($_REQUEST['title']);
node_save($node);
drupal_set_message(t('Created node %title', array('%title' => $_REQUEST['title'])));
}
return t('Thanks for visiting');
}
Показанный код должен быть вставлен в файл demo.module
в папке, подобной sites/all/modules/demo
на вашем сайте Drupal. Вам также понадобится файл demo.info, который выглядит примерно так:
name = Demo module
description = Demo code.
core = 6.x