แผนการเปลี่ยนแปลงสำหรับสิ่งที่น่ารังเกียจ PHP5 เป็น Drupal


8

พื้นหลัง

หนึ่งปีนับจากนี้ลูกค้าของฉันกำลังจะย้ายบริการพอร์ทัลอินทราเน็ตที่ค่อนข้างซับซ้อน (การตั้งเวลาการติดตามและการรายงานที่เกิดขึ้นจริงและอื่น ๆ ) ไปยัง Drupal เนื่องจากสำนักงานใหญ่บอกเช่นนั้น มีความพยายามน้อยมากในการพิจารณาว่านี่เป็นตัวเลือกทางเทคนิคที่ถูกต้องหรือไม่และอยู่นอกเหนือการควบคุมของลูกค้าของฉันหรือแม้กระทั่งเจ้านายของพวกเขา

พอร์ทัลปัจจุบันเป็นสิ่งที่น่ารังเกียจที่อยู่ในกระบวนการของการได้รับปัจจัยอีกครั้งและฉันเชื่อว่าแผนการที่คุ้มค่าที่สุดจะนำเลเยอร์โมเดลโดเมนผ่าน Doctrine 2 และวาง 99.9% ของตรรกะการตรวจสอบธุรกิจและอินพุตทั้งหมดลงในโมเดล แล้วแยกสิ่งที่น่ารังเกียจออกจนกว่าจะเป็นเลเยอร์ตรรกะของมุมมองโครงร่างและการพิสูจน์ตัวตน

คำถาม

สำหรับผู้เชี่ยวชาญของ Drupal นั้นมีวิธีการนี้หรือไม่? Doctrine2 สามารถเล่นกับ Drupal ได้ดีหรือตรรกะระดับสูงกว่าของ Drupal ต้องการการบูรณาการที่เข้มงวดมากขึ้นกับข้อมูลหรือไม่?

คำตอบ:


9

เราได้ทำไม่กี่เว็บไซต์ที่เรามีการเชื่อมต่อระบบข้างนอกเพื่อ Drupal ข้อมูลที่ได้จะถูกเก็บไว้ในระบบนอก นี่คือสิ่งที่ฉันใช้เวลาส่วนใหญ่ทำงานกับ

เมื่อเราทำเช่นนี้เรามักจะสร้างประเภทเนื้อหาเพื่อ "เริ่มต้น" เนื้อหาในระบบอื่น ชนิดเนื้อหามีเพียงชื่อโหนดและฟิลด์ CCK สำหรับตัวระบุที่ไม่ซ้ำกันในระบบอื่น นอกจากนี้ยังมีฟังก์ชั่นhook_nodeapiจำนวนมาก ตัวอย่างเช่นloadเบ็ดจะโทรออกไปยังระบบระยะไกลและเพิ่มข้อมูลไปยังโหนด คุณต้องกำหนดวิธีการรับข้อมูลภายนอกลงในผลการค้นหา มีสองสามวิธีสำหรับสิ่งนี้ แต่สิ่งเหล่านี้ยาวเกินไปที่จะเข้าไปที่นี่

ในขณะที่มีข้อเสียบางอย่างเราพบว่าทำงานได้ดีและอนุญาตให้สิ่ง Drupal ปกติเช่นความคิดเห็นแท็ก ฯลฯ


หากต้องเป็นภายนอกนี่เป็นแนวทางที่ดี
Jeremy French

4

สิ่งเดียวที่สมเหตุสมผลในการทำตามกำหนดเวลาคือการสร้างสิ่งนี้ใน Drupal 7 หนึ่งในคุณสมบัติที่โดดเด่นที่สุดของ Drupal 7 คือเอนทิตี DBNTG และฟิลด์

ภาพรวมอย่างรวดเร็ว

  • เอนทิตีเป็นวิธีการกำหนดโครงสร้างข้อมูล ตัวอย่างของเอนทิตีที่สร้างขึ้นด้วย Drupal คือโหนด (เนื้อหาหลัก), ผู้ใช้, เงื่อนไขด้านอนุกรมวิธาน
  • เขตข้อมูลเป็นสิ่งที่สามารถแนบกับเอนทิตีซึ่งยังเก็บข้อมูล การใช้เขตข้อมูลมีข้อดีคือมีที่เดียวเพื่อจัดการข้อมูลและสามารถขยายได้หลายวิธี ตัวอย่างของเขตข้อมูลอาจเป็นไฟล์แนบหรือการอ้างอิงไปยังเอนทิตีอื่น
  • DBTNG (ฐานข้อมูลรุ่นต่อไป) คือสิ่งที่ชุมชน Drupal มีชื่อรหัสว่าเลเยอร์ abstraction ฐานข้อมูลใหม่ ก่อนหน้านี้เราเคยทำแบบสอบถามกับตัวแทน (ซึ่งยังคงได้รับการสนับสนุน) แต่ตอนนี้แบบสอบถามส่วนใหญ่ถูกสร้างขึ้นด้วยชั้นเรียน เหตุผลก็คือฟิลด์จะสร้างตารางฐานข้อมูลขึ้นอยู่กับการตั้งค่า วิธีนี้จะช่วยสร้างรหัสที่ใช้งานได้แม้ว่าจะสร้างเขตข้อมูลด้วยการตั้งค่าที่แตกต่างกัน

