对使用迁移模块创建的节点禁用pathauto


14

我使用迁移导入一堆节点,我希望在迁移过程中设置的路径别名。我可以像这样导入路径别名:

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

当我查看导入的节点时,我在path字段中看到了正确的路径,但是Generate automatic URL alias仍选中了该复选框,这意味着该设置将被忽略。

迁移期间如何在节点上禁用该设置?

Answers:


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。

首先,在构造函数中,同时映射pathpathauto

$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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.