การเรียนรู้การพัฒนาปลั๊กอิน Magento


30

ฉันเป็นนักพัฒนา PHP มานานกว่า 13 ปีมีความรู้กว้างขวางเกี่ยวกับ PHP ตราบเท่าที่โครงการยอดนิยมอื่น ๆ เช่น WordPress ฉันไม่มีประสบการณ์กับ Magento

ตอนนี้ฉันมีงานเต็มเวลาทำงานให้กับ บริษัท ที่ใช้ Magento งานพัฒนาของฉันทั้งหมดจะอยู่ที่ Magento ในตอนนี้

ความคิดเริ่มแรกของฉันหลังจากดู Magento เป็นครั้งแรกว้าวฉันได้อะไรลงไปบ้าง? แต่แล้วนักพัฒนาที่มีประสบการณ์ในตัวฉันก็ออกมาและจำได้ว่ามันเป็นแค่ PHP

ดังนั้นฉันจึงมีคำถามพื้นฐานเกี่ยวกับคุณภาพเยี่ยมฉันขอขอบคุณคำตอบจากนักพัฒนา Magento ที่มีประสบการณ์มากกว่า ...

  1. สถานที่ที่มีประโยชน์ที่สุดในการเรียนรู้เกี่ยวกับการพัฒนาวีโอไอพีข้างเว็บไซต์นี้คืออะไร
  2. ส่วนขยาย / ปลั๊กอินทำให้ฉันสับสนมากจนถึงตอนนี้ แพลตฟอร์มอื่น ๆ เช่น WordPress ช่วยให้คุณวางปลั๊กอินลงในโฟลเดอร์ของตัวเองและไฟล์ทั้งหมดจะอยู่ภายใต้โฟลเดอร์นั้น จากสิ่งที่ฉันได้เห็นจนถึงตอนนี้ปลั๊กอินอาจกระจัดกระจายไปทั่วหลายโฟลเดอร์ใน Magento นี่ถูกต้องหรือไม่
  3. ฉันได้เรียนรู้เกี่ยวกับวิธีการใช้งานฟังก์ชั่นการทำงานของ Core มากขึ้น ดังนั้นหากไฟล์ในแกนตั้งอยู่ที่นี่/app/code/core/Mage/SitemapModel/Resource/Catalogฉันสามารถขับได้โดยสร้างไฟล์ในตำแหน่งนี้/app/code/local/Mage/SitemapModel/Resource/Catalogดังนั้นมันจะทำงานอย่างไรกับส่วนขยาย / ปลั๊กอิน? หากฉันสร้างปลั๊กอินที่จำเป็นต้องมีฟังก์ชั่นการทำงานหลักมากกว่านี้ฉันต้องมีไฟล์ของฉันอยู่ตรงนั้นเพื่อให้ส่วนขยายนั้นใช้งานได้หรือไม่
  4. ข้อมูลอื่นใดที่คุณต้องการให้คุณรู้ตั้งแต่ตัววีโอไอพี

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


1
หากมีสิ่งใดที่เหนียวเหนอะหนะบนสแต็กการแลกเปลี่ยนคำถาม & คำตอบนี้จะเป็นหนึ่งเดียว! ทรัพยากรสิ่งนี้ได้กลายเป็น :)
McNab

@McNab ไม่มีคุณลักษณะ Sticky แต่คำถามที่มีการโหวตมากที่สุดโดยทั่วไปอันดับที่สูงขึ้นและได้เห็นบ่อยขึ้น นอกจากนี้หน้านี้magento.stackexchange.com/?tab=monthกำลังแสดงคำถามนี้เป็นหมายเลข 2 ตอนนี้ที่เป็นประเภทของ Sticky แต่มันบอกว่า "เดือน" ดังนั้นฉันไม่แน่ใจว่ามันจะยังคงเหนียว ฉันเห็นด้วยที่ได้กลายเป็นทรัพยากรที่ยอดเยี่ยมและฉันได้รับมัน favortied และ bokmarked สำหรับการเข้าถึงได้ง่ายในอนาคต BTW โปรดแบ่งปันชุมชนนี้กับเพื่อน ๆ ของคุณเพื่อให้แน่ใจว่าเป็นบ้านถาวรและไม่ตายหลังจากช่วงเบต้า
JasonDavis

