我正在尝试编写PHP以将大量内容插入到我网站的drupal 6数据库中。 内容类型有3个自定义字段:
field_theme_preview_demo_link - 文字字段
field_theme_preview_content_styl - 文本选择器
field_theme_preview_thumb - 带有'alt'的图片字段
我只是手动将图像复制到正确的目录。
我创建了内容类型(并手动插入了一些内容以确认一切正常)。
然后我找到了一些以编程方式插入内容的代码示例......
Creating Drupal CCK content programatically/ via API
和 http://drupal.org/node/458778#comment-1653696 (对于这个我无法理解为D6建议的mod。)
我尝试修改它但无法使其工作 - 它确实创建了新内容,但图像字段为空白。 (要运行此代码,我只需粘贴到“执行PHP代码”块中。)
global $user;
$newnode = new stdClass();
$newnode->title = 'New node title';
$newnode->body = "the body";
$newnode->uid = $user->uid;
$newnode->type = 'theme_preview';
$newnode->status = 1;
$newnode->promote = 0;
$newnode->active = 1;
$newnode->field_theme_preview_demo_link[0]['value'] = 'the link';
$newnode->field_theme_preview_content_styl[0]['value'] = 'Books';
$newnode->field_theme_preview_thumb = array(
array(
'fid' => 'upload',
'alt' => 'the alt',
'filename' => 'sites/default/files/theme_preview_thumbs/41531.jpg',
'filepath' => 'sites/default/files/theme_preview_thumbs',
'filesize' => filesize('sites/default/files/theme_preview_thumbs/41531.jpg'),
),
);
node_save($newnode);
答案 0 :(得分:2)
将fid
字段设置为'upload'是指在实际上传文件时由节点表单完成的操作。如果您以编程方式生成内容,则需要从其他位置获取fid
。
您可能需要手动使用file api将文件系统某处的文件输入文件数据库,然后从生成的对象中绘制fid
。
答案 1 :(得分:1)
使用http://drupal.org/project/node_export此模块将内容导入或导出到特定内容类型,它确实适用于我,并且图像也会自动上传。
在导入节点后,您必须考虑使用此模块,确保图像与其内容匹配。
使用此模块我已经从我的本地服务器站点上传了100多条新闻文章到我的网站。
答案 2 :(得分:0)
global $user;
$newnode = new stdClass();
$newnode->title = 'New node title';
$newnode->body = "this is a new node, created by import function";
$newnode->uid = $user->uid;
$newnode->type = 'theme_preview';
$newnode->status = 1;
$newnode->promote = 0;
$newnode->active = 1;
$newnode->field_theme_preview_demo_link[0]['value'] = 'test 1';
$newnode->field_theme_preview_content_styl[0]['value'] = 'Books';
$field = field_file_save_file(
'sites/default/files/srcImage1.jpg',
array(),
'sites/default/files/theme_preview_thumbs');
if( !isset($field['data']) ) $field['data'] = array();
$field['data']['title'] = "the image title";
$field['data']['alt'] = "the image alt";
$newnode->field_theme_preview_thumb = array(0 => $field);
$newnode = node_submit($newnode);
node_save($newnode);