Magento Architecture – KIẾN TRÚC TRONG MAGENTO
Đối với những người mới tìm hiểu thì magento thực sự rất phức tạp , nó là sự kết hợp tuyệt vời của Zend framework với kiến trúc MVC (Model-View-Controller) Zend framework : môt framework được build bằng PHP , nó là một trong những framework mạnh nhất và được nhiều người sử dụng nhất hiện nay ...
Đối với những người mới tìm hiểu thì magento thực sự rất phức tạp , nó là sự kết hợp tuyệt vời của Zend framework với kiến trúc MVC (Model-View-Controller)
-
Zend framework : môt framework được build bằng PHP , nó là một trong những framework mạnh nhất và được nhiều người sử dụng nhất hiện nay bởi có quá nhiều tính năng ưu việt mà những framework khác không có . Đến với Zend , chúng ta dễ dàng mở rộng các lớp xử lý của mình , nhúng các thư viện khác mà việc config không quá khó khăn và phức tạp .
-
Mô hình MVC : được hiểu nôm na là một mô hình thiết kế được sử dụng trong kĩ thuật phát triển phần mềm . Nó giúp cho các developer tách ứng dụng ra 3 thành phần khác nhau Model , View và Controller . Mỗi phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác
-
Model : là các lớp cung cấp dữ liệu , dịch vụ lien quan đến dữ liệu và business logic . Các lớp này làm việc trực tiếp với dữ liệu và cung cấp dữ liệu cho các thành phần khác . Trong magento , các lớp này được chứa trong thư mục Model.
-
View : là các lớp định nghĩa cách thức trình bày dữ liệu ( không cập nhật dữ liệu ) . Các lớp này được chưa trong thư mục Block , Template của module .
-
Controller : là các lớp điều khiển luồng ứng dụng , nó tiếp nhận đầu vào là các yêu cầu của người dùng thông qua HTTP header , chuyển tiếp các yêu cầu đó đến các lớp phụ trách trực tiếp xử lý yêu cầu . Từ đường link router sẽ tìm đến Controller điều khiển đường link đó . Trong magento , các lớp này được đặt trong thư mục controllers.
1. Cấu trúc thư mục trong Magento
/app/etc – thư mục chứa các config global /app/code - chứa những modules ( models , controllers , helpres, blocks….) /app/code/core – những module do team magento phát triển . /app/code/community – những module do cộng đồng phát triển /app/code/local – những module do những nhà phát triển khác /app/code/core/Mage – NameSpace default của magento /app/code/core/Mage/{module} – module root /app/code/core/Mage/{Module}/etc – module configuration /app/code/core/Mage/{Module}/controllers – controllers module /app/code/core/Mage/{Module}/Block – Blog logic classes /app/code/core/Mage/{Module}/Model – Object Models provided by module /app/code/core/Mage/{Module}/Model/Mysql4 – Resource Models provided by module /app/code/core/Mage/{Module}/sql – sql installation and upgrade files between module vesion /app/code/core/Mage/{Module}/sql/{Resource}/ - resource model specific upgrades /app/code/core/Mage/{Module}/{type} – {action} –{versions}(sql|php) – resource update files . example : mysql4 – upgrade-0.6.23-0.6.25.sql /app/design – is location of design packages (layouts,templates,translations) /app/design/fronten – fronten design /app/design/adminhtml – HTML admin panel design /app/design/{area}/{package}/{theme} – them customizations /app/design/{area}/{package}/{theme}/layout - .xml files that define block structure for different cases in website follow /app/design/{area}/{package}/{theme}/ template - .phtmp (html with php tags) templaces /app/design/{area}/{package}/{theme}/locale – Zend_Translate compatible translation files for package/theme /app/locale – locale files /app/locale/{locale(en_US)} – Zen_Translate compatible translations files for mudules /skin/{area}/{package}/{theme}/ - is where design package css and image /lib – are libraries such as Zend and Varien /js – are javascripts smile /media – uploaded files (product image , pdf documents,etc) /tests – Unit tests( not done yet) /var – temporary files /includes – contains config.php
2. Cấu trúc module
Một module trong magento bao gồm các phần chính sau :
- block : là nơi dùng để load dữ liệu , điều chỉnh dữ liệu từ database trước khi hiển thị rat emplace.
- Controller :nhận yêu cầu từ phía người dùng từ http sau đó chuyển yêu cầu tới các lớp xử lý.
- Etc : bao gồm các files xml để config cho module , tùy theo mỗi module mà có các files xml khác nhau
- Config.xml : dùng để khai báo model , helper , block
- System.xml : config tạo ra một số field , hiển thị trên menu bên trái khi click vào systemconfig
- Adminhtml.xml :dùng để config , hiển thị trên trang menu chính của phần quản trị
- Helper :trong này được dùng để viêt các function được sử dụng ở nhiều nơi khác nhau trong hệ thống . Cách gọi một helper : Mage::helper(‘tenmodule/tenhelper’)->helperTenfunction();
- Model : Dùng để viết các câu lệnh truy vấn trực tiếp đến cơ sở dữ liệu
- Sql : dùng để tạo bảng , cập nhật bảng dữ liệu , tương tác thay đổi dữ liệu…
3. Kết luận
Cũng rất lâu mình không tìm hiểu về magento1 và có thể magento1 bây giờ là một hệ thống cũ tuy nhiên vẫn rất nhiều người dùng vẫn còn sử dụng hệ thống magento1 mà không nâng cấp lên magento2 với lý do magento2 mới được cho ra đời và cần thời gian ổn định hoặc có rất ýt module hỗ trợ tới magento2, vì vậy magento1 vẫn là một sự lựa chọn nếu bạn quan tâm tới hệ thống magento. Trên đây chỉ là một bài viết mình đã tự tìm hiểu từ rất lâu nó chỉ có thể giúp bạn bắt đâu với magento1 với cách hiểu đơn giản nhất, còn thực tế khi áp dụng có thể có sự thay đổi do các phiên bản của nhà phát hành.
Rất cám ơn bạn đã theo dõi bài viết của mình !