Php 如何在使用node_save($node)创建图像时将图像附加到节点;
您好,我正在使用drupal 7,并尝试通过使用php解析xml来导入数据,然后使用Php 如何在使用node_save($node)创建图像时将图像附加到节点;,php,drupal,drupal-6,drupal-7,Php,Drupal,Drupal 6,Drupal 7,您好,我正在使用drupal 7,并尝试通过使用php解析xml来导入数据,然后使用node\u save($node)创建节点 到目前为止,我已经成功地从xml创建了没有任何图像的节点。我想在导入图像时将其附加到节点 我知道Drupal7仍然在alpha 6中,但它很好node\u save($node)函数与drupal 6中的几乎相同,但略有不同 好的,这是我的代码图像文件路径存储在一个变量中…任何帮助都会很好…提前谢谢 function main($head, $txt) { $no
node\u save($node)
创建节点
到目前为止,我已经成功地从xml创建了没有任何图像的节点。我想在导入图像时将其附加到节点
我知道Drupal7仍然在alpha 6中,但它很好node\u save($node)
函数与drupal 6中的几乎相同,但略有不同
好的,这是我的代码图像文件路径存储在一个变量中…任何帮助都会很好…提前谢谢
function main($head, $txt) {
$nodes = array();
$nodes[0]['title'] = $head; // node name
$nodes[0]['body'] = $txt; // body text for the node
$nodes[0]['teaser'] = '<p>A node</p>';
$nodes[0]['timestamp'] = 1281765101;
$nodes[0]['format'] = 2;
make_nodes($nodes);
}
function make_nodes($nodes) {
$new_node = $nodes[0];
$node = new stdClass();
$node->type = 'article';
$node->status = 1;
$node->uid = 1;
$node->title = $new_node['title'];
$node->promote = 1;
$node->created = $new_node['timestamp'];
$node->timestamp = $new_node['timestamp'];
$node->changed= $new_node['timestamp'];
$node->sticky = 0;
$node->language = 'en';
$node->body['und'][0]['format'] = 3;
$node->body['und'][0]['summary'] = $new_node['teaser'];
$node->body['und'][0]['value'] = $new_node['body'];
$node->revision = 0;
node_submit($node);
node_save($node);
}
函数主($head,$txt){
$nodes=array();
$nodes[0]['title']=$head;//节点名称
$nodes[0]['body']=$txt;//节点的正文文本
$nodes[0]['striser']='A节点';
$nodes[0]['timestamp']=1281765101;
$nodes[0]['format']=2;
生成_节点($nodes);
}
函数make_节点($nodes){
$new_node=$nodes[0];
$node=新stdClass();
$node->type='article';
$node->status=1;
$node->uid=1;
$node->title=$new_node['title'];
$node->promote=1;
$node->created=$new_节点['timestamp'];
$node->timestamp=$new_node['timestamp'];
$node->changed=$new_节点['timestamp'];
$node->sticky=0;
$node->language='en';
$node->body['und'][0]['format']=3;
$node->body['und'][0]['summary']=$new_node['striser'];
$node->body['und'][0]['value']=$new_node['body'];
$node->revision=0;
节点提交($node);
节点\保存($node);
}
您好。在阅读了10个小时的文档之后,我终于做到了……我在这里包含了我的代码
$uri = 'bird/bird_image.jpg';
$files = new stdClass();
$files->uid = (isset($local_user->uid) && !empty($local_user->uid)?$local_user->uid:1);
$files->filename = 'bird.jpg';
$files->uri = $uri;
$files->filemime = file_get_mimetype($uri);
$files->status = 1;
$files->timestamp = $new_node['timestamp'];
file_copy($files);
Zero Cool最初提出的问题是“如何在创建节点时将图像附加到节点” 我在任何地方都没有看到完整的答案,因此下面是一些在Windows 8上的Drupal 7.27中适用于我的代码:) 此节点的“分类”内容类型有3个字段:标题、正文和字段\广告\图像(这只是图像字段类型)
$node=newstdclass();
$node->type='classified';
节点_对象_准备($node);//设置一些默认值。
$node->language=语言\u无;
$node->title=“使用图像测试节点”;
$node->body[LANGUAGE_NONE][0]['value']=strip_标记(“body text示例”);
$node->body[LANGUAGE_NONE][0]['format']='plain_text';//或者“完整的html”,如果你愿意的话
//获取pathauto以生成URL别名
$node->path['pathauto']=1;
//由用户1创建
$node->uid=1;
//映像目录必须对Drupal的本地文件系统可见,
//例如,这里是站点/默认/文件/广告
$directory\u uri='0public://adverts';
//该目录中的示例图像文件:
$my_image_file='32449.jpg';
//首先创建一个文件对象,并将其添加到Drupal的managed_files表中。。。
$file=新的stdClass();
$file->filename=$my\u image\u文件;
$file->uri=$directory\u uri.'/'.$my\u image\u file;
$file->filemime=file\u get\u mimetype($file->uri);
$file->status=文件\状态\永久;
$file->uid=1;
$file=file\u save($file);
//…然后使用新的文件对象。
$node->field\u advert\u image[语言\u NONE][0]=(数组)$file;
节点\保存($node);
//N.B.node_save()获取文件管理表中递增的计数;无需调用文件\u用法\u添加()
如果($node->nid){
echo“-已创建节点“$node->nid.”…“。打印($node,true)。“\n”;
}否则{
echo“-Drupal节点\u保存API调用失败\n”;
}
正如您可能猜到的,此代码从命令行PHP脚本运行
希望对其他人有所帮助。当您以编程方式创建节点时,请确保填充$node->name,因为对于所有有权管理节点的用户,
node\u submit()
会将您的$node->uid
更改为0(匿名),包括你的管理员用户。谢谢你的提示…但是我如何在drupal 7中将这个节点的图片作为图像附加在一起这不像你不需要填充$node->name。
$node = new stdClass();
$node->type = 'classified';
node_object_prepare($node); // Set some default values.
$node->language = LANGUAGE_NONE;
$node->title = "Test node with image";
$node->body[LANGUAGE_NONE][0]['value'] = strip_tags("<b>Body text example</b>");
$node->body[LANGUAGE_NONE][0]['format'] = 'plain_text'; // or 'full_html' if you want
// Get pathauto to generate an URL alias
$node->path['pathauto'] = 1;
// Created by user 1
$node->uid = 1;
// The image directory has to be visible to Drupal on its local file-system,
// e.g. here it would be sites/default/files/adverts
$directory_uri = 'public://adverts';
// example image file in that directory:
$my_image_file = '32449.jpg';
// First create a file object, and add it to Drupal's managed_files table...
$file = new stdClass();
$file->filename = $my_image_file;
$file->uri = $directory_uri.'/'.$my_image_file;
$file->filemime = file_get_mimetype($file->uri);
$file->status = FILE_STATUS_PERMANENT;
$file->uid = 1;
$file = file_save($file);
// ...then use the new file object.
$node->field_advert_image[LANGUAGE_NONE][0] = (array)$file;
node_save($node);
// N.B. node_save() gets the count incremented in the file_managed table; no need to call file_usage_add()
if ($node->nid) {
echo "- Created node ".$node->nid." ... ".print_r($node,true)."\n";
} else {
echo "- Drupal node_save API call failed\n";
}