在一个定义模块,用于推4.7我砍死在一起的一个节点对象,并通过它向node_save($node)建立节点。这个黑客似乎不再起作用在推6.而我敢肯定这个黑客可以是固定的,我很好奇如果有一个标准的解决方案创建的节点没有形成。在这种情况下的数据是在从一个自定义源于另一个网站。

有帮助吗?

解决方案

我不知道的一个标准API为创造一个节点的务实。但这是我收集到建立一个模块,并什么你想做的。

  1. 确保重要的领域是设置:uid、名称、类型、语言、标题、身体、过滤器(见 node_add()node_form())
  2. 通过节点过 node_object_prepare() 所以其他模块中可以添加到美元的节点对象。

其他提示

最佳做法的方法使这种情况发生是利用drupal_execute.drupal_execute将运行标准的验证和基本节点操作这样的事情的行为方式系统的期望。drupal_execute有的怪癖和稍少的直观的不仅仅是一node_save,但是,在推6,你可以利用drupal_execute在以下方式。


$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');

$node = new stdClass();
// I don't believe anything is required here, though 
// fields did seem to be required in D5

drupal_execute($form_id, $form_state, $node);

node_save()仍然有效,现在推6;你只需要几个具体的碎片的数据,使它的工作。

$node = new stdClass();
$node->type = 'story';
$node->title = 'This is a title';
$node->body = 'This is the body.';
$node->teaser = 'This is the teaser.';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;

node_save($node);

'状况'和'推广'很容易忽视--如果您没有设置这些节点将仍然未发表,并未促进的,你只会看到如果你去的内容管理屏幕上。

一个多回答我发现是用 从blogapi模块在推核心。事实上,它是在核心给了我多一点的信心,它将继续工作,在未来版本。

有一些很好的答案上,但在具体实例中的一个摄入摘要项目成为一个节点,你也可以采取的办法的使用simplefeed模块(http://wwww.drupal.org/project/simplefeed).这个模块采用的simplepie引擎采集饲料和实证明个别项目从每一个进入点。我认识到,这并不具体解决这一问题建立节点,从计划,但它可能是一个更简单的解决您的问题的整体。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top