Score:0

Update Alias Programmatically

ธง us

I have a large website with 240 urls that need to be updated. I would like to do this programmatically to avoid making errors. I created the following function which seems to work. There seems to be a good bit of complexity here for what I am trying to accomplish. Is there a simplier way to update the url of a node?

function alias_replace($path, $lang, $new_alias) {

  $path_alias_manager = \Drupal::entityTypeManager()->getStorage('path_alias');

  $alias_objects = $path_alias_manager->loadByProperties([
    'path'     => $path,
    'langcode' => $lang
  ]);
  
  foreach($alias_objects as $alias_object) {
    $alias_object->delete();
  }

  $path_alias_manager->create([
    'path'     => $path,
    'alias'    => $new_alias,
    'langcode' => $lang
  ])->save();

}
Kevin avatar
in flag
ทำไมไม่ใช้ Pathauto เพื่อสร้างจำนวนมาก
Greg Sims avatar
us flag
URL เป็นไปตามโครงสร้างเว็บไซต์สำหรับเนื้อหาที่เราเขียนขึ้น นี่คือ URL ตัวอย่าง: /daily-devotions/genesis-1to11/in-the-beginning เนื้อหาได้รับการแปลเป็นภาษาสเปนและภาษาจีน URL ภาษาจีนส่วนใหญ่จะเป็นภาษาอังกฤษ URL ภาษาสเปนเป็นภาษาสเปนโดยไม่มีเครื่องหมายเน้นเสียง ฉันไม่แน่ใจว่ามีวิธีแก้ปัญหา Pathauto
Rick B avatar
cn flag
คุณควรตั้งค่ารูปแบบ Pathauto สำหรับแต่ละภาษาได้ (ใน Drupal 8) หากคุณมีโมดูลการถอดเสียงและโมดูลโทเค็นติดตั้งอยู่ด้วย ฉันคิดว่าคุณสามารถใช้โซลูชัน Pathauto สำหรับกรณีการใช้งานที่คุณอธิบายไว้ได้
Greg Sims avatar
us flag
ขอบคุณสำหรับคำติชมเกี่ยวกับ Pathauto -- ฉันจะตรวจสอบเรื่องนี้ต่อไป รหัสที่ฉันรวมไว้ด้านบนเป็นวิธีที่ดีที่สุดในการอัปเดต url สำหรับโหนดที่ไม่มี Pathauto หรือไม่
Score:2
ธง gf

วิธีที่ง่ายกว่าเล็กน้อยที่ฉันพบคือ คุณไม่จำเป็นต้องลบและสร้างอ็อบเจกต์ alias เนื่องจากคุณสามารถอัปเดตคุณสมบัติของอ็อบเจกต์ได้ -> บันทึก () แบบนี้:

ฟังก์ชัน alias_replace($path, $lang, $new_alias) {

  $path_alias_manager = \Drupal::entityTypeManager()->getStorage('path_alias');

  $alias_objects = $path_alias_manager->loadByProperties([
    'เส้นทาง' => $เส้นทาง,
    'langcode' => $lang
  ]);
  
  foreach ($alias_objects เป็น $alias_object) {
    $alias_object->นามแฝง = $new_alias;
    $alias_object->บันทึก();
  }
}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา