2011-11-03 7 views
0

J'essaye de construire un petit outil avec PHP pour importer du contenu de mon CMS actuel dans Drupal 7 parce que j'ai environ 10k + articles à apporter. Jusqu'à présent, j'ai obtenu le titre, résumé, corps, auteur et date de publication à venir, mais quand il s'agit de catégories (tags), je suis complètement déconcerté. Chacune de mes catégories/étiquettes actuelles est stockée dans une table de base de données, chacune ayant son propre ID, nom et description. Je peux tirer cela par article et le trier comme je le voudrais (chaîne, tableau, etc).Drupal 7 API + Taxonomie

Pendant mon importation, je suppose que je devrais faire quelque chose comme ceci:

$node->field_tags = array(
    'und' => array(
     array(
      'Update', 
      'News', 
      'Report' 
     ) 
    ) 
); 

J'ai aussi essayé:

$node->field_tags = array(
    'Update', 
    'News', 
    'Report' 
); 

Mais ceux-ci, ni l'alimentation dans une chaîne séparées par des virgules de mots ne fonctionne pas. La documentation de l'API Drupal 7 ne semble pas expliquer cela n'importe où que j'ai trouvé.

Quel est le format d'envoi de balises ou quelle est la page de documentation que je n'ai pas trouvée? Merci d'avance!

Répondre

1

Les champs de terme de Drupal 7 sont liés à des termes de taxonomie physique. Vous devez donc créer un terme pour chaque catégorie, puis ajouter cette référence en tant que valeur de champ.

Ce code pourrait aider:

// Load the tags vocabulary 
$vocab = taxonomy_vocabulary_machine_name_load('tags'); 

$term = new stdClass; 
$term->vid = $vocab->vid; // Attach the vocab id to the new term 
$term->name = 'Category Name'; // Give the term a name 
taxonomy_term_save($term); // Save it 

// Add the tags field 
$node->field_tags = array(
    LANGUAGE_NONE => array(
    'tid' => $term->tid // Relate the field to the new category term using it's tid (term id) 
) 
); 
+0

Merci pour votre réponse! Et si je voulais ajouter plusieurs tags? Ils ne peuvent certainement pas tous avoir l'index 'tid'. – devincrisis

+0

Oui, chaque balise que vous ajoutez est un terme de taxonomie et chaque terme de taxonomie doit exister en son propre nom, sinon Drupal n'a rien à voir avec. – Clive