Adicionei um novo campo (texto) a um tipo de conteúdo do Drupal 7 que já possui muitos nós.
Como posso preencher o campo com um valor padrão para todos esses nós?
Você pode usar EntityFieldQuery
para recuperar uma lista de nós e atualizar os campos do nó com 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 for uma operação pontual, você pode usar a função Executar PHP do módulo Devel para executar o acima: caso contrário, você pode criar um módulo personalizado simples.
Eu usaria o Views Bulk Operations e o "Executar script arbitrário do PHP" para executar essencialmente os itens acima, mas você não precisa fazer todo o código extra, apenas o pequeno trecho que faz o que você deseja (como
$object->field_foo['und'][0]['value'] = 'some_value'
)fonte
Se você deseja apenas atualizar o campo com algum valor, a alternativa mais eficiente à resposta aceita é a seguinte:
A diferença está em usar diretamente
field_attach_presave
efield_attach_update
funções, que atualizam corretamente apenas o campo do nó e ignoram o restante do processo de salvamento do nó. Isso causa um impacto que nenhum gancho de pré-salvamento / salvamento de nó será chamado, a data "alterada" não será atualizada para a data atual etc. De acordo com o seu caso de uso, pode ser melhor usar o processo node_save () inteiro.fonte
Na verdade, o VBO (Views Bulk Operations) é uma boa solução. Além disso, com as versões mais recentes, você encontrará a opção "Modificar valores da entidade", que fornece uma maneira muito fácil de atualizar o idioma dos nós em uma operação.
fonte
Instale e ative o módulo Views Bulk Operations e crie uma exibição com uma exibição de página.
Adicionar => Operações em massa: campo Conteúdo (Conteúdo) em exibição.
Referir
Selecione os campos que você deseja definir o valor padrão.
No seu caso, seu título. Na imagem são tags.
Salve a visualização e vá para a página que ela criou. Se você tiver mais de uma página de resultados, poderá selecionar todos os itens na página atual, todos os itens em todas as páginas ou marcar manualmente as caixas correspondentes a nós individuais. Pelo menos uma caixa de seleção deve estar marcada para continuar.
Agora você define o valor padrão e o salva.
fonte