Belajar Pengembangan Plugin Magento

30

Saya telah menjadi pengembang PHP selama 13+ tahun, memiliki pengetahuan luas tentang PHP itu sendiri selama beberapa proyek populer lainnya seperti WordPress. Saya tidak punya pengalaman dengan Magento.

Saya sekarang memiliki pekerjaan penuh waktu untuk sebuah perusahaan yang menggunakan Magento, semua pekerjaan pengembangan saya akan ada di Magento sekarang.

Pikiran awal saya setelah melihat Magento untuk pertama kalinya adalah, wow apa yang sudah saya lakukan sekarang? Tapi kemudian pengembang yang berpengalaman di dalam saya keluar dan ingat, itu hanya PHP.

Jadi saya punya beberapa pertanyaan dasar Magento. Saya sangat menghargai beberapa jawaban dari Pengembang Magento yang lebih berpengalaman ...

  1. Apa tempat terbaik yang paling berguna untuk belajar tentang pengembangan magento di samping situs ini?
  2. Ekstensi / plugin sangat membingungkan sejauh ini bagi saya. Platform lain seperti WordPress memungkinkan Anda untuk menempatkan plugin ke dalam folder itu sendiri dan semua file itu akan hidup di bawah folder itu. Dari apa yang saya lihat sejauh ini, sebuah plugin mungkin tersebar di beberapa folder di Magento, apakah ini benar?
  3. Saya telah belajar tentang cara over-ride fungsionalitas Core. Jadi jika file dalam inti terletak di sini /app/code/core/Mage/SitemapModel/Resource/Catalogmaka saya dapat menumpanginya dengan membuat file di lokasi ini /app/code/local/Mage/SitemapModel/Resource/Catalogjadi bagaimana cara kerjanya dengan Extension / plugin? Jika saya membuat plugin yang perlu over-ride fungsionalitas inti, maka saya harus memiliki file saya di semua tempat agar ekstensi itu berfungsi?
  4. Adakah info lain yang Anda harap Anda ketahui memulai dengan magento?

Terima kasih atas wawasan apa pun, saya tahu ini adalah pertanyaan multi-bagian, tetapi saya merasa salah satu jawaban akan membantu saya dan yang lain memulai, saya akan membuat wiki publik ini jika saya harus melakukannya juga.

JasonDavis
sumber
1
Jika ada yang namanya sticky pada stackexchange maka Q&A ini akan menjadi satu! Apa sumber daya ini telah berubah menjadi :)
McNab
@ McNab Tidak ada fitur Sticky, namun pertanyaan yang memiliki suara terbanyak umumnya memiliki peringkat lebih tinggi dan lebih sering dilihat. Juga halaman ini magento.stackexchange.com/?tab=month menunjukkan pertanyaan ini sebagai nomor 2 sekarang sehingga agak lengket tetapi berbunyi "Bulan" jadi saya tidak yakin berapa lama akan mempertahankan lengket itu. Saya setuju bahwa itu telah berubah menjadi sumber daya yang hebat dan saya memilikinya memfokuskan dan memberi bokmark untuk akses mudah di masa depan. BTW tolong bagikan komunitas ini dengan teman-teman Anda sehingga pasti menjadi rumah permanen dan tidak mati setelah periode Beta
JasonDavis

Jawaban:

24

Saya akan fokus pada bagian pertama dari pertanyaan Anda - " bagaimana saya belajar / di mana saya memulai? "

Sebagai mantan pengembang Zend Framework, bantuan terbesar bagi saya dalam mengembangkan Magento adalah ledakan dalam pembelajaran online yang dibawa Magento U dalam 2 tahun terakhir. Selain dari pembelajaran formal - saya belajar sebagian besar dengan melakukan , dan saya telah "melakukan" Magento selama lebih dari 5 tahun sekarang.

Beberapa sumber belajar konkret:

Selain alat belajar, bagi saya alat belajar terbesar adalah dengan memeriksa modul Magento pihak ke-3. Saya membaca kode secara menyeluruh dan belajar darinya. Anda dapat melakukan hal yang sama dengan belajar dari modul Core.

