Mengapa Magento memiliki 3 kumpulan kode?

26

Magento memiliki tiga kumpulan kode:

  1. masyarakat
  2. inti
  3. lokal

Inti: Ini berisi semua modul standar Magento

Komunitas dan lokal: Kami menggunakan kumpulan kode ini untuk pengembangan modul khusus kami.

Sekarang saya ragu tentang ini:

  • mengapa Magento menggunakan dua kumpulan kode untuk penyesuaian kami?
  • mengapa Magento tidak menggunakan satu kumpulan kode tunggal untuk penyesuaian?

Bisakah seseorang menjelaskan tentang ini?

MeenakshiSundaram R
sumber

Jawaban:

34

app / code / core - Memegang modul yang didistribusikan dengan Magento dasar dan membuat fungsionalitas inti.

app / code / community - Memegang modul yang dikembangkan oleh pihak ketiga

app / code / local - Memegang modul khusus yang Anda kembangkan, termasuk penggantian kode Mage.

Mengapa Magento menggunakan dua kumpulan kode untuk penyesuaian kami?

Magento sebenarnya menggunakan tiga kumpulan kode. Ini akan memuat lokal pertama, komunitas kedua, dan inti ketiga. Ini menggunakan tiga untuk tujuan organisasi dan untuk membantu memecahkan masalah ketika dua + ekstensi pihak ke-3 mencoba untuk menulis ulang hal yang sama. Sebagai contoh, jika Anda memiliki dua ekstensi dalam aplikasi / kode / komunitas yang mencoba menulis ulang model yang sama, Anda dapat membuat ekstensi di aplikasi / kode / lokal dan menggabungkan dua ekstensi logika secara bersamaan.

Mengapa Magento tidak menggunakan kumpulan kode tunggal untuk penyesuaian?

Itu dilakukan dengan cara ini untuk mencoba memiliki beberapa organisasi kode. Juga, ketika Anda memiliki konflik pihak ke-3, warga setempat sangat baik untuk membantu menyelesaikan masalah-masalah tersebut. Lokal juga bagus untuk memiliki ekstensi yang hanya akan dimiliki oleh situs itu.

kab8609
sumber
1
Jawaban yang bagus untuk pertanyaan kumpulan kode tunggal. Mengingat semua konflik yang akan Anda temui setelah menginstal beberapa modul pihak ketiga, sangat penting untuk memiliki localkumpulan kode ketiga untuk memijat semua hangup.
Fiasco Labs
11

masukkan deskripsi gambar di sini

core :Kumpulan kode ini milik tim pengembangan inti Magento. Jadi Anda TIDAK boleh membuat modifikasi dalam kumpulan kode ini.

community :Ini milik pengembang komunitas Magento (termasuk pengembang yang mengembangkan ekstensi pihak ketiga). Jika Anda membuat ekstensi pihak ketiga apa pun, maka Anda dapat menggunakan kumpulan kode ini untuk itu.

local :Ini dapat digunakan jika Anda ingin melakukan modifikasi apa pun (tambahkan fungsionalitas baru / ekstensi utama / modifikasi fungsionalitas inti, dll.) Khusus untuk toko Magento Anda dan tidak ingin membaginya dengan komunitas. Pada saat yang sama Anda dapat mengganti fungsi di kumpulan kode inti dan komunitas

Sukeshini
sumber
5

Jelaskan Codepools Magento

Pool inti

Pertama-tama, folder ini menyimpan semua kode yang membuat Magento begitu kuat, fleksibel, dan indah. Aturan utama pengembangan Magento adalah Anda tidak boleh membuat perubahan apa pun di dalamnya. Dengan kata lain, folder ini hanya dimiliki oleh pengembang inti Magento dan jika Anda akan mengedit apa pun di kumpulan ini, roh jahat mereka dapat menghukum Anda bahkan melalui layar.

Kolam komunitas

Folder ini sepenuhnya milik pengembang komunitas. Ini adalah tempat yang tepat untuk ratusan ekstensi pihak ke-3, baik gratis maupun berbayar, yang dapat ditemukan di MagentoConnect atau tersedia di toko pengembangan ekstensi. Jadi pada dasarnya, jika Anda telah menginstal ekstensi apa pun, itu harus dalam aplikasi / kode / komunitas / saja.

Kolam renang lokal

Jika Anda memiliki toko berbasis Magento sendiri dan ingin membuat semuanya sendiri atau Anda adalah pengembang Magento dan memiliki tujuan untuk mengubah logika, kolam renang lokal adalah tempat di mana segala sesuatu harus dilakukan. Jika Anda ingin mengganti ekstensi, blok, atau metode Magento, salin folder yang diperlukan dari kumpulan Core dan lakukan apa pun yang Anda ingin lakukan. Terapkan aturan yang sama untuk ekstensi khusus yang dibuat khusus untuk situs web - semua kode harus berada dalam kumpulan lokal.

Keyul Shah
sumber
4

Menambahkan semua di atas secara sederhana untuk membuat prioritas dan memiliki modularitas. Anda dapat memeriksa yang sama di Mage.php.

Memuat kumpulan kode dengan

 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
 $paths[] = BP . DS . 'lib';

JADI dulu yang disebut Local kemudian komunitas kemudian core dan magento tidak akan menemukan file inti maka akan mencari di folder lib yang berisi file Zend-Framework Core

Bharath
sumber
1

Penjelasan terbaik yang saya miliki adalah bahwa jika Anda bertujuan untuk mendistribusikan ekstensi Anda ke khalayak yang lebih luas misalnya melalui Magento Connect Anda dapat menempatkannya di komunitas.

Ini akan memungkinkan pengembang lain untuk mengesampingkan perilaku dengan menempatkan kelas ke folder lokal.

Kristof di Fooman
sumber