Học phát triển plugin Magento


30

Tôi đã là một nhà phát triển PHP hơn 13 năm, có kiến ​​thức sâu rộng về chính PHP miễn là một số dự án phổ biến khác như WordPress. Tôi không có kinh nghiệm với Magento.

Bây giờ tôi có một công việc toàn thời gian làm việc cho một công ty sử dụng Magento, tất cả công việc phát triển của tôi sẽ thuộc về Magento khá nhiều.

Suy nghĩ ban đầu của tôi sau khi nhìn vào Magento lần đầu tiên là, wow tôi đã nhận được gì cho mình bây giờ? Nhưng sau đó, nhà phát triển có kinh nghiệm trong tôi xuất hiện và nhớ lại, đó chỉ là PHP.

Vì vậy, tôi có một số câu hỏi Magento cơ bản, tôi thực sự sẽ đánh giá cao một số câu trả lời từ các Nhà phát triển Magento có kinh nghiệm hơn ...

  1. Những nơi hữu ích nhất để tìm hiểu về phát triển magento bên cạnh trang web này là gì?
  2. Phần mở rộng / plugin rất khó hiểu đối với tôi. Các nền tảng khác như WordPress cho phép bạn đặt một plugin vào thư mục riêng của nó và tất cả các tệp của nó sẽ nằm trong thư mục đó. Từ những gì tôi đã thấy cho đến nay, một plugin có thể nằm rải rác trên một số thư mục trong Magento, điều này có đúng không?
  3. Tôi đã tìm hiểu về cách vượt quá chức năng Core. Vì vậy, nếu một tệp trong lõi được đặt ở đây /app/code/core/Mage/SitemapModel/Resource/Catalogthì tôi có thể điều khiển nó bằng cách tạo tệp ở vị trí này, /app/code/local/Mage/SitemapModel/Resource/Catalogvậy làm thế nào để nó hoạt động với Tiện ích mở rộng / plugin? Nếu tôi tạo một plugin cần chạy quá nhiều chức năng cốt lõi, thì tôi phải có các tệp của mình ở khắp mọi nơi để tiện ích mở rộng đó hoạt động chứ?
  4. Bất kỳ thông tin nào khác bạn muốn bạn biết bắt đầu với magento?

Cảm ơn vì bất kỳ cái nhìn sâu sắc nào, tôi biết đây là một câu hỏi đa phần nhưng tôi cảm thấy bất kỳ câu trả lời nào sẽ hữu ích cho bản thân tôi và những người khác bắt đầu, tôi sẽ tạo wiki công khai này nếu tôi cũng muốn.


1
Nếu có một thứ giống như một thứ dính trên stackexchange thì Q & A này sẽ là một! Thật là một tài nguyên đã biến thành :)
McNab

@McNab Không có tính năng Chú ý, tuy nhiên câu hỏi có nhiều phiếu bầu nhất thường xếp hạng cao hơn và được nhìn thấy thường xuyên hơn. Ngoài ra trang này magento.stackexchange.com/?tab=month hiện đang hiển thị câu hỏi này là số 2 vì vậy đó là một loại dính nhưng nó nói "Tháng" vì vậy tôi không chắc nó sẽ giữ được độ dính của nó trong bao lâu. Tôi đồng ý rằng nó đã trở thành một nguồn tài nguyên tuyệt vời và tôi đã sử dụng nó một cách dễ dàng và được đánh dấu để dễ dàng truy cập trong tương lai. BTW vui lòng chia sẻ cộng đồng này với bạn bè của bạn để đảm bảo trở thành một ngôi nhà vĩnh viễn và không chết sau giai đoạn Beta
JasonDavis

Câu trả lời:


24

Tôi sẽ tập trung vào phần đầu tiên của câu hỏi của bạn - " làm thế nào để tôi học / tôi bắt đầu từ đâu? "

Là một nhà phát triển Zend Framework trước đây, sự giúp đỡ lớn nhất đối với tôi trong việc phát triển Magento là sự bùng nổ trong học tập trực tuyến mà Magento U đã mang lại trong 2 năm qua. Ngoài việc học chính thức - tôi học chủ yếu bằng cách làm , và tôi đã "làm" Magento được hơn 5 năm rồi.

Một số tài nguyên học tập cụ thể:

Ngoài các công cụ học tập, đối với tôi, công cụ học tập lớn nhất là bằng cách kiểm tra các mô-đun Magento của bên thứ 3. Tôi đọc mã một cách xuyên suốt và học hỏi từ nó. Bạn có thể làm tương tự bằng cách học từ các mô-đun Core.

