drupal8创建方法:
https://www.drupal.org/docs/8/api/entity-api/content-entity
drupal8 需要引入相关应用
// Make sure that an object is an entity.
if ($object instanceof \Drupal\Core\Entity\EntityInterface) {
}
// Make sure it's a content entity.
if ($entity instanceof \Drupal\Core\Entity\ContentEntityInterface) {
}
// Get the entity type.
$entity->getEntityTypeId();
// Make sure it's a node.
if ($entity instanceof \Drupal\node\NodeInterface) {
}
// Using entityType() works better when the needed entity type is dynamic.
$needed_type = 'node';
if ($entity->getEntityTypeId() == $needed_type) {
}
drupal7创建方法:
1,如何编程方式添加节点(node)
1.1,初始化一个node object
1 2 3 4 5 6 7 | $node = new stdClass(); // 创建一个 node object $node->type = "page"; // 内容类型选择page,或者其他你想指定的 $node->title = "节点的标题"; $node->language = LANGUAGE_NONE; // 节点的语言类型,LANGUAGE_NONE 表示und,不分语言,如果你系统安装了Locale模块,有多语言,你也可以指定是什么语言 $node->uid = 1; // 添加人的id,1表示drupal的第一个用户,是超级管理员,如果你要指定一个其他已有的角色,可以设置那个角色的id。 $node->path = array('alias' => '文章的别名'); // 要来设置一个节点文章的别名 node_object_prepare($node); // 设置一些默认值。 |
我们设置$node->language值为LANGUAGE_NONE,如果你没有开启locale 模块,节点会分配一个特定的语言,因为locale模块不是每个人都安装的,这就是我们为什么设置值为LANGUAGE_NONE。在Drupal里面,node 跟 field 都是可以有超过一种语言的,所以如果你的网站是多语言的,你可以指定一个语言代码给这个字段,你可以通过在设置语言的页面看到语言代码,路径是:Configuration -> Regional and language -> Languages 【admin/config/regional/language】。
1.2,添加body字段内容
1 2 3 4 | // 添加body内容 $node->body[$node->language][]['value'] = '这里填写body的内容'; $node->body[$node->language][]['summary'] = '这里是body的简介,简介是在列别页(Teaser)显示'; $node->body[$node->language][]['format'] = 'filtered_html'; // 格式化内容,如果你想格式化为其他格式,可以在Administration » Configuration » Content authoring设置(admin/config/content/formats),这里我用filtered_html |
1.3,添加自定义字段内容
1 2 3 4 5 | // 这里是添加通过CCK/Field API生成的字段. $node->field_custom_name[$node->language][]['value'] = '这里是自定义字段的值'; // 如果你的字段是有格式的,别忘记定义 $node->field_custom_name[$node->language][]['format'] = '这里是字段的格式'; // 你可以通过这个方式添加其他的自定义字段 |
1.4,添加file / image字段内容
1 2 3 4 5 6 7 8 9 10 | // 一些系统中的文件 $file_path = drupal_realpath('somefile.png'); // 创建一个文件 object $file = (object) array( 'uid' => 1, 'uri' => $file_path, 'filemime' => file_get_mimetype($file_path), 'status' => 1, ); $file = file_copy($file, 'public://'); // 保存文件的位置,public://默认表示在sites/default/file下方,你可以定义一些二级文件夹,如 'public://images' $node->field_image[LANGUAGE_NONE][] = (array)$file; //把这个文件object关联到相对应的文件字段 |
1.5,添加taxonomy term 字段内容
1 | $node->field_tags[$node->language][]['tid'] = 1; |
'field_tags'是term reference字段的名称,'1'是你想增加到节点的term id,是不是很简单?
1.6,保存节点(node)
1 2 | $node = node_submit($node); // 准备提交 node_save($node); // 保存到节点,当做完这个操作后,系统会生成一个nid |
2,编程方式添加留言(comment)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 创建一个comment $comment = new stdClass(); // 创建一个comment object $comment->nid = $node->nid; // comment是附带在一个节点(node)上的,所以要填写这个comment所属于的节点的nid $comment->cid = ; // comment 的自身id $comment->pid = ; // comment 是可以多级回复的,所以comment有可能是属于某个comment,是父子关系,0表示没有上级comment $comment->uid = 1; // 用户的id,意思是谁添加这个comment的 $comment->mail = 'drupalla@drupalla.com'; // 用户的email $comment->name = '分头诗人'; // 如果是认证用户,这里会自动完成,如果是未登录的浏览者,这里需要自行填写。 $comment->thread = '01/'; // 非必要的,如果你需要线程控制,就添加这个,否则就将此行删除就可以 $comment->hostname = '127.0.01' // 非必要的. 你可以通过这样记录发布者的ip。 $comment->created = time(); // 非必要的. 你可以设置comment的发布时间。 $comment->is_anonymous = ; // 是否匿名用户 $comment->homepage = ''; // 添加首页 $comment->status = COMMENT_PUBLISHED; // 默认设置comment 自动发布。 $comment->language = LANGUAGE_NONE; // 跟node 类似,是语言控制 $comment->subject = 'Comment 标题'; $comment->comment_body[$comment->language][]['value'] = 'Comment body 内容'; // 这里类似node 节点 $comment->comment_body[$comment->language][]['format'] = 'filtered_html'; $comment->field_custom_field_name[LANGUAGE_NONE][]['value'] = ‘你设置的值’; // 非必要的,如果你的comment 增加了一些自定义字段,可以通过这个方式添加,类似节点(node) comment_submit($comment); // 准备保存 comment_save($comment); |
3,编程方式添加分类/标签(taxonomy)
这个章节非常简单,只需要下面几行代码:
1 2 3 4 5 | $term = new stdClass(); $term->name = 'Term Name'; $term->vid = 1; // ‘1’是 词汇表id(vocabulary id) $term->field_custom_field_name[LANGUAGE_NONE][]['value'] = '你设置的值'; // 非必要的,如果你的comment 增加了一些自定义字段,可以通过这个方式添加,类似节点(node) taxonomy_term_save($term); // 最后,保存 |
笔记分类