Vô hiệu hóa pathauto cho các nút được tạo bằng mô-đun di chuyển


15

Tôi đang sử dụng di chuyển để nhập một loạt các nút và tôi muốn đặt bí danh đường dẫn trong quá trình di chuyển. Tôi có thể nhập bí danh đường dẫn tốt như vậy:

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

Khi tôi nhìn vào các nút đã nhập, tôi thấy đường dẫn chính xác trong pathtrường, nhưng Generate automatic URL aliashộp kiểm vẫn được chọn, điều đó có nghĩa là cài đặt đang bị bỏ qua.

Làm cách nào để tắt cài đặt đó trên nút trong khi di chuyển?

Câu trả lời:


10

Về cơ bản, bạn cần chắc chắn rằng $nodeđối tượng được truyền vào pathautođược đặt thành false khi nó được lưu.

Trong lớp di chuyển của bạn:

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

Tôi đã thử điều đó, nhưng Generate automatic URL aliasvẫn được kiểm tra.
Kenny Wyland

Nhưng tôi đã thử đề xuất của bạn trong phương thức chuẩn bị () thay vì chuẩn bịRow () và nó đã hoạt động! Nếu bạn chỉnh sửa bài viết của mình thì tôi sẽ chấp nhận nó là câu trả lời. Cảm ơn!
Kenny Wyland

Đã chỉnh sửa - lần đầu tiên có phương pháp sai :)
jhedstrom

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

Làm việc cho tôi. Pathauto: Thực hiện bí danh (được đặt thành 0 để ngăn việc tạo bí danh trong quá trình di chuyển Xem 'drush ma' + tên của lớp của bạn để mô tả đầy đủ


0

Nếu đôi khi bạn không phải lúc nào cũng có bí danh đường dẫn đến, thì đây là cách bạn có thể kích hoạt pathauto chỉ khi bạn chưa đặt bí danh.

Đầu tiên, trong hàm tạo, ánh xạ cả hai pathpathauto:

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

Sau đó, ::prepareRow()đặt pathautothuộc tính tùy thuộc vào việc có pathgiá trị đến hay không :

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

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

}

Kết quả là nếu bạn rõ ràng đã đi qua một con đường sẽ được sử dụng cho bí danh, trong khi nếu bạn không Pathauto sẽ đá vào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.