นี่เป็นเพียงคุณสมบัติบางอย่าง แต่นั่นหมายความว่าหากคุณไม่ต้องการสร้างสิ่งที่น่ารังเกียจของ Drupal คุณควรเริ่มคิดว่า Drupal ทำงานอย่างไรและใช้สิ่งนั้นแทนการพยายามทำให้ Drupal ทำงานในแบบที่ไม่ได้ออกแบบมา

เนื่องจาก Drupal เป็น PHP คุณสามารถสร้างโมดูลที่กำหนดเองและใช้ Doctrine2 เพื่อทำสิ่งที่คุณต้องการ แต่ฉันเดาว่าคุณจะท้ายด้วยเว็บไซต์ที่มีน้อยมากเหมือนกันกับเว็บไซต์ส่วนใหญ่ของ Drupal


น่าเสียดายที่ฉันปล่อยให้ลูกค้าของฉันใช้เวลาประมาณหนึ่งเดือนดังนั้นพวกเขาจะเป็นลูกค้าของตัวเองหลังจากนั้น สิ่งที่น่าสะอิดสะเอียนอยู่ภายใต้การโหลด / การใช้งานที่ค่อนข้างใหญ่ด้วยการเพิ่ม "คุณสมบัติ" ใหม่ในขณะที่เราพูด สถานการณ์ทั้งหมดเป็นระเบียบที่ฉันล้มเหลวบางส่วนเพื่อคัดท้ายไปในทิศทางที่ดีขึ้น ในการป้องกันตัวของฉันเองมันก็มีชีวิตอยู่เมื่อสัปดาห์ก่อนที่ฉันจะได้รับการว่าจ้างให้ช่วยน้ำประกันตัว
David

4

นี่เป็นคำถามที่ค่อนข้างกว้างดังนั้นฉันจะให้คำตอบในระดับสูงหากคุณมีคำถามที่เฉพาะเจาะจงมากขึ้นโปรดถามพวกเขาเป็นคำถามแยกต่างหาก

ฉันขอแนะนำให้คุณแมปโครงสร้างของไซต์ปัจจุบันให้ได้มากที่สุด มันทำงานประเภทใดมีเวิร์กโฟลว์อะไรบ้าง เนื้อหาคืออะไรผู้ใช้คืออะไร

ประเภทเนื้อหาเป็นวิธีที่สะดวกในการแบ่งเนื้อหา แม้สิ่งที่น่ารังเกียจจะมีประเภทสิ่งที่ฉัน (ฉันหวังว่าจะ) ที่แมปกับ URL

เมื่อคุณกำหนดประเภทเนื้อหาแล้วคุณสามารถดูการย้ายเนื้อหาไปยังไซต์ใหม่ของคุณ จากนั้นคุณสามารถดูสิ่งต่าง ๆ เช่นเวิร์กโฟลว์ตารางเวลาผู้ใช้ ฯลฯ

ฉันชอบที่จะย้ายขายส่ง การมีเนื้อหาที่ถูกจัดการโดยระบบมากกว่าหนึ่งระบบนั้นเป็นเรื่องปวดหัวด้านเทคนิคอย่างมาก และเพิ่มความพยายามในการบำรุงรักษาเป็นสองเท่า

สิ่งหนึ่งที่ฉันจะพูดคือมันอาจคุ้มค่าที่จะจ้างคนอื่นให้ทำ มีการโยกย้าย Drupal ที่ประสบความสำเร็จบางอย่างกับชุดข้อมูลขนาดใหญ่ แต่ถ้าคุณไม่มีประสบการณ์ใน Drupal คุณอาจทำหลายขั้นตอนผิดพลาดและเสียเวลามาก (ฉันสามารถแนะนำcyrveเป็นการส่วนตัวฉันไม่มีส่วนเกี่ยวข้องใด ๆ กับพวกเขาในปัจจุบัน)


ฉันจะส่งต่อ Cyrve ไปยังลูกค้าของฉัน เพราะมันไม่มีใครอยู่ในแผนกลูกค้าของฉันหรือแผนกที่อยู่ติดกันซึ่งกำลังผลักดันให้ Drupal มีความเชี่ยวชาญในการพัฒนาใน Drupal ดังนั้นจึงควรให้ความบันเทิงเพื่อดูว่าสิ่งนี้จะเกิดขึ้นภายในหนึ่งปีนับจากนี้
David
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.