You are here

怎么存入自已填写的,并用逗号隔开的标签tags呢?

moumouguoguo 的头像
Submitted by moumouguoguo on 星期六, 2013-09-28 11:09

老葛:

我这里有个自定义的表单,其中有一项是让用户自己输入tags,用逗号隔开的。但我不清楚怎么入库以及写入url alias。代码片断如下:

if(isset($content['group_tags'])){
        $group_tags = trim($content['group_tags']);
        $group_tags = str_replace(',', ',', $group_tags);
        $arr_tags = explode(',', $group_tags);
        if(!empty($arr_tags)){
            $vid = db_query("SELECT vid FROM {taxonomy_vocabulary} WHERE machine_name = 'group_tags'")->fetchField();
            foreach ($arr_tags as $key=>$tag) {
                $tag = trim($tag);
                //只匹配中文,英文的tags
                if(!empty($tag) && preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z]{2,}$/u",$tag)){
                    if ($term = taxonomy_get_term_by_name($tag)) {
                        $terms_array = array_keys($term);
                         $node->field_group_tags[LANGUAGE_NONE][$key]['tid'] = $terms_array['0'];
                    } else {
                        $term = new stdClass();
                        $term->name = $tag;
                        $term->vid = intval($vid);
                        $term = taxonomy_term_save ( $term );
                        $tid = intval($term->tid);
                        $node->field_group_tags[LANGUAGE_NONE][$key]['tid'] = $tid;
                    }
                }
            }
        }
    }

这样写玩后,当用户输入“恭喜,发财”的时候,taxonomy_term_data正常,但field_group_tags却只保存第一个tid=11的,第二个却没有保存。不知道为什么了?

打印$node->field_group_tags[LANGUAGE_NONE]的结果为:

Array
(
    [0] => Array
        (
            [tid] => 11
        )

    [1] => Array
        (
            [tid] => 12
        )

)

如果您有现成的例子就好了,我在您的几本书中,还没找到这方面的教程呢!

谢谢!

论坛:

Drupal版本: