Das Szenario geht so, ich habe einen Knotentyp, der viele Taxonomie-Termfelder enthält. Es gibt auch andere Felder wie Text, Datum usw., aber 90% davon sind Taxonomiefelder. Mir ist bekannt, dass ein Knoten auf zwei Arten programmgesteuert erstellt werden kann:
node_save () - Ein Knotenobjekt erstellen und speichern
$node = new stdClass(); $node->type = 'article'; $node->field_term[LANGUAGE_NONE][0]['tid'] = 3128 // term id of the term node_save($node);
Formular senden - Erstellen eines Formulararrays und Senden mit drupal_form_submit
$node[field_first]['und'] => chennai; $node[field_second]['und'] => "iphone5"; $node['type'] = 'article'; $form_state['values'] = $node; $form_state['values']['op'] = t('Save'); drupal_form_submit($node_type . '_node_form', $form_state, (object)$node);
mit $ node mit den POST-Werten.
Der Vorteil der Formularübermittlungsmethode besteht darin, dass Drupal sich um die Erstellung neuer Begriffe im Wortschatz kümmert (ich sollte mehr neue Begriffe erhalten). Das Senden von Formularen kann auf Formularüberprüfungen folgen, die zum Erstellen eines Knotens erforderlich sind.
Gibt es eine Methode, um Knoten schneller im Drupal-System zu erstellen, die mehr Begriffe enthalten soll?
Wenn es keine andere als die oben genannte Methode gibt, welche ist die beste?
Antworten:
Die sicherste Methode ist die Verwendung von drupal_form_submit (). Wenn Sie sich das Servicemodul ansehen, macht es dasselbe. Die Formularüberprüfung sollte wichtig sein, wenn Sie Knoten programmgesteuert erstellen. Importieren oder erstellen Sie mehrere Knoten gleichzeitig? Wenn dies der Fall ist und Sie Bedenken hinsichtlich der Leistung haben, können Sie die Batch-API oder -Warteschlange von Drupal verwenden. Batch ist großartig, wenn Sie Benutzer-Feedback benötigen, aber wenn Sie Knoten auf cron erstellen und keine Benutzeroberfläche mit Feedback benötigen, ist die Warteschlange der richtige Weg. In beiden Fällen kümmern sie sich für Sie um die Speicherverwaltung.
Ich würde mir keine Gedanken darüber machen, wie lange es dauert, einen Knoten zu erstellen, da dies mit der Benutzeroberfläche so lange dauern würde. Es sei denn, der Grund, warum Sie dies über Codes tun, besteht darin, die Erstellungszeiten zu verlängern.
quelle