Beberapa situs yang akan membantu Anda dalam perjalanan belajar Anda:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Beberapa pengembang epik yang harus diikuti:

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

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

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

Terlibat secara sosial - temui beberapa pengembang 'rockstar' dan mulai ikuti mereka di Twitter. Jangkau orang-orang tertentu ketika Anda membutuhkan bantuan; komunitas ini luar biasa didekati. Gunakan komunitas untuk keuntungan Anda.

Beberapa daftar Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

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

Akhirnya - melakukan perjalanan tahun depan ke Magento Bayangkan tahun depan dan tekan daging. Lacak kami, ajukan pertanyaan kepada kami. Keluar ke pertemuan lokal Anda. Jika pertemuan tidak ada di daerah Anda - mulailah satu . Bersikaplah gigih. Jangan biarkan kurangnya pengetahuan membuat Anda tidak bisa berjejaring dan bertemu orang-orang. Hubungan Anda di komunitas akan terbayar dalam dividen.

Philwinkle
sumber
14

2 sen saya untuk jawaban @ philwinkle yang brilian.

Ada dua PDF resmi

1) Panduan Pengembang Ekstensi Magento

80 halaman tentang cara membuat ekstensi khusus dari awal langkah demi langkah. Modul "Berita" dikembangkan dari awal - ini akan menunjukkan kepada Anda file modul dan struktur folder, file konfigurasi, pengontrol, model, blok.

2) Panduan Desainer untuk Magento dapat ditemukan di sini http://www.magentocommerce.com/resources/magento-user-guide

60 halaman tentang cara mengatur dan membuat tema Anda sendiri, paket sesuai dengan praktik terbaik.

Ada juga buku baru khusus untuk mereka yang memiliki latar belakang PHP dan mulai dengan Magento - Magento Panduan Pengembang PHP oleh Allan McGregor dan memiliki ulasan yang sangat bagus dari pengembang Magento di Amazon dan berbagai blog

Saluran video: Saluran YouTube Magento Commerce

Temui video konferensi Magento

Blog bagus lainnya:

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/

Sergei Guk
sumber
1
Ini hebat - sumber yang luar biasa!
philwinkle
8

Jawaban yang bagus di sini sejauh ini di sekitar. Mengenai

Ekstensi / plugin sangat membingungkan sejauh ini bagi saya. Platform lain seperti WordPress memungkinkan Anda untuk menempatkan plugin ke dalam folder itu sendiri dan semua file itu akan hidup di bawah folder itu. Dari apa yang saya lihat sejauh ini, sebuah plugin mungkin tersebar di beberapa folder di Magento, apakah ini benar?

Terminologi di Magento sedikit membingungkan. Pengembangan awal platform sangat cepat dan ada banyak waktu di mana Anda akan melihat konsep yang tumpang tindih dari awal yang salah dan perubahan arah. Extensions / plugins / modules / I'm-a-developer-and-want-to-add-my-code-to-the system adalah salah satu area ini.

Sebuah Magento Connect Ekstensi hanyalah sebuah paket file yang dapat diinstal ke dalam sistem Magento. Ini sepenuhnya dipisahkan dari salah satu sub-sistem program Magento lainnya.

Lebih dekat dengan apa yang Anda terbiasa adalah Modul Kode Magento . Secara kasar, modul kode adalah kumpulan file PHP yang dilihat Magento sebagai satu unit. Modul terletak di salah satu dari tiga folder

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

Saat Anda ingin menyesuaikan Magento, atau menambahkan fitur baru, Anda akan hampir selalu mulai dengan modul kode. Bahkan, Magento sendiri dibangun di atas sekitar 60 - 70 modul kode. Misalnya, Mage_Cmsmodul dalam

app/code/core/Mage/Cms

berisi kode yang membuat fitur CMS Magento berfungsi. Jika Anda akan membuat modul yang menambahkan kucing kucing ke Magento, Anda dapat membuat modul bernama Jasondavis_Kittiesdan letakkan di

