Rus*_*ell 5 drupal drupal-7 drupal-taxonomy
我有一个成功创建新节点的脚本.但是在保存之前我无法设置分类法.
我相信Drupal 6我会使用这种方法.
$cat1_tid = taxonomy_get_term_by_name($data[$i]['cat1']);
$cat2_tid = taxonomy_get_term_by_name($data[$i]['cat2']);
$cat3_tid = taxonomy_get_term_by_name($data[$i]['cat3']);
$node->taxonomy = array($cat1_tid, $cat2_tid, $cat3_tid);
Run Code Online (Sandbox Code Playgroud)
我想在Drupal 7中我会这样做(我的字段名是Catalog)
$node->taxonomy_catalog['und'][0] = array($term1Obj, $term2Obj);
Run Code Online (Sandbox Code Playgroud)
taxonomy_get_term_by_name似乎没有返回要插入节点对象的正确对象.
如果有人可以发光,赞赏.
谢谢
编辑
解:
// Taxonomy
$categories = array($data[$i]['cat1'], $data[$i]['cat2'], $data[$i]['cat3']);
foreach ($categories as $key => $category) {
if ($term = taxonomy_get_term_by_name($category)) {
$terms_array = array_keys($term);
$node->taxonomy_catalog[LANGUAGE_NONE][$key]['tid'] = $terms_array['0'];
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我最近用来将“命令”节点导入站点的一些快速而肮脏的代码。在中间,foreach 循环负责根据需要创建和分配术语。
$command = new stdClass;
$command->language = LANGUAGE_NONE;
$command->uid = 1;
$command->type = 'drubnub';
$command->title = $line['0'];
$command->body[LANGUAGE_NONE]['0']['value'] = $line['1'];
$command->url[LANGUAGE_NONE]['0']['value'] = trim($line['2']);
$command->uses[LANGUAGE_NONE]['0']['value'] = $line['3'];
$tags = explode(',', $line['4']);
foreach ($tags as $key => $tag) {
if ($term = taxonomy_get_term_by_name($tag)) {
$terms_array = array_keys($term);
$command->field_tags[LANGUAGE_NONE][$key]['tid'] = $terms_array['0'];
} else {
$term = new STDClass();
$term->name = $tag;
$term->vid = 1;
if (!empty($term->name)) {
$test = taxonomy_term_save($term);
$term = taxonomy_get_term_by_name($tag);
foreach($term as $term_id){
$command->product_tags[LANGUAGE_NONE][$key]['tid'] = $term_id->tid;
}
$command->field_tags[LANGUAGE_NONE][$key]['tid'] = $tid;
}
}
}
node_save($command);
Run Code Online (Sandbox Code Playgroud)