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?

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

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.