Deshabilite Pathauto para los nodos creados con el módulo de migración

14

Estoy usando migrate para importar un grupo de nodos y quiero establecer el alias de ruta durante la migración. Puedo importar el alias de ruta muy bien así:

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

Cuando miro los nodos importados, veo la ruta correcta en el pathcampo, pero la Generate automatic URL aliascasilla de verificación todavía está marcada, lo que significa que se ignora la configuración.

¿Cómo deshabilito esa configuración en el nodo durante la migración?

Kenny Wyland
fuente

Respuestas:

10

Básicamente, debe asegurarse de que el $nodeobjeto se pasa con pathautoset a false cuando se guarda.

En tu clase de migración:

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}
jhedstrom
fuente
Lo intenté, pero Generate automatic URL aliastodavía está marcado.
Kenny Wyland
¡Pero probé su sugerencia en el método prepare () en lugar de prepareRow () y funcionó! Si editas tu publicación, la aceptaré como respuesta. ¡Gracias!
Kenny Wyland
Editado - obtuve el método equivocado la primera vez :)
jhedstrom
8
$this->addFieldMapping('pathauto')->defaultValue(0);

Funciona para mi. Pathauto: Realizar alias (establecido en 0 para evitar la generación de alias durante la migración Ver 'drush ma' + nombre de su clase para una descripción completa

Luc Bézier
fuente
0

Si a veces tiene un alias de ruta entrante, pero no siempre, así es como puede activar pathauto solo cuando no haya establecido un alias.

Primero, en el constructor, mapea ambos pathy pathauto:

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

Luego, en ::prepareRow(), establezca la pathautopropiedad dependiendo de si hay un pathvalor entrante :

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

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

}

El resultado es que si ha pasado explícitamente en una ruta que se utilizará para el alias, mientras que si no lo ha hecho, Pathauto se activará.

nedjo
fuente