Disabilita pathauto per i nodi creati con il modulo di migrazione


14

Sto usando migrate per importare un mucchio di nodi e voglio impostare l'alias del percorso durante la migrazione. Sono in grado di importare l'alias del percorso proprio così:

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

Quando guardo i nodi importati vedo il percorso corretto nel pathcampo, ma la Generate automatic URL aliascasella di controllo è ancora selezionata, il che significa che l'impostazione viene ignorata.

Come disabilitare tale impostazione sul nodo durante la migrazione?

Risposte:


10

Fondamentalmente è necessario assicurarsi che l' $nodeoggetto venga passato con pathautoimpostato su false quando viene salvato.

Nella tua classe di migrazione:

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

L'ho provato, ma Generate automatic URL aliasè ancora controllato.
Kenny Wyland,

Ma ho provato il tuo suggerimento nel metodo apprendi () invece di apprendi () e ha funzionato! Se modifichi il tuo post, lo accetterò come risposta. Grazie!
Kenny Wyland,

Modificato - ho ottenuto il metodo sbagliato la prima volta :)
jhedstrom il

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

Per me va bene. Pathauto: esegui l'aliasing (impostato su 0 per impedire la generazione di alias durante la migrazione Vedi 'drush ma' + nome della tua classe per la descrizione completa


0

Se a volte avrai un alias del percorso in entrata ma non sempre, ecco come puoi attivare pathauto solo quando non hai impostato un alias.

Innanzitutto, nel costruttore, mappare entrambi pathe pathauto:

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

Quindi, in ::prepareRow(), imposta la pathautoproprietà a seconda che esista un pathvalore in entrata :

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

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

}

Il risultato è che se hai esplicitamente passato un percorso che verrà utilizzato per l'alias, mentre se non hai Pathauto entrerà in azione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.