ปิดใช้งาน pathauto สำหรับโหนดที่สร้างด้วยโมดูลการโอนย้าย


14

ฉันใช้การโยกย้ายเพื่อนำเข้าพวงของโหนดและฉันต้องการตั้งค่านามแฝงเส้นทางระหว่างการโยกย้าย ฉันสามารถนำเข้านามแฝงเส้นทางได้อย่างดีเช่น:

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

เมื่อฉันดูที่โหนดนำเข้าฉันเห็นเส้นทางที่ถูกต้องในpathฟิลด์ แต่Generate automatic URL aliasช่องทำเครื่องหมายยังคงถูกตรวจสอบซึ่งหมายความว่าการตั้งค่าจะถูกละเว้น

ฉันจะปิดใช้งานการตั้งค่าบนโหนดระหว่างการโอนย้ายได้อย่างไร

คำตอบ:


10

คุณจำเป็นต้องตรวจสอบให้แน่ใจว่า$nodeวัตถุนั้นถูกส่งผ่านพร้อมกับpathautoตั้งค่าเป็นเท็จเมื่อมีการบันทึก

ในชั้นเรียนการย้ายถิ่นของคุณ:

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

ฉันลองสิ่งนั้น แต่Generate automatic URL aliasยังมีการตรวจสอบอยู่
Kenny Wyland

แต่ฉันลองใช้คำแนะนำของคุณในวิธีการเตรียม () แทนการเตรียมตัวล่วงหน้า () และใช้งานได้! หากคุณแก้ไขโพสต์ของคุณฉันจะยอมรับมันเป็นคำตอบ ขอบคุณ!
Kenny Wyland

Edited - มีวิธีการที่ไม่ถูกต้องครั้งแรกรอบ :)
jhedstrom

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

ได้ผลสำหรับฉัน Pathauto: ดำเนินการนามแฝง (ตั้งค่าเป็น 0 เพื่อป้องกันการสร้างนามแฝงระหว่างการย้ายข้อมูลดูที่ 'drush ma' + ชื่อคลาสของคุณสำหรับคำอธิบายแบบเต็ม


0

หากบางครั้งคุณจะมีนามแฝงเส้นทางที่เข้ามาไม่ได้นี่คือวิธีที่คุณสามารถทริกเกอร์เส้นทางอัตโนมัติเฉพาะเมื่อคุณไม่ได้ตั้งชื่อแทน

ก่อนอื่นใน Constructor ให้จับคู่ทั้งสอง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 จะเตะเข้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.