Вимкнути патавто для вузлів, створених за допомогою модуля міграції


14

Я використовую migrate, щоб імпортувати купу вузлів, і я хочу встановити псевдонім шляху під час міграції. Я можу імпортувати псевдонім шляху просто так:

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

Коли я дивлюся на імпортовані вузли, я бачу правильний шлях у pathполі, але Generate automatic URL aliasпрапорець все ще встановлений, що означає, що налаштування ігнорується.

Як відключити це налаштування на вузлі під час міграції?

Відповіді:


10

По суті, вам потрібно переконатися, що $nodeоб'єкт передається з pathautoзначенням false, коли він зберігається.

У вашому класі міграції:

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

Я спробував це, але Generate automatic URL aliasвсе ще перевіряється.
Кенні Віланд

Але я спробував вашу пропозицію в методі priprav () замість PrepaRow (), і це спрацювало! Якщо ви відредагуєте свою публікацію, я прийму це як відповідь. Спасибі!
Кенні Віланд

Відредаговано - отримав неправильний метод вперше :)
jhedstrom

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

Працює для мене. Pathauto: Виконайте псевдонім (встановлено на 0 для запобігання генерації псевдоніму під час міграції. Повний опис див. "Drush ma" + ім'я вашого класу


0

Якщо у вас іноді, але не завжди є псевдонім вхідного шляху, то ось як ви можете запустити патауто лише тоді, коли ви не встановили псевдонім.

По-перше, у конструкторі нанесіть на карту обидва pathта pathauto:

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

Потім ::prepareRow()встановіть pathautoвластивість залежно від того, чи є вхідне pathзначення:

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

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

}

Результат полягає в тому, що якщо ви явно пройшли шлях, який буде використовуватися для псевдоніму, тоді як якщо ви ще цього не зробили, Патхауто запуститься.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.