app/code/community/Jasondavis/Kitties

Re: core,, communitydan local- yang pertama adalah untuk pengembang Magento, jadi jangan sentuh. Yang kedua adalah untuk ekstensi yang dimaksudkan untuk didistribusikan ke komunitas. Yang terakhir adalah untuk ekstensi yang dimaksudkan untuk dikembangkan secara lokal, untuk sistem tertentu.

Sedikit kebingungan terakhir adalah sekitar paket desain . Kode yang digunakan Magento untuk membuat dan mengelola HTML adalah sistem yang sepenuhnya terpisah. Itu sebabnya phtmlfile terletak terpisah dari file modul kode . Anda dapat menemukan file-file ini di

app/design

map.

Sebagian besar ekstensi profesional yang ditulis dengan baik didistribusikan sebagai Magento Connect Extensions yang memasang satu, atau banyak Modul Kode Magento , dan berisi sejumlah phtmltemplat khusus dan file XML Layout yang dipasang dalam base paket desain .

Hal-hal spesifik yang dapat Anda lakukan dengan modul kode sangat banyak, dan lebih banyak daripada yang dapat dijawab oleh satu jawaban Stack Exchange. Saya menulis serangkaian artikel yang, meski sedikit ketinggalan zaman, masih merupakan pengenalan yang kuat terhadap konsep pengkodean Magento.

Akhirnya, Re:

Adakah info lain yang Anda harap Anda ketahui memulai dengan magento?

Saya sedikit bias dalam hal ini, tetapi saya menjual ekstensi debugging Magento yang disebut Commerce Bug (klik tautan debug kecil). Ini mengumpulkan dan menampilkan semua informasi yang perlu diketahui pengembang saat bekerja dengan Magento. Ini sangat membantu ketika Anda mempelajari sistem (saya membangunnya untuk membantu saya mempelajari kembali sistem saat itu), dan tetap membantu ketika Anda bekerja sehari-hari pada sistem Magento. Jika Anda mengenakan biaya per jam untuk pekerjaan Anda, Anda akan mengembalikan harga pembelian pada proyek pertama Anda.

Alan Storm
sumber
7

Selain jawaban @ philwinkle, saya ingin membalas pernyataan Anda tentang menimpa kelas menggunakan PHP termasuk prioritas jalur.

Anggap itu solusi darurat jika tidak ada cara lain untuk mencapai apa yang Anda inginkan. Seringkali Anda dapat menentukan kelas mana yang akan digunakan melalui pengaturan XML konfigurasi, atau menggunakan penulisan ulang kelas (juga ditentukan dalam config XML).
Kelemahan dari hack path include adalah:

  • Tidak berfungsi untuk pengontrol
  • Tidak berfungsi untuk apa pun kecuali kelas PHP (misalnya file config.xml )
  • Anda harus menggabungkan perubahan ke salinan lokal Anda ketika Anda meningkatkan Magento
  • Membingungkan untuk debug, karena sebagian besar pengembang Magento hanya menganggap Modul dari namespace Mage untuk tinggal di kumpulan kode inti.
Vinai
sumber
1
Tepat sekali. Saya tidak begitu yakin bagaimana mengerjakan ini tanpa jawaban yang terpisah.
philwinkle
Saya pikir itu ide yang baik untuk tetap terpisah.
Vinai
Senang mengetahui, saya tahu itu tidak terlihat "benar" tetapi saya tidak yakin apakah ada cara lain sehingga saya masih harus banyak belajar terima kasih
JasonDavis
4

Pertama-tama Anda tidak boleh berpikir tentang menulis ulang atau memperluas modul inti atau kelas. Anda harus mempelajari arsitektur Magento, menulis modul uji sendiri / ekstensi dengan sedikit fungsionalitas yang belum membersihkan Magento, konsep EAV, hierarki tata letak, tema Magento, dan aliran desain. Saya merujuk tautan ini: Modern Magento 1.X Workflow dan Development Tools . Semoga berhasil

mageUz
sumber