Desativar pathauto para nós criados com o módulo de migração


15

Estou usando migrar para importar vários nós e quero definir o alias do caminho durante a migração. Eu sou capaz de importar o alias do caminho muito bem assim:

$this->addFieldMapping('path', 'url_alias');

Quando olho para os nós importados, vejo o caminho correto no pathcampo, mas a Generate automatic URL aliascaixa de seleção ainda está marcada, o que significa que a configuração está sendo ignorada.

Como desabilito essa configuração no nó durante a migração?

Respostas:


10

Basicamente, você precisa garantir que o $nodeobjeto seja passado com pathautoset para false quando for salvo.

Na sua classe de migração:

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}

Eu tentei isso, mas o Generate automatic URL aliasainda está marcado.
precisa

Mas tentei sua sugestão no método prepare () em vez de prepareRow () e funcionou! Se você editar sua postagem, eu a aceitarei como resposta. Obrigado!
precisa

Editado - tem o método errado da primeira vez :)
jhedstrom

8
$this->addFieldMapping('pathauto')->defaultValue(0);

Funciona para mim. Pathauto: Execute o alias (defina 0 para impedir a geração do alias durante a migração. Consulte 'drush ma' + nome da sua classe para obter uma descrição completa


0

Se, às vezes, mas nem sempre, você tiver um alias de caminho de entrada, veja como você pode ativar o pathauto apenas quando não tiver definido um alias.

Primeiro, no construtor, mapeie ambos pathe pathauto:

$this->addFieldMapping('path', 'path');
$this->addFieldMapping('pathauto', 'pathauto');

Em seguida, em ::prepareRow(), defina a pathautopropriedade dependendo se há um pathvalor recebido :

public function prepareRow($row) {
  parent::prepareRow($row);

  if (!empty($row->path)) {
    $row->pathauto = 0;
  }
  else {
    $row->pathauto = 1;
  }

}

O resultado é que, se você passou explicitamente em um caminho que será usado para o pseudônimo, enquanto que se não tiver Pathauto, entrará em ação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.