Frage

In einem benutzerdefinierten Modul für Drupal 4.7 I zusammen Objekt einen Knoten gehackt und übergeben es ($ node) node_save zu Knoten erstellen. Dieser Hack erscheint nicht mehr in Drupal arbeiten 6. Während ich dieser Hack bin sicher fixiert werden könnte ich bin gespannt, ob es eine Standardlösung Knoten ohne eine Form zu erstellen. In diesem Fall werden die Daten aus einem benutzerdefinierten Feed auf einer anderen Website eingezogen.

War es hilfreich?

Lösung

Ich weiß nicht, von einem Standard-API für einen Knoten pragmatisch zu schaffen. Aber das ist, was ich von dem Aufbau einer Modul aufgelesen habe, das tut, was Sie zu tun versuchen.

  1. Stellen Sie sicher, dass die wichtigen Felder gesetzt: uid, Name, Typ, Sprache, Titel, Körper, Filter (siehe node_add() und node_form())
  2. Führen Sie den Knoten durch node_object_prepare() so andere Module zu dem $ Knotenobjekt hinzufügen können.

Andere Tipps

Die Best Practices Verfahren zur Herstellung dieses geschehen ist drupal_execute zu nutzen. drupal_execute wird Standard-Validierung und Basisknotenoperationen laufen, so dass die Dinge das System erwartet, dass die Art und Weise verhalten. drupal_execute hat seine Tücken und ist etwas weniger intuitiv als nur ein node_save, aber in Drupal 6, Sie drupal_execute in der folgenden Art und Weise nutzen können.


$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');

$node = new stdClass();
// I don't believe anything is required here, though 
// fields did seem to be required in D5

drupal_execute($form_id, $form_state, $node);

node_save () funktioniert immer noch gut in Drupal 6; Sie werden ein paar spezifische Stücke von Daten an Ort und Stelle müssen, damit es funktioniert.

$node = new stdClass();
$node->type = 'story';
$node->title = 'This is a title';
$node->body = 'This is the body.';
$node->teaser = 'This is the teaser.';
$node->uid = 1;
$node->status = 1;
$node->promote = 1;

node_save($node);

‚Status‘ und ‚fördert‘ sind leicht zu übersehen -., Wenn Sie diese nicht gesetzt ist, wird der Knoten bleibt nicht veröffentlicht und nicht aktiviert, und Sie werden nur sehen, wenn Sie auf den Content-Verwaltung Bildschirm gehen

Eine weitere Antwort, die ich war, entdeckt zu benutzen das Beispiel aus dem blogapi Modul in Drupal Kern. Die Tatsache, dass es in Kern gibt mir ein bisschen mehr Vertrauen, dass es in zukünftigen Versionen arbeitet weiterhin.

Es gibt einige gute Antworten oben, aber im konkreten Beispiel ein aufgenommenes Feed-Element in einen Knoten drehen, könnten Sie nehmen auch die Annäherung des Simplefeed-Modul ( http://wwww.drupal.org/project/simplefeed ). Dieses Modul nutzt die simplepie Motor Feeds aufnehmen und dann auch einzelne Elemente aus den einzelnen Feed in Knoten. Ich weiß, dass dies nicht speziell mit der Frage befaßt von Knoten von cron zu schaffen, aber es könnte eine einfachere Lösung für Ihr Problem insgesamt sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top