Tại sao Magento có 3 nhóm mã?


26

Magento có ba nhóm mã:

  1. cộng đồng
  2. cốt lõi
  3. địa phương

Core: Nó chứa tất cả các mô-đun mặc định Magento

Cộng đồng và địa phương: Chúng tôi sử dụng các nhóm mã này để phát triển mô-đun tùy chỉnh.

Bây giờ tôi có nghi ngờ về điều này:

  • Tại sao Magento sử dụng hai nhóm mã cho tùy chỉnh của chúng tôi?
  • Tại sao Magento không sử dụng một nhóm mã duy nhất để tùy chỉnh?

Ai đó có thể giải thích về điều này?

Câu trả lời:


34

ứng dụng / mã / lõi - Giữ các mô-đun được phân phối với Magento cơ sở và tạo nên chức năng cốt lõi.

ứng dụng / mã / cộng đồng - Giữ các mô-đun được phát triển bởi bên thứ ba

ứng dụng / mã / cục bộ - Giữ các mô-đun tùy chỉnh bạn đã phát triển, bao gồm ghi đè mã Mage.

Tại sao Magento sử dụng hai nhóm mã cho tùy chỉnh của chúng tôi?

Magento thực sự sử dụng ba nhóm mã. Nó sẽ tải địa phương đầu tiên, thứ hai cộng đồng và thứ ba cốt lõi . Nó sử dụng ba cho mục đích tổ chức và để giúp giải quyết các vấn đề khi hai phần mở rộng của bên thứ 3 đang cố gắng viết lại cùng một thứ. Trong một ví dụ là bạn có hai tiện ích mở rộng trong ứng dụng / mã / cộng đồng đang cố gắng viết lại cùng một mô hình, bạn chỉ cần tạo một tiện ích mở rộng trong ứng dụng / mã / cục bộ và hợp nhất hai logic mở rộng lại với nhau.

Tại sao Magento không sử dụng nhóm mã đơn để tùy chỉnh?

Nó đã được thực hiện theo cách này để cố gắng có một số tổ chức mã. Ngoài ra, khi bạn có xung đột bên thứ 3, địa phương rất tuyệt vời để giúp giải quyết những vấn đề đó. Địa phương cũng rất tuyệt khi có các tiện ích mở rộng mà chỉ trang web đó mới có.


1
Câu trả lời tốt đẹp cho câu hỏi nhóm mã duy nhất. Với tất cả các xung đột bạn sẽ gặp phải sau khi cài đặt một số mô-đun của bên thứ ba, rất cần có nhóm localmã thứ ba đó để loại bỏ tất cả các hangouts.
Phòng thí nghiệm Fiasco

11

nhập mô tả hình ảnh ở đây

core :Nhóm mã này thuộc về nhóm phát triển lõi Magento. Vì vậy, bạn KHÔNG nên thực hiện bất kỳ sửa đổi nào trong nhóm mã này.

community :Điều này thuộc về các nhà phát triển cộng đồng Magento (bao gồm bất kỳ nhà phát triển nào phát triển tiện ích mở rộng của bên thứ ba). Nếu bạn đang tạo bất kỳ tiện ích mở rộng của bên thứ ba, vì vậy bạn có thể sử dụng nhóm mã này cho điều đó.

local :Điều này có thể được sử dụng nếu bạn muốn thực hiện bất kỳ sửa đổi nào (thêm chức năng mới / ghi đè mở rộng / sửa đổi chức năng cốt lõi, v.v.) đặc biệt cho cửa hàng Magento của bạn và không muốn chia sẻ với cộng đồng. Đồng thời bạn có thể ghi đè chức năng trong nhóm mã lõi và cộng đồng


5

Mô tả Codepools Magento

Bể bơi lõi

Trước hết, thư mục này lưu trữ tất cả các mã làm cho Magento trở nên mạnh mẽ, linh hoạt và đáng yêu. Nguyên tắc chính của sự phát triển Magento là bạn không bao giờ nên thực hiện bất kỳ thay đổi nào trong đó. Nói cách khác, thư mục này chỉ thuộc về các nhà phát triển cốt lõi Magento và nếu bạn định chỉnh sửa bất cứ thứ gì trong nhóm này, linh hồn xấu xa của họ có thể trừng phạt bạn ngay cả thông qua màn hình.

Nhóm cộng đồng

Thư mục này hoàn toàn thuộc về các nhà phát triển cộng đồng. Đây là nơi thích hợp cho hàng trăm tiện ích mở rộng của bên thứ 3, cả miễn phí và trả phí, có thể tìm thấy tại MagentoConnect hoặc có sẵn trên cửa hàng phát triển tiện ích mở rộng. Vì vậy, về cơ bản, nếu bạn đã cài đặt bất kỳ tiện ích mở rộng nào, nó phải ở trong ứng dụng / mã / cộng đồng / chỉ.

Hồ bơi địa phương

Nếu bạn có cửa hàng dựa trên Magento của riêng mình và muốn tự mình làm mọi thứ hoặc bạn là nhà phát triển Magento và có mục đích thay đổi logic bằng cách nào đó, pool cục bộ là nơi nên thực hiện mọi thứ. Nếu bạn muốn ghi đè các phần mở rộng, khối hoặc phương thức Magento, hãy sao chép các thư mục cần thiết từ nhóm Core và làm bất cứ điều gì bạn có xu hướng làm. Áp dụng quy tắc tương tự cho các tiện ích mở rộng tùy chỉnh được tạo riêng cho trang web - tất cả mã phải nằm trong nhóm cục bộ.


4

Thêm tất cả những điều trên một cách đơn giản để thực hiện các ưu tiên và có tính mô đun. Bạn có thể kiểm tra tương tự trong Mage.php.

Đang tải nhóm mã với

 $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';

Trước tiên, địa phương được gọi là cộng đồng sau đó là lõi và magento sẽ không tìm thấy bất kỳ tệp lõi nào, sau đó nó sẽ tìm kiếm trên thư mục lib chứa các tệp Zend-Framework Core


1

Giải thích tốt nhất tôi có là nếu bạn muốn phân phối các tiện ích mở rộng của mình cho đối tượng rộng hơn, ví dụ như thông qua Magento Connect, bạn có thể đặt nó vào cộng đồng.

Điều này sẽ cho phép một nhà phát triển khác ghi đè hành vi bằng cách đặt một lớp vào thư mục cục bộ.

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.