Отключить pathauto для узлов, созданных с помощью модуля миграции


14

Я использую миграцию для импорта группы узлов и хочу задать псевдоним пути во время миграции. Я в состоянии импортировать псевдоним пути просто так:

$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все еще проверено.
Кенни Уайлэнд,

Но я попробовал ваше предложение в методе prepare () вместо prepareRow (), и это сработало! Если вы отредактируете свой пост, я приму его в качестве ответа. Благодарность!
Кенни Уайлэнд,

Отредактировано - неверный метод в первый раз :)
jhedstrom

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

Работает для меня. Pathauto: Выполнить псевдонимы (установите в 0, чтобы предотвратить генерацию псевдонимов во время миграции. См. «Drush ma» + имя вашего класса для полного описания).


0

Если у вас иногда, но не всегда, будет псевдоним входящего пути, то вот как вы можете вызвать pathauto, только если вы не установили псевдоним.

Сначала в конструкторе отобразите оба 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;
  }

}

В результате, если вы явно указали путь, который будет использоваться для псевдонима, тогда как, если вы этого не сделаете, Pathauto включится.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.