2009-06-06 6 views
2

でDrupalのノードを作成する私は、同じサイトから、JavaScriptでdrupalのノードを作成しているよ、と私は私が行くべき方向だろう。はjavascriptを

私はあなたがこれを行うには、サービス/ JSONを使用することができます知っているが、確かに簡単な方法がありますか?

おかげ

答えて

4

の複雑さに行き詰まるとなることは簡単です、あなたはおそらくする必要がありますDrupalにmenu callbackがあり、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'); 
} 

をあなたのDrupalサイトのsites/all/modules/demoのようなフォルダ内のdemo.moduleファイルに挿入されます。また、次のようなビットを持つdemo.infoファイルが必要です。

name = Demo module 
description = Demo code. 
core = 6.x 
+1

書き込まれていないノードモジュールの数が多いと、そのコードだけでは機能しません。また、これがうまくいく場合でも、node_prepareをnode_saveの前にノードを前処理して、コンテンツフィルタを適用したいと思うでしょう。 – FGM

+0

ええ、新しいノードにタイトルを追加するのが最も一般的なユースケースではないかもしれません。私のコード例はおそらく、最小限のものとして記述されています:) – mikl

+0

これは本当に古いものですが、これと同様のページコールバックでdrupal_executeを使用しています:http://drupal.org/node/293663では、カスタム機能、および適切な検証が含まれます。 CCKフィールドを持っているときに理想的です。 – hookd

0

は、私が見たい最初の場所は、ここでは次のようになります。

http://docs.jquery.com/Ajax

そしてかどうかを確認するために

http://docs.jquery.com/Ajax/load#urldatacallback

最初のロード()関数に進みますそれはあなたのニーズに十分です。

に必要となる可能性があるAjax呼び出しの最も単純な形でスタートが、それはAJAXコールバックに加えて、より普遍的な$のアヤックス()