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?

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

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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.