Một số trang web sẽ hữu ích cho bạn trên hành trình học tập của bạn:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Một số nhà phát triển sử thi để làm theo:

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

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

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

Tham gia xã hội - gặp gỡ một số nhà phát triển 'rockstar' và bắt đầu theo dõi họ trên Twitter. Tiếp cận với những người cụ thể khi bạn cần giúp đỡ; cộng đồng này là tuyệt vời để tiếp cận. Sử dụng cộng đồng để lợi thế của bạn.

Một số danh sách Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

https://twitter.com/GingerWar WarriorX/magento-peeps

Cuối cùng - thực hiện chuyến đi vào năm tới tới Magento Tưởng tượng vào năm tới và ấn vào xác thịt. Theo dõi chúng tôi xuống, đặt câu hỏi cho chúng tôi. Nhận ra để đáp ứng địa phương của bạn. Nếu một cuộc họp không tồn tại trong khu vực của bạn - hãy bắt đầu một cuộc họp . Kiên trì. Đừng để sự thiếu hiểu biết của bạn ngăn bạn kết nối và gặp gỡ mọi người. Các mối quan hệ của bạn trong cộng đồng sẽ được đền đáp bằng cổ tức.


14

2 xu của tôi cho câu trả lời tuyệt vời của @ philwinkle.

Có hai bản PDF chính thức

1) Hướng dẫn dành cho nhà phát triển mở rộng Magento

80 trang về cách tạo tiện ích mở rộng tùy chỉnh từng bước một. Mô-đun "Tin tức" được phát triển từ đầu - nó sẽ hiển thị cho bạn cấu trúc tệp và thư mục của mô-đun, tệp cấu hình, bộ điều khiển, mô hình, khối.

2) Hướng dẫn của nhà thiết kế về Magento có thể được tìm thấy ở đây http: //www.magentoc Commerce.com/resource/magento-user-guide

60 trang về cách tổ chức và tạo chủ đề, gói của riêng bạn theo thông lệ tốt nhất.

Ngoài ra còn có một cuốn sách mới dành riêng cho những người có nền tảng PHP và bắt đầu với Magento - Hướng dẫn dành cho nhà phát triển PHP Magento của Allan McGregor và nó có những đánh giá rất tốt từ các nhà phát triển Magento trên Amazon và các blog khác nhau

Kênh video: Kênh YouTube Magento Commerce

Gặp gỡ video hội nghị Magento

Các blog tốt khác:

http://magebase.com/
http://inchoo.net/blog/
http://www.kingletas.com/
http://blog.belvg.com/carget/magento-news/developer-certification http: / /fbrnc.net/tag:Magento http://www.demacmedia.com/c Category / magento-c Commerce /


1
Điều này thật tuyệt - tài nguyên tuyệt vời!
philwinkle

8

Câu trả lời tuyệt vời ở đây cho đến nay tất cả xung quanh. Về

Phần mở rộng / plugin rất khó hiểu đối với tôi. Các nền tảng khác như WordPress cho phép bạn đặt một plugin vào thư mục riêng của nó và tất cả các tệp của nó sẽ nằm trong thư mục đó. Từ những gì tôi đã thấy cho đến nay, một plugin có thể nằm rải rác trên một số thư mục trong Magento, điều này có đúng không?

Thuật ngữ trong Magento có một chút khó hiểu. Sự phát triển ban đầu của nền tảng đã nhanh chóng tàn nhẫn và nhiều lần bạn sẽ thấy các khái niệm chồng chéo từ các khởi đầu sai và thay đổi theo hướng. Tiện ích mở rộng / plugin / mô-đun / Tôi là nhà phát triển và muốn thêm vào mã của tôi vào hệ thống là một trong những lĩnh vực này.

Một Magento Connect mở rộng chỉ đơn giản là một gói các tập tin có thể được cài đặt vào hệ thống Magento. Nó hoàn toàn tách rời khỏi bất kỳ hệ thống phụ lập trình nào khác của Magento.

Gần hơn với những gì bạn đã từng sử dụng là Mô-đun Mã Magento . Nói một cách đơn giản, một mô-đun mã là một tập hợp các tệp PHP mà Magento xem là một đơn vị. Các mô-đun được đặt trong một trong ba thư mục

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

Khi bạn muốn tùy chỉnh Magento hoặc thêm các tính năng mới, hầu như bạn sẽ luôn bắt đầu với một mô-đun mã. Trên thực tế, Magento được xây dựng dựa trên khoảng 60 - 70 mô-đun mã. Ví dụ, Mage_Cmsmô-đun trong

app/code/core/Mage/Cms

