Skapar nod programmatiskt och vill sätta flera taxonomy-attribut på en gång

Events happening in the community are now at Drupal community events on www.drupal.org.
cato's picture

Tjosan.

Jo, så här då, jag skapar ett gäng noder via ett externt batchskript. Noderna ska ha terms i två olika vokabulärer; Catalog och Tags; vilket blir lite klurigt. Den första termen (Catalog) sparas helt korrekt men den andra som är av formen fritaggar sparas inte alls. Så här ser koden ut

        $node = new stdClass();
        .........   
        // taxonomy
        $tid = 0;
        //echo "Varugrupp: " . $row['varugrupp'] . "\n";
        if (!empty($row['varugrupp'])){
            $termkey = $row['varugrupp'];
        } else {
            $termkey = '063 Övrigt';
        }       
        $term = array_pop(taxonomy_get_term_by_name($termkey));       
        $node->taxonomy = array(
            'Catalog' => $term,
            'Tags' => array('2' => implode(',',$tags))
            );
        // save node
        $node->op = t('Save');
        content_presave($node);
        content_insert($node);
        if($node = node_submit($node)){
            node_save($node);
            echo "Saved.";
        }

$tags är en array som byggs ihop av olika ord som finns i ursprungsdatat som jag skapar noder från och orden ska alltså in i fritaggningsvokabulären 'Tags' med vid 2. Där inget av orden finns från början, behöver jag skapa dem i förväg?
$term kommer från en lookup som görs mot vokabulären Catalog där termerna är skapade i förväg.

Tags-biten funkar alltså inte medan Catalog-biten funkar, dock inte i den ovanstående tappningen utan snarare som $node->taxonomy = $term
Det jag vill göra är alltså att sätta Catalog och Tags på samma gång och jag undrar hur den koden ska se ut.
Tacksam för hjälp!

//Cato

Comments

Kan följande ge dig en hint?

sl27257's picture

Kan följande ge dig en hint?

För Drupal 6:

http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/func...

För Drupal 7:

http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/func...

Nu har jag inte gjort något för Drupal 7 än så där är jag ute på hal is...

/Thomas

Jovars

cato's picture

Tackar! Det gav en klar hint om vad Drupal förväntar sig i input iaf.
Gjort ett testcase som verkar fungera, tricket för mig är att inte göra en taxonomy_term_by_name($category) först utan låta Drupal hantera det på node_save-hooken själv.

Så:

    $category = 'Testkategori';
    $tags = "apple,orange,pear,banana";
    $node->taxonomy = array(
        'category' => array('1' => $category),
        'tags'=> array('2'  =>  $tags)
    );

Funkar klockrent.