คำตอบ:


24

ฉันจะมุ่งเน้นในส่วนแรกของคำถามของคุณ - " ฉันจะเรียนรู้ได้อย่างไร / ฉันจะเริ่มได้อย่างไร "

ในฐานะอดีตผู้พัฒนา Zend Framework ความช่วยเหลือที่ยิ่งใหญ่ที่สุดสำหรับฉันในการพัฒนา Magento คือการระเบิดของการเรียนรู้ออนไลน์ที่ Magento U ได้นำมาใน 2 ปีที่ผ่านมา นอกเหนือจากการเรียนรู้อย่างเป็นทางการ - ฉันเรียนรู้ส่วนใหญ่ด้วยการทำและฉันได้ "ทำ" วีโอไอพีมานานกว่า 5 ปีแล้ว

แหล่งเรียนรู้ที่เป็นรูปธรรมบางอย่าง:

นอกเหนือจากเครื่องมือการเรียนรู้สำหรับฉันเครื่องมือการเรียนรู้ที่ใหญ่ที่สุดได้รับการตรวจสอบโดยโมดูล Magento บุคคลที่สาม ฉันอ่านรหัสอย่างละเอียดและเรียนรู้จากมัน คุณสามารถทำสิ่งเดียวกันได้โดยเรียนรู้จากโมดูลหลัก

เว็บไซต์บางแห่งที่จะเป็นประโยชน์กับคุณในการเรียนรู้ของคุณ:

http://magento-quickies.tumblr.com/

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

นักพัฒนามหากาพย์บางคนปฏิบัติตาม:

Alistair Stead: https://github.com/alistairstead

Fabrizio Branca: https://github.com/fbrnc/

Vinai Kopp: https://github.com/Vinai

เข้าไปมีส่วนร่วมในสังคม - พบปะนักพัฒนา 'rockstar' บางคนแล้วเริ่มติดตามพวกเขาบน Twitter ติดต่อผู้คนเฉพาะเมื่อคุณต้องการความช่วยเหลือ ชุมชนนี้เข้าถึงได้ง่ายอย่างน่าอัศจรรย์ ใช้ชุมชนเพื่อประโยชน์ของคุณ

รายการ Twitter บางรายการ:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

https://twitter.com/eHubSystem/magento-imagine-2013

https://twitter.com/GingerWarriorX/magento-peeps

สุดท้าย - ทำช่วงระยะการเดินทางปีหน้าสู่ Magento Imagineปีหน้าแล้วกดเนื้อ ติดตามเราถามคำถามกับเรา ออกไปพบคนท้องถิ่นของคุณ หากมีการพบปะไม่ได้อยู่ในพื้นที่ของคุณ - เริ่มต้นหนึ่ง ตะบัน. อย่าปล่อยให้ขาดความรู้ทำให้คุณไม่ได้อยู่ในเครือข่ายและพบปะผู้คน ความสัมพันธ์ของคุณในชุมชนจะจ่ายเป็นเงินปันผล


14

2 เซนต์ของฉันสำหรับคำตอบยอดเยี่ยมของ philwinkle @

มี PDF เป็นทางการสองไฟล์

1) คู่มือสำหรับนักพัฒนาส่วนขยายของวีโอไอพี

80 หน้าเกี่ยวกับวิธีสร้างส่วนขยายที่กำหนดเองตั้งแต่เริ่มต้นทีละขั้นตอน โมดูล "ข่าว" ได้รับการพัฒนาตั้งแต่เริ่มต้น - มันจะแสดงโครงสร้างของไฟล์และโฟลเดอร์ของโมดูล, ไฟล์กำหนดค่า, ตัวควบคุม, แบบจำลอง, บล็อก

