Wyłącz pathauto dla węzłów utworzonych za pomocą modułu migracji


14

Korzystam z migrowania, aby zaimportować kilka węzłów i chcę ustawić alias ścieżki podczas migracji. Jestem w stanie zaimportować alias ścieżki tak:

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

Kiedy patrzę na zaimportowane węzły, widzę poprawną ścieżkę w pathpolu, ale pole Generate automatic URL aliaswyboru jest nadal zaznaczone, co oznacza, że ​​ustawienie jest ignorowane.

Jak wyłączyć to ustawienie w węźle podczas migracji?

Odpowiedzi:


10

Zasadniczo musisz upewnić się, że $nodeobiekt jest przekazywany z pathautoustawioną wartością false podczas zapisywania.

W twojej klasie migracji:

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

Próbowałem tego, ale Generate automatic URL aliasnadal jest sprawdzane.
Kenny Wyland

Ale wypróbowałem twoją sugestię w metodzie prepar () zamiast preparRow () i zadziałało! Jeśli edytujesz swój post, zaakceptuję go jako odpowiedź. Dzięki!
Kenny Wyland

Edytowano - po raz pierwszy wprowadzono złą metodę :)
jhedstrom

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

Pracuje dla mnie. Pathauto: Wykonaj aliasing (ustaw na 0, aby zapobiec generowaniu aliasu podczas migracji. Zobacz „drush ma” + nazwa swojej klasy, aby uzyskać pełny opis


0

Jeśli czasami, ale nie zawsze, masz przychodzący alias ścieżki, oto jak możesz uruchomić pathauto tylko wtedy, gdy nie ustawiłeś aliasu.

Po pierwsze, w konstruktorze, zarówno map pathi pathauto:

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

Następnie w ::prepareRow()ustaw pathautowłaściwość w zależności od tego, czy jest pathwartość przychodząca :

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

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

}

Powoduje to, że jeśli wyraźnie przeszedłeś ścieżkę, która będzie używana dla aliasu, a jeśli nie, Pathauto się włączy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.