标签:列表   字段   系统   comment   多少   published   alt   filter   专利技术   
最近,我忙于一个网站迁移工作。网站是使用某个老式CMS建立的,有一定数量的文章、不同的分类数据和用户评论。我的团队被雇来把这些数据从这个浪费人力物力的老式CMS上完整的迁移到功能更现代的开源Drupal7上。我喜欢干这一类事儿,帮别人拜托封闭专利技术永远是一种快乐。为完成这个任务,我需要通过代码在Drupal7中批量创建节点、评论和分类。这在Drupal 6的版本上只是小菜一碟,但Drupal7核心中引入了entities和fields的概念,所以现在开发起来需要有一点变化。
现在,我贴出这篇文章,告诉大家如何在Drupal7中用代码创建节点、评论和分类。在下面的详细内容里,你可以学会如何:
 
- 通过代码编程创建一个节点
- 初始化一个节点对象
 
- 增加body字段
 
- 增加自定义字段
 
- 增加文件/图像字段
 
- 保存节点
 
 
- 通过代码编程创建一个评论
 
- 通过代码编程创建一个术语
 
1. 如何通过代码创建一个节点
1.1 初始化节点对象
- $node = new stdClass(); 
 
- $node->type = "page"; 
 
- $node->title = "文章的标题在此";  
 
- $node->language = LANGUAGE_NONE; 
 
- $node->uid = 1; 
 
- $node->path = array(‘alias‘ => ‘节点的路径别名‘); 
 
- node_object_prepare($node); 
 
 
 
注1:我们为$node->language设置了LANGUAGE_NONE的值,如果你没有开启Locale模块,那这个节点就不会被分配特定语言值。所以这也是为什么我们在此处写了LANGUAGE_NONE常量的原因——节点和字段可能存在于多个语言中,并不一定是一个语言。当你的站点是多语言的,且你又想为字段指定一个特定语言值的话,那么你可以访问Drupal的管理面板,按顺序打开配置->区域和语言->语言,来查看你的网站的使用的语言的语言代码值是多少。
 
 
1.2 增加body字段
 
- $node->body[$node->language][0][‘value‘] = ‘这里是body的正文文本‘;  
 
- $node->body[$node->language][0][‘summary‘] = ‘这里是body的摘要文本‘;  
 
- $node->body[$node->language][0][‘format‘] = ‘filtered_html‘; 
 
 
 
1.3 增加自定义字段
 
 
- $node->field_custom_name[$node->language][0][‘value‘] = ‘这里填写自定义字段的值‘;  
 
- $node->field_custom_name[$node->language][0][‘format‘] = ‘这里填写自定义字段的格式化选项值‘;  
 
 
 
1.4 增加 文件/图像 字段
 
- $file_path = drupal_realpath(‘somefile.png‘); 
 
- $file = (object) array(  
 
-           ‘uid‘ => 1,  
 
-           ‘uri‘ => $file_path,  
 
-           ‘filemime‘ => file_get_mimetype($filepath),  
 
-           ‘status‘ => 1,  
 
-  );   
 
- $file = file_copy($file, ‘public://‘); // 保存文件到相对于Drupal文件系统的根目录,你可以指定一个子目录,例如‘public://images‘  
 
- $node->field_image[LANGUAGE_NONE][0] = (array)$file; 
 
 
 
1.5 为节点增加一个术语
 
 
- $node->field_tags[$node->language][][‘tid‘] = 1;  
 
 
‘field_tags‘ 是一个隶属于你的内容的术语引用字段的名字,‘1‘是你希望指派给节点的术语的id
 
1.6 保存节点
 
- $node = node_submit($node); 
 
- node_save($node); 
 
 
 
 
2. 如何通过代码创建评论
 
- $comment = new stdClass(); 
 
- $comment->nid = $node->nid; 
 
- $comment->cid = 0; 
 
- $comment->pid = 0; 
 
- $comment->uid = 1; 
 
- $comment->mail = ‘email@example.com‘; 
 
- $comment->name = ‘User name‘; 
 
- $comment->thread = ‘01/‘; 
 
- $comment->hostname = ‘127.0.0.1‘ 
 
- $comment->created = time(); 
 
- $comment->is_anonymous = 0; 
 
- $comment->homepage = ‘‘; 
 
- $comment->status = COMMENT_PUBLISHED; 
 
- $comment->language = LANGUAGE_NONE; 
 
- $comment->subject = ‘评论标题‘;  
 
- $comment->comment_body[$comment->language][0][‘value‘] = ‘评论正文内容‘;   
 
- $comment->comment_body[$comment->language][0][‘format‘] = ‘filtered_html‘;   
 
- $comment->field_custom_field_name[LANGUAGE_NONE][0][‘value‘] = ‘Some value’; 
 
- comment_submit($comment); 
 
- comment_save($comment);  
 
 
 
3.  如何通过代码创建分类术语
这是本篇教程中最简单的部分,想创建一个术语你只需要执行下面的代码
 
- $term = new stdClass(); 
 
- $term->name = ‘术语名称‘;  
 
- $term->vid = 1; 
 
- $term->field_custom_field_name[LANGUAGE_NONE][0][‘value‘] = ‘任意值‘; 
 
- taxonomy_term_save($term); 
 
 
好了,这就是今天我要告诉大家的所有内容。希望这篇文章能帮到你,欢迎拍砖、转载。
如何在Drupal7中用代码批量创建节点、评论和分类
标签:列表   字段   系统   comment   多少   published   alt   filter   专利技术   
原文地址:http://www.cnblogs.com/wicub/p/6435307.html