Drupal 6 / jQuery Ajax обновляет поле

м по другому пути на том же сайте, и мне нужно разрешить пользователю изменять содержимое поля на узле, который он / она написал в другом месте. У меня есть идентификатор узла и имя поля, а также идентификаторы и т. Д. Нп.

Я неЯ считаю, что это слишком сложно, но учебник или объяснение было бы замечательно.

Благодарю.

Изменить: Спасибо anschauung за вопрос, чтобы уточнить:

Это текстовая область CCK. Что касается того, ну что жтип центрального узла, с множеством связанных узловых узлов. На странице редактирования любого узла, который ссылается на центральный узел, он должен иметь возможность редактировать и сохранять поле центрального узла. Чтобы'с моей пользой.

Еще раз спасибо.

Спасибо вам большое googletorp, я действительно очень ценю вашу помощь.

Вот'Что я имею до сих пор:

Для первого шага:

function update_main_field_menu() {

  $items = array();

  $items['update_main_field/%'] = array(
    'title' => 'Update Main Field',
    'page callback' => 'post_to_main_node',
    'page arguments' => 1,
    'type' => MENU_CALLBACK
  );

  return $items;
}

Шаг второй:

function post_to_main_node(){
    // Sorry, I'm totally lost. What do I put here?
}

Также вы упомянули это:

Либо в hook_form_alter, hook_nodeapi, либо в каком-либо другом хуке, который вызывается при создании формы узла. Вы должны выяснить, что лучше в вашей ситуации.

Как мне сгенерировать форму узла?

Шаг третий:

function modulename_form_mainct???_node_form_alter (&$form, &$form_state) {

    // I'm not sure about which form I'm doing node form alter on. If I do it to the mainct, wouldn't that alter the regular edit page the user is viewing? I only want to load the js for the ajax submission. Is there a update_main_field node form?


    drupal_add_js(drupal_get_path('module', 'modulename') ."/updateField.js");
}

Кроме того, что находится между функцией на шаге 2 и получением формы узла на шаге 3?

Шаг 4: Я думаю, что я понимаю в основном, хотя из-за других вещей, которые я могупока не проверю. :)

Я действительно хочу научиться делать это в drupal, но было бы здорово, если бы вы немного повысили уровень своего языка. Спасибо большое еще раз.

Изменить еще раз:

Я на самом деле пытался поставить аргументы доступа вчера, но по некоторым причинам это не сработало :( Но теперь это так! У тебя волшебство есть.

Теперь, когда я запускаю сообщение так:

Drupal.behaviors.ajax_update_field = function (context) {
    $("#button").click(function(){
        var url = $("#edit-field-reference-0-nid-nid").val().replace(/.*?\[nid:(\d+)?]/ig, "$1");
        url =  "/update_main_field/"+url;

            // The data is just some silly test thing
        $.post(url, {data: $("#edit-field-reference-0-nid-nid-wrapper label").text()}, function(value) {

            // Here you can write your js to handle a response to the user,
            // or if something went wrong an error message.
            // value = response data from drupal

            alert(value);

        });
    });
}

Я вижу сообщение на URL с правильными данными. И это хорошо. Но нет ответа. Предупреждение пусто.

Также новый бланк ... что-то было создано. Там'В нем ничего нет, но я могу видеть это в представлениях при фильтрации по узлам. У него нет заголовка, полей и т. Д. Просто дата публикации.

Узел, который я хочу обновить, не являетсят обновлен.

Так что это заставляет меня думать, что второй шаг, вероятно, несколько неверен. У меня есть несколько вопросов по этому поводу.

function post_to_main_node(){

    // Is this sufficient to load the node? nid doesn't have to be set as an arg for the function?
    $node = node_load($_POST['nid']);

    // Is the field set like this? 'field_library' is the 'machine name' of the field. This is what's needed right?
    $node->field_library = $_POST['data'];
    node_save($node);
}

Большое спасибо еще раз.

Ответы на вопрос(1)

Ваш ответ на вопрос