chứa mã làm cho các tính năng CMS của Magento hoạt động. Nếu bạn định tạo một mô-đun có thêm mèo kitty vào Magento, bạn có thể tạo một mô-đun có tên Jasondavis_Kittiesvà đặt nó vào

app/code/community/Jasondavis/Kitties

Re : core, communitylocal- đầu tiên là dành cho các nhà phát triển Magento, vì vậy đừng chạm vào. Thứ hai là dành cho các tiện ích mở rộng dự định được phân phối cho cộng đồng. Cuối cùng là dành cho các tiện ích mở rộng dự định được phát triển cục bộ, cho một hệ thống cụ thể.

Một chút nhầm lẫn cuối cùng là xung quanh các gói thiết kế . Mã Magento sử dụng để kết xuất và quản lý HTML của nó là một hệ thống hoàn toàn riêng biệt. Đó là lý do tại sao phtmlcác tệp được đặt tách biệt với các tệp mô-đun mã . Bạn có thể tìm thấy những tập tin này trong

app/design

thư mục.

Hầu hết các phần mở rộng chuyên nghiệp, được viết tốt đều được phân phối dưới dạng Phần mở rộng kết nối Magento cài đặt một hoặc nhiều Mô-đun mã Magento và chứa một số phtmlmẫu tùy chỉnh và tệp XML Bố cục được cài đặt trong base gói thiết kế .

Những điều cụ thể bạn có thể làm với các mô-đun mã là vô số, và nhiều hơn bất kỳ câu trả lời Stack Exchange nào có thể bao gồm. Tôi đã viết một loạt các bài báo , mặc dù có một ít ngày, nhưng vẫn là một giới thiệu vững chắc về các khái niệm mã hóa của Magento.

Cuối cùng, Re:

Bất kỳ thông tin nào khác bạn muốn bạn biết bắt đầu với magento?

Tôi hơi thiên vị về cái này, nhưng tôi bán một phần mở rộng gỡ lỗi Magento có tên Commerce Bug (nhấp vào liên kết gỡ lỗi nhỏ). Điều này thu thập và hiển thị tất cả thông tin mà nhà phát triển cần biết khi làm việc với Magento. Đó là một sự trợ giúp lớn khi bạn học hệ thống (tôi đã xây dựng nó để giúp tôi học cách hệ thống trở lại khi nào) và vẫn hữu ích khi bạn làm việc hàng ngày trên hệ thống Magento. Nếu bạn đang tính phí hàng giờ cho công việc của mình, bạn sẽ lấy lại giá mua cho dự án đầu tiên của mình.


7

Ngoài câu trả lời của @ philwinkle, tôi muốn trả lời tuyên bố của bạn về việc ghi đè các lớp bằng cách sử dụng PHP bao gồm mức độ ưu tiên của đường dẫn.

Hãy xem xét rằng một giải pháp khẩn cấp nếu không có cách nào khác để thực hiện những gì bạn muốn. Thường thì bạn có thể chỉ định lớp nào sẽ sử dụng thông qua cài đặt XML cấu hình hoặc sử dụng viết lại lớp (cũng được chỉ định trong cấu hình XML).
Nhược điểm của hack đường dẫn bao gồm :

  • Không làm việc cho bộ điều khiển
  • Không hoạt động cho bất cứ điều gì ngoại trừ các lớp PHP (ví dụ: tệp config.xml )
  • Bạn sẽ phải hợp nhất các thay đổi thành các bản sao cục bộ của mình khi bạn nâng cấp Magento
  • Nhầm lẫn để gỡ lỗi, vì hầu hết các nhà phát triển Magento chỉ đơn giản giả sử các Mô-đun từ không gian tên Mage sống trong nhóm mã lõi.

1
Chuẩn xác. Tôi đã không thực sự chắc chắn làm thế nào để làm việc này mà không có câu trả lời riêng.
philwinkle

Tôi nghĩ rằng đó là một ý tưởng tốt để giữ nó tách biệt.
Vinai

Thật tốt khi biết, tôi biết nó không có vẻ "đúng" nhưng tôi không chắc liệu có cách nào khác hay không nên tôi vẫn học được rất nhiều lời cảm ơn
JasonDavis

4

Trước hết bạn không nên nghĩ về việc viết lại hoặc mở rộng các mô-đun hoặc lớp lõi. Bạn phải học kiến ​​trúc Magento, viết mô-đun thử nghiệm / tiện ích mở rộng riêng với ít chức năng không làm sạch Magento, khái niệm EAV, phân cấp bố cục, chủ đề Magento và luồng thiết kế. Tôi tham khảo liên kết này: Modern Magento 1.X Workflow and Development Tools . Chúc may mắn

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.