Désactiver pathauto pour les nœuds créés avec le module de migration

14

J'utilise migrate pour importer un groupe de nœuds et je souhaite définir l'alias de chemin lors de la migration. Je suis en mesure d'importer l'alias de chemin comme suit:

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

Lorsque je regarde les nœuds importés, je vois le chemin correct dans le pathchamp, mais la Generate automatic URL aliascase est toujours cochée, ce qui signifie que le paramètre est ignoré.

Comment désactiver ce paramètre sur le nœud pendant la migration?

Kenny Wyland
la source

Réponses:

10

Vous devez essentiellement vous assurer que l' $nodeobjet est transmis avec pathautola valeur false lors de son enregistrement.

Dans votre classe de migration:

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}
jhedstrom
la source
J'ai essayé cela, mais le Generate automatic URL aliasest toujours vérifié.
Kenny Wyland
Mais j'ai essayé votre suggestion dans la méthode prepare () au lieu de prepareRow () et cela a fonctionné! Si vous modifiez votre message, je l'accepterai comme réponse. Merci!
Kenny Wyland
Modifié - obtenu la mauvaise méthode la première fois :)
jhedstrom
8
$this->addFieldMapping('pathauto')->defaultValue(0);

Travaille pour moi. Pathauto: effectuer l'alias (défini sur 0 pour empêcher la génération d'alias pendant la migration Voir 'drush ma' + nom de votre classe pour une description complète

Luc Bézier
la source
0

Si vous avez parfois mais pas toujours un alias de chemin entrant, voici comment vous pouvez déclencher pathauto uniquement si vous n'avez pas défini d'alias.

Tout d'abord, dans le constructeur, mappez les deux pathet pathauto:

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

Ensuite, dans ::prepareRow(), définissez la pathautopropriété selon qu'il existe une pathvaleur entrante :

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

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

}

Le résultat est que si vous avez explicitement passé un chemin qui sera utilisé pour l'alias, alors que si vous ne l'avez pas fait, Pathauto se déclenchera.

nedjo
la source