2) คู่มือนักออกแบบของ Magento สามารถพบได้ที่นี่http://www.magentocommerce.com/resources/magento-user-guide

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

นอกจากนี้ยังมีหนังสือเล่มใหม่โดยเฉพาะสำหรับผู้ที่มีพื้นหลัง PHP และเริ่มต้นด้วย Magento - Magento PHP Developer's Guide โดย Allan McGregor และมีรีวิวที่ดีมากจากนักพัฒนา Magento ใน Amazon และบล็อกต่างๆ

ช่องวิดีโอ: ช่อง Magento Commerce YouTube

พบกับวิดีโอการประชุมคุณภาพเยี่ยม

บล็อกที่ดีอื่น ๆ :

http://magebase.com/
http://inchoo.net/blog/
http://www.kingletas.com/
http://blog.belvg.com/category/magento-news/developer-certification http: / /fbrnc.net/tag:Magento
http://www.demacmedia.com/category/magento-commerce/


1
นี่เป็นแหล่งข้อมูลที่ยอดเยี่ยมมาก!
philwinkle

8

คำตอบที่ดีที่นี่จนถึงทุกรอบ เกี่ยวกับ

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

คำศัพท์ใน Magento ทำให้เกิดความสับสนเล็กน้อย การพัฒนาในช่วงแรกของแพลตฟอร์มนั้นโหดร้ายอย่างรวดเร็วและมีหลายครั้งที่คุณจะเห็นแนวคิดที่ทับซ้อนกันจากการเริ่มต้นผิดและการเปลี่ยนทิศทาง ส่วนขยาย / ปลั๊กอิน / โมดูล / ฉันเป็นผู้พัฒนาและต้องการที่จะเพิ่มรหัสของฉันกับระบบเป็นหนึ่งในพื้นที่เหล่านี้

วีโอไอพี Connect ขยายเป็นเพียงแพคเกจของไฟล์ที่อาจจะติดตั้งในระบบวีโอไอพี มันแยกออกจากระบบย่อยเชิงโปรแกรมอื่น ๆ ของ Magento อย่างสมบูรณ์

ใกล้ชิดกับสิ่งที่คุณกำลังใช้แม้ว่าวีโอไอพีโมดูลโค้ด โมดูลโค้ดคือชุดของไฟล์ PHP ที่ Magento มองว่าเป็นหน่วยเดียว โมดูลตั้งอยู่ในหนึ่งในสามโฟลเดอร์

app/code/core
app/code/community
app/code/local

เมื่อคุณต้องการปรับแต่งวีโอไอพีหรือเพิ่มคุณสมบัติใหม่คุณจะเริ่มต้นด้วยโมดูลรหัสเกือบทุกครั้ง อันที่จริงแล้ววีโอไอพีเองนั้นถูกสร้างขึ้นจากโมดูลรหัสประมาณ 60 - 70 ตัว ตัวอย่างเช่นMage_Cmsโมดูลใน

app/code/core/Mage/Cms

มีรหัสที่ทำให้คุณสมบัติ CMS ของ Magento ใช้งานได้ หากคุณกำลังจะสร้างโมดูลที่เพิ่มแมวคิตตี้ลงใน Magento คุณอาจสร้างโมดูลที่มีชื่อJasondavis_Kittiesและวางไว้

app/code/community/Jasondavis/Kitties

Re: core, communityและlocal- ครั้งแรกสำหรับนักพัฒนาวีโอไอพีจึงไม่สัมผัส ที่สองคือสำหรับส่วนขยายที่มีวัตถุประสงค์เพื่อแจกจ่ายให้กับชุมชน สุดท้ายคือส่วนขยายที่มีวัตถุประสงค์เพื่อพัฒนาภายในสำหรับระบบที่เฉพาะเจาะจง

