Deaktivieren Sie pathauto für Knoten, die mit migrate module erstellt wurden


15

Ich verwende migrate , um eine Reihe von Knoten zu importieren, und möchte den Pfadalias während der Migration festlegen. Ich kann den Pfad-Alias ​​wie folgt importieren:

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

Wenn ich mir die importierten Knoten ansehe, sehe ich den richtigen Pfad im pathFeld, aber das Generate automatic URL aliasKontrollkästchen ist immer noch aktiviert, was bedeutet, dass die Einstellung ignoriert wird.

Wie deaktiviere ich diese Einstellung auf dem Knoten während der Migration?

Antworten:


10

Grundsätzlich müssen Sie sicherstellen, dass das $nodeObjekt beim Speichern mit dem pathautoWert false übergeben wird.

In Ihrer Migrationsklasse:

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

Ich habe das versucht, aber das Generate automatic URL aliaswird noch geprüft.
Kenny Wyland

Aber ich habe Ihren Vorschlag in der prepare () -Methode anstelle von prepareRow () ausprobiert und es hat funktioniert! Wenn Sie Ihren Beitrag bearbeiten, werde ich ihn als Antwort akzeptieren. Vielen Dank!
Kenny Wyland

Bearbeitet - habe beim ersten Mal die falsche Methode gefunden :)
jhedstrom

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

Funktioniert bei mir. Pathauto: Aliasing ausführen (auf 0 gesetzt, um die Generierung von Aliasen während der Migration zu verhindern. Eine vollständige Beschreibung finden Sie unter 'drush ma' + Name Ihrer Klasse


0

Wenn Sie manchmal, aber nicht immer, einen eingehenden Pfadalias haben, können Sie pathauto wie folgt nur auslösen, wenn Sie keinen Alias ​​festgelegt haben.

Ordnen Sie im Konstruktor zunächst beide pathund Folgendes zu pathauto:

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

Legen Sie dann in ::prepareRow()die pathautoEigenschaft fest, je nachdem, ob ein eingehender pathWert vorliegt :

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

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

}

Das Ergebnis ist, dass, wenn Sie explizit einen Pfad eingegeben haben, der für den Alias ​​verwendet wird, Pathauto aktiv wird, wenn Sie dies nicht getan haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.