Risposte:
È possibile utilizzare EntityFieldQuery
per recuperare un elenco di nodi, quindi aggiornare i campi del nodo con node_save()
:
$lang = LANGUAGE_NONE; // Replace with ISO639-2 code if localizing
$node_type = 'page'; // Machine name of the content type
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('type', $node_type)
->execute();
if (!empty($result['node'])) {
$nodes = entity_load('node', array_keys($result['node']));
foreach($nodes as $node) {
// Replace field_foo with the machine name of the field to update.
// - 0 refers to specific value within the field array, for when the field contains
// multiple values. If the field only has one value, it should be 0.
$node->field_foo[$lang][0]['value'] = 'New Value';
node_save($node);
}
}
Se si tratta di un'operazione una tantum, è possibile utilizzare la funzione Execute PHP del modulo Devel per eseguire quanto sopra: in caso contrario, è possibile creare un semplice modulo personalizzato.
Vorrei usare Visualizzazioni Bulk Operations e utilizzare il "Esegui arbitraria PHP script" a che fare essenzialmente le voci di cui sopra, ma non hanno a che fare tutto il codice in più, solo il piccolo frammento che fa quello che si vuole (come $object->field_foo['und'][0]['value'] = 'some_value'
)
Se desideri solo aggiornare il campo con un certo valore, l'alternativa più performante alla risposta accettata è questa:
$lang = LANGUAGE_NONE; // Replace with ISO639-2 code if localizing
$node_type = 'page'; // Machine name of the content type
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'node')
->propertyCondition('type', $node_type)
->execute();
if (!empty($result['node'])) {
$nodes = entity_load('node', array_keys($result['node']));
foreach($nodes as $node) {
// Replace field_foo with the machine name of the field to update.
// - 0 refers to specific within the field array, for when the field contains
// multiple values. If the field only has one value, it should be 0.
$node->field_foo[$lang][0]['value'] = 'New Value';
field_attach_presave('node', $node);
field_attach_update('node', $node);
}
}
La differenza sta nell'utilizzare direttamente field_attach_presave
e le field_attach_update
funzioni, che aggiornano correttamente solo il campo del nodo e saltano il resto del processo di salvataggio del nodo. Ciò ha un impatto sul fatto che nessun hook di salvataggio / salvataggio nodo verrà chiamato, la data "modificata" non verrà aggiornata alla data corrente, ecc. Secondo il vostro caso d'uso potrebbe essere meglio usare l'intero processo node_save ().
Installa e abilita il modulo Operazioni collettive viste e crea una vista con una visualizzazione di pagina.
Aggiungi => Operazioni in blocco: campo Contenuto (Contenuto) in vista.
Fare riferimento
Seleziona i campi in cui desideri impostare il valore predefinito.
Nel tuo caso il suo titolo. Nell'immagine sono i tag.
Salva la vista e vai alla pagina che ha creato. Se si dispone di più di una pagina di risultati, è possibile scegliere di selezionare tutti gli elementi nella pagina corrente, tutti gli elementi in tutte le pagine oppure è possibile selezionare manualmente le caselle corrispondenti ai singoli nodi. Almeno una casella deve essere selezionata per procedere.
Ora imposti il valore predefinito e lo salvi.