บิตสุดท้ายของความสับสนเป็นรอบแพคเกจการออกแบบ รหัสที่วีโอไอพีใช้ในการเรนเดอร์และจัดการ HTML นั้นเป็นระบบที่แยกจากกันโดยสิ้นเชิง นั่นคือเหตุผลที่phtmlไฟล์ตั้งอยู่แยกจากไฟล์โมดูลรหัส คุณสามารถค้นหาไฟล์เหล่านี้ได้ใน

app/design

โฟลเดอร์

เขียนดีที่สุดส่วนขยายเป็นมืออาชีพมีการกระจายเป็นวีโอไอพี Connect ส่วนขยายที่ติดตั้งหนึ่งหรือหลายวีโอไอพีโมดูลโค้ดและมีจำนวนที่กำหนดเองphtmlแม่แบบและเค้าโครงไฟล์ XML ติดตั้งอยู่ในแพคเกจการออกแบบbase

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

ในที่สุด Re:

ข้อมูลอื่นใดที่คุณต้องการให้คุณรู้ตั้งแต่ตัววีโอไอพี

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


7

นอกจากคำตอบของ @ philwinkle ฉันต้องการตอบกลับคำสั่งของคุณเกี่ยวกับคลาสที่เอาชนะโดยใช้ PHP รวมถึงลำดับความสำคัญของเส้นทาง

พิจารณาว่าวิธีแก้ไขปัญหาฉุกเฉินหากไม่มีวิธีอื่นในการบรรลุสิ่งที่คุณต้องการ บ่อยครั้งที่คุณสามารถระบุคลาสที่จะใช้ผ่านการตั้งค่า XML การกำหนดค่าหรือใช้การเขียนคลาสใหม่ (หรือระบุไว้ใน config XML)
ข้อเสียของการแฮ็กเส้นทางรวม :

  • ใช้งานไม่ได้กับคอนโทรลเลอร์
  • ใช้งานไม่ได้กับทุกอย่างยกเว้นคลาส PHP (เช่นไฟล์config.xml )
  • คุณจะต้องรวมการเปลี่ยนแปลงในสำเนาในเครื่องของคุณเมื่อคุณอัพเกรด Magento
  • เกิดความสับสนในการแก้ปัญหาเนื่องจากนักพัฒนา Magento ส่วนใหญ่จะถือว่า Modules จากเนมสเปซ Mage อยู่ในกลุ่มหลักของรหัส

1
ถูกต้องอย่างแน่นอน ฉันไม่แน่ใจจริงๆวิธีการทำงานนี้โดยไม่มีคำตอบแยกต่างหาก
philwinkle

ฉันคิดว่ามันเป็นความคิดที่ดีที่จะแยกมัน
Vinai

ที่ดีที่จะรู้ว่าฉันรู้ว่ามันไม่ได้ดู "สิทธิ" แต่ผมไม่แน่ใจว่าถ้ามีวิธีอื่นเพื่อฉันได้มากที่จะเรียนรู้ยังคงขอบคุณ
JasonDavis

4

ก่อนอื่นคุณไม่ควรคิดถึงการเขียนใหม่หรือขยายโมดูลหลักหรือคลาส คุณต้องเรียนรู้สถาปัตยกรรม Magento เขียนโมดูลการทดสอบ / ส่วนขยายพร้อมฟังก์ชั่นเล็ก ๆ น้อย ๆ ซึ่งยังไม่ได้ทำความสะอาด Magento แนวคิด EAV ลำดับชั้นโครงร่างชุดรูปแบบ Magento และขั้นตอนการออกแบบ ฉันดูที่ลิงค์นี้: โมเดิร์นวีโอไอพี 1.X กระบวนการทำงานและการพัฒนาเครื่องมือ โชคดี

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