pouvez-vous fournir un peu plus d'informations (quels modules?). En général, je suggérerais probablement d'appeler les fonctions des modules pour créer le type de contenu, au lieu d'essayer de le passer à travers un formulaire par programmation. De cette façon, vous n'avez pas à vous inquiéter de la mise en œuvre, et pouvez croire que si le module fonctionne, cela fonctionnera aussi pour votre script :)
Bien sûr, cela lie votre module au leur, donc tout changement dans leur les fonctions pourraient affecter le vôtre. (mais encore une fois, vous courez ce risque si elles mettent à jour leur structure de base de données aussi)
ex.
// your file.php
function mymodule_do_stuff() {
cck_create_field('something'); // as an example, i doubt this
// is a real CCK function :)
}
modifier: vid
et nid
sont les ID nœud, vid
est l'ID de révision et nid
est la clé primaire d'un nœud particulier. parce que c'est un nœud réel, vous devrez peut-être faire deux opérations.
créer programatically un nœud
vous devrez faire référence à la base de données pour tous les champs exacts (tables node
et node_revisions
), mais cela devrait vous obtenir un nœud de travail de base:
$node = (object) array(
'nid' => '', // empty nid will force a new node to be created
'vid' => '',
'type' => 'simplefeed'. // or whatever this node is actually called
'title' => 'title of node',
'uid' => 1, // your user id
'status' => 1, // make it active
'body' => 'actual content',
'format' => 1,
// these next 3 fields are the simplefeed ones
'url' => 'simplefeed url',
'expires' => 'whatever value',
'refresh' => 'ditto',
);
node_save($node);
maintenant je pense il devrait appeler automatiquement hook_insert()
de simplefeed à ce stade. sinon, passez à 2. mais je vérifierai pour voir si cela a déjà fonctionné.
appelez-le vous-même!
simplefeed_insert($node);
Edit2: drupal_execute()
est pas une mauvaise idée non plus, comme vous pouvez récupérer une validation, mais cette façon vous ne devez pas traiter avec l'API de formulaires si vous êtes pas à l'aise avec ça. Je suis assez sûr que node_save()
invoque tous les hooks de toute façon, donc vous devriez vraiment seulement faire l'étape 1 sous cette méthode.
avez-vous une référence pour cela? node_save est comment drupal construit des noeuds, je n'ai vu aucune indication qu'ils se déplacent vers un modèle différent. – Owen
J'aurais dû être plus clair. Je n'ai pas entendu dire que node_save est déprécié, mais l'utiliser pour résoudre ce type de problème est. J'ai eu plusieurs conversations drupal irc où on m'a dit que node_save était l'ancienne façon de résoudre ce problème et drupal_execute est la nouvelle façon. –
Il ya une bonne discussion de quand utiliser chacun dans les commentaires à http://www.lullabot.com/articles/quick_and_dirty_cck_imports –