如何以编程方式创建数据事件节点和设置数据字段

时间:2013-02-06 10:22:20

标签: events date drupal drupal-7 drupal-modules

我按照分步指南来实现模块事件日历功能。这是模块的链接:

http://drupal.org/project/events_calendar_feature

然后我创建了一个自定义模块,每天从外部网站下载信息(通过实现hook_cron)。此模块以编程方式自动创建类型为“data_event”的节点,我创建的节点(遵循上面提到的指南)每天都会在网站上创建所有新事件。这些是创建的新内容类型“data_event”中的所有字段:

标签:标题机器名称:标题字段类型:节点模块元素

LABEL:Body MACHINE NAME:body FIELD TYPE:节点模块元素

LABEL:日期机器名称:field_event_dates字段类型:日期WIDGET:文本字段

enter image description here

问题是正确设置节点的各个字段。我如何知道要设置日期的字段名称?

这是我目前在我的模块中的实现。注释行是一些测试没有成功。

日期格式:dd / mm / yyyy时间格式:hh:mm(24h)

function create_data_event_node($title, $id, $data_event_body, $startDate, $startDateTime, $endDate, $endDateTime) {
    watchdog("Indico Downloader", "Creating new data event node.");
    $node = new stdClass();
    $node->type = "data_event";
    $node->title = $title;
    $node->language = LANGUAGE_NONE;
    $node->id = $id;
    node_object_prepare($node);

    $node->body[$node->language][0]['value'] = $data_event_body;
    $node->body[$node->language][0]['format'] = 'full_html';

    // $node->field_event_dates[$node->language][0]['value']['date'] = $startDate." - ".$startDateTime;
    // $node->field_event_dates = array(
        //     0 => array(
        //         'value' => format_date($om__result->date, 'short'),
        //     ),
        // );
    // $node->field_event_dates[$node->language][0]['value']['time'] = $startDateTime;
    // $node->field_event_dates[$node->language][0]['value2']['date'] = $endDate;
    // $node->field_event_dates[$node->language][0]['value2']['time'] = $endDateTime;

    $node = node_submit($node);
    node_save($node);
}

提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

让我们首先确保您已将字段配置为包含多个值? - 点击你的字段后面的“编辑”。 - 确认“数值”配置为具有多于1。

完成后,您应该能够通过为以下内容分配值来设置第一个值: $ node-> field_event_dates [$ node-> language] [0] ['value'] =“无论你想要它是什么”。 和第二个日期: $ node-> field_event_dates [$ node-> language] [1] ['value'] =“这是第二个值”。

等等......

直到: $ node-> field_event_dates [$ node-> language] [9] ['value'] =“这是最后一次”(假设您已将最大值设置为10)。

我希望这有帮助吗?