Nonaktifkan pathauto untuk node yang dibuat dengan modul migrasi

14

Saya menggunakan migrasi untuk mengimpor banyak node dan saya ingin menetapkan alias path selama migrasi. Saya dapat mengimpor path alias baik-baik saja seperti ini:

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

Ketika saya melihat node yang diimpor saya melihat jalur yang benar di pathlapangan, tetapi Generate automatic URL aliaskotak centang masih diperiksa yang berarti pengaturannya semakin diabaikan.

Bagaimana cara menonaktifkan pengaturan itu pada node selama migrasi?

Kenny Wyland
sumber

Jawaban:

10

Anda pada dasarnya perlu memastikan $nodeobjek dilewatkan dengan pathautodisetel ke false saat disimpan.

Di kelas migrasi Anda:

function prepare(&$row) {
  $row->path['pathauto'] = 0;
}
jhedstrom
sumber
Saya mencobanya, tetapi Generate automatic URL aliasmasih diperiksa.
Kenny Wyland
Tetapi saya mencoba saran Anda dalam metode persiapan () alih-alih persiapan () dan berhasil! Jika Anda mengedit posting Anda maka saya akan menerimanya sebagai jawabannya. Terima kasih!
Kenny Wyland
Diedit - mendapatkan metode yang salah saat pertama kali :)
jhedstrom
8
$this->addFieldMapping('pathauto')->defaultValue(0);

Bekerja untukku. Pathauto: Lakukan aliasing (atur ke 0 untuk mencegah pembuatan alias selama migrasi Lihat 'drush ma' + nama kelas Anda untuk keterangan lengkap

Luc Bézier
sumber
0

Jika Anda kadang-kadang tetapi tidak selalu memiliki alias jalur masuk, maka inilah cara Anda dapat memicu pathauto hanya ketika Anda belum menetapkan alias.

Pertama, di konstruktor, petakan keduanya pathdan pathauto:

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

Lalu, di ::prepareRow(), atur pathautoproperti tergantung pada apakah ada pathnilai yang masuk :

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

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

}

Hasilnya adalah jika Anda secara eksplisit melewati jalur yang akan digunakan untuk alias, sedangkan jika Anda belum, Pathauto akan masuk.

nedjo
sumber