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?

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;
}

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


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á.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.