Tìm hiểu về cấu trúc hoạt động của Magento

Magento có một kiến ​​trúc tuyệt vời đằng sau hệ thống của nó. Đó là sự kết hợp tuyệt vời của Zend Framework và MVC Architecture. Đó là lý do tại sao Magento là một giải pháp thương mại điện tử mã nguồn mở chuyên nghiệp cung cấp sự linh hoạt và kiểm soát chưa từng có. Với Magento, không bao giờ cảm thấy bị mắc kẹt trong giải pháp Thương mại điện tử của bạn nữa. Trong bài học này, bạn sẽ tìm hiểu về kiến ​​trúc Magento để có cái nhìn tổng quan về Magento. Bài học có 3 chủ đề và bạn cần dành 1 giờ cho mỗi bài:

  1. Kiến trúc Magento
  2. Mở rộng và mô-đun
  3. Khối – Bố cục – Chủ đề

Hãy bắt đầu ngay bây giờ.

1. Kiến trúc Magento

Magento được xây dựng trên đỉnh của Zend Framework, đảm bảo rằng cơ sở mã sẽ an toàn và có thể mở rộng. Có nhiều lý do để chọn Khung công tác Zend, nhưng lý do chính là Zend cung cấp một thư viện mã hướng đối tượng với một công ty cam kết đứng đằng sau nó.

Sử dụng khuôn khổ này, Magento được xây dựng với 3 nguyên lý trung tâm.

– Tính linh hoạt : Chúng tôi tin rằng mỗi giải pháp nên là duy nhất như doanh nghiệp đằng sau nó. Mã của Magento cho phép tùy chỉnh liền mạch.

– Nâng cấp: Bằng cách tách mã lõi khỏi các tùy chỉnh của cộng đồng và địa phương, Magento có thể dễ dàng tùy chỉnh mà không mất khả năng nâng cấp.

–  Tốc độ và bảo mật: Các tiêu chuẩn mã hóa được các nhà phát triển sử dụng tuân theo các thực tiễn tốt nhất để tối đa hóa hiệu quả của phần mềm và cung cấp một cửa hàng trực tuyến an toàn.

Kiến trúc của Magento thực hiện theo kiến ​​trúc MVC nổi tiếng nhưng thực sự nó có một số bổ sung riêng giúp phát triển web quy mô lớn. Giống như tất cả chúng ta đều biết kiến ​​trúc MVC (Model, View và Controller) là nơi bạn có một bộ mô-đun đi kèm với Model, Views và Bộ điều khiển để phân chia mã của bạn và giúp việc quản lý mã dễ dàng và đơn giản hơn. Trong MVC thông thường, người ta sẽ yêu cầu bộ điều khiển cho một dịch vụ và bộ điều khiển sẽ sử dụng các mô hình để nhận dữ liệu đã xử lý và đưa dữ liệu tới chế độ xem để cung cấp cho người dùng phản hồi và thực hiện một yêu cầu khác sẽ được thực hiện theo cách tương tự. Bạn có thể theo liên kết này để đọc thêm về MVC:

Kiến trúc của Magento đã thêm rất nhiều khối phụ vào kiến ​​trúc MVC ở trên để xử lý hệ thống thương mại điện tử lớn hơn có thể xử lý nhiều trang web / cửa hàng từ cùng một back-end. Magento Architecture Views được chia thành 3 phần, mô hình thành 2 và bạn có bộ điều khiển và người trợ giúp trong đó người trợ giúp là mô-đun cụ thể. Nếu bạn đang nghĩ rằng tại sao người trợ giúp là mô-đun cụ thể thì bạn nên biết rằng người trợ giúp Magento và trên thực tế tất cả các mô hình và bộ điều khiển đều mở rộng bộ điều khiển, mô hình và trình trợ giúp lõi Magento để các tính năng phổ biến có trong siêu lớp trong khi bạn cũng có thể thêm mô-đun cụ thể các tính năng mà bạn không cần chia sẻ để tạo các lớp trợ giúp lớn. Để bắt đầu, hãy xem hình ảnh dưới đây.

Chúng ta có thể thấy rằng View đã được chia thành ba phần. Các mẫu là các mã html đơn giản thường được lưu dưới dạng phtml với thẻ php để in dữ liệu và thực hiện một số vòng lặp cơ bản và một số cuộc gọi javascript như chế độ xem thông thường của chúng tôi sẽ như thế nào. Tiếp đến là các khối là một khái niệm mới cho MVC. Các khối được sử dụng đơn giản để giảm gánh nặng cho bộ điều khiển trung tâm và làm cho các khung nhìn khác nhau trong một mô-đun độc lập hơn. Điều này rất quan trọng trong những ngày này và bất kỳ trang web nào ngày nay đều đứng trên một số khối khác nhau và một số khối có thể được tải AJAX và cung cấp các dịch vụ khác nhau. Do đó, Chế độ xem có bộ điều khiển riêng để yêu cầu hoặc yêu cầu dữ liệu được xử lý từ Mô hình và cung cấp ‘chế độ xem’ đồ họa thông qua các mẫu. Các khối chứa tất cả dữ liệu và hàm có thể được gọi từ mẫu xem và Khối có thể có các khối lồng nhau. Vì thế,

Bây giờ, chúng ta có thể tự hỏi vai trò của bộ điều khiển trung tâm là gì nếu mọi chế độ xem đi kèm với bộ điều khiển riêng có thể tương tác với các mô hình và trình trợ giúp. Đó là nơi bố trí thực sự chơi. Trong hầu hết các định nghĩa tôi đọc trước đây họ nói rằng để nói khối nào đi với mẫu nào và để xác định khối nào được lồng trong đó chúng ta cần bố trí. Điều này đúng nhưng có thêm một chút nữa. Bố cục chỉ có thể được gọi bằng tên của bộ điều khiển trung tâm, do đó bộ điều khiển trung tâm có bố cục xác định các bộ điều khiển phụ (khối) và các mẫu mà nó chứa. Bộ điều khiển trung tâm cùng với người trợ giúp cung cấp dịch vụ cho toàn bộ khối được đặt trong khi các khối riêng lẻ cung cấp dịch vụ trong email.

Cuối cùng, Mô hình chứa Mô hình và các bộ sưu tập. Các mô hình hoạt động như một dịch vụ mà nó cung cấp các chức năng cho các tính toán kinh doanh và xử lý dữ liệu khác nhau, trong khi đó, bộ sưu tập được sử dụng để cung cấp các chức năng để truy xuất Dữ liệu.

2. Mở rộng và mô-đun

a. Cốt lõi, local và cộng đồng

Lõi: Lõi của Magento chứa tất cả các chức năng có trong phiên bản đã tải xuống. Mã lõi là một tập hợp các mô-đun được phát triển hoặc chứng nhận bởi nhóm phát triển lõi Magento. Chỉnh sửa các tệp cốt lõi không được khuyến nghị và sẽ vô hiệu hóa khả năng nâng cấp Magento trong tương lai.

Local: Tiện ích mở rộng cục bộ là các tùy chỉnh của Magento chỉ nằm trên bản sao cục bộ của người dùng. Các tiện ích mở rộng này sẽ được đặt trong một thư mục cục bộ để chúng không can thiệp vào việc nâng cấp mã cốt lõi và để phân biệt chúng với các đóng góp của cộng đồng. Có nhiều loại tiện ích mở rộng khác nhau, chúng tôi sẽ truy cập ngay lập tức, nhưng tất cả chúng sẽ nằm trong cùng một thư mục.

Chức năng mở rộng cục bộ giống như mã lõi, chỉ thư mục là khác.

Cộng đồng: Đóng góp của cộng đồng chỉ có vậy và khi được tải xuống sẽ nằm trong thư mục cộng đồng. Giống như các tiện ích mở rộng cục bộ, bằng cách tách chúng ra khỏi mã lõi, chủ cửa hàng Magento có thể tận hưởng chức năng bổ sung mà không ảnh hưởng đến khả năng nâng cấp lên các phiên bản Magento trong tương lai.

b. Mở rộng và mô-đun

Tiện ích mở rộng: Tóm lại, tiện ích mở rộng chính xác là âm thanh của chúng. Một hoặc nhiều tệp được đóng gói cùng nhau để mở rộng chức năng của Magento. Các điều khoản và điều kiện nghiêm ngặt cấm các tiện ích mở rộng sửa đổi mã lõi, đảm bảo rằng mọi chức năng mở rộng không cấm bạn nâng cấp khi phiên bản mới của Magento được phát hành.

Tiện ích mở rộng có thể được cài đặt từ bảng quản trị hoặc tải xuống từ Magento Connect. Các quy trình này sẽ được trình bày sau trong cuốn sách, nhưng hãy xem ba loại tiện ích mở rộng.

Có ba loại tiện ích mở rộng và chúng sẽ nằm ở một trong hai địa điểm được mô tả ở trên.

Mô-đun: Mô-đun là một tiện ích mở rộng mở rộng các tính năng và chức năng của Magento. Bạn có thể quen với ý tưởng mô-đun từ phần mềm khác, nhưng nếu không, một số ví dụ cụ thể về mô-đun sẽ là tích hợp cổng thanh toán bổ sung hoặc công cụ quảng cáo các mặt hàng đặc trưng. Hình ảnh dưới đây cho bạn thấy cấu trúc cơ sở của một mô-đun trong Magento. Bạn sẽ tìm hiểu về nó chặt chẽ trong bài học tiếp theo.

 3. Khối – Bố cục – Chủ đề

a. Khối

Trong magento có hai loại khối. Đó là khối cấu trúc và khối nội dung

– Khối cấu trúc: Đây là các khối được tạo cho mục đích duy nhất là gán cấu trúc trực quan cho trang cửa hàng. Khối cấu trúc được sử dụng để tách chủ đề thành các phần. Hãy xem cách bố trí ba cột. Các khối cấu trúc là

  • Đầu
  • Trái
  • Nội dung
  • Phải
  • Chân trang

Kết cấu khối bố trí ba cột

– Khối nội dung: Đây là các khối tạo ra nội dung thực tế bên trong mỗi khối cấu trúc. Chúng là các đại diện của từng chức năng tính năng trong một trang và sử dụng các tệp mẫu để tạo HTML (X) được chèn vào khối cấu trúc chính của nó. Hãy lấy cột bên phải. Các khối nội dung phải là:

  • Minicart
  • Sản phẩm được xem gần đây
  • Khối bản tin
  • Thăm dò ý kiến

Khối nội dung trong mỗi khối cấu trúc

Khi nhận được yêu cầu từ người dùng kết nối với trang web để xem trang:

– Magento sẽ tải các khu vực cấu trúc

– Mỗi khu vực kết cấu sẽ được xử lý thông qua

– Magento sẽ tập hợp các khối nội dung được gán cho từng khu vực cấu trúc

– Sau đó, nó sẽ tiến triển thông qua mẫu khối nội dung cho từng khu vực cấu trúc, để xử lý đầu ra

– Nó gửi lại tất cả những thứ này dưới dạng đầu ra cuối cùng cho người dùng, người sau đó xem trang Magento được yêu cầu

b. Bố trí

Để gán các khối cho từng khối cấu trúc, Magento tải tệp bố cục XML cho mỗi yêu cầu. Tệp bố cục XML này được gọi bởi URL mà người dùng đang truy cập trên trang web. Trên hết website sẽ có một tệp page.xml, đó là trình tải default cho tất cả các trang trên trang web.

Một tệp XML bố cục thường được cấu trúc như sau:

01 <layout version=”0.1.0″>
02 <default>
03 <reference name=”header”>
04 <block type=”page/html_header” name=”header” as=”header”>
05 <block type=”page/template_links” name=”top.links” as=”topLinks”/>
06 <block type=”page/switch” name=”store_language” as=”store_language”template=”page/switch/languages.phtml”/>
07 <block type=”core/text_list” name=”top.menu” as=”topMenu”translate=”label”>
08 <label>Navigation Bar</label>
09 </block>
10 </block>
11 </reference>
12 </default>
13 </layout>

Trong đoạn mã trên chúng ta có:

– <default> Trình xử lý cho URL, trong trường hợp này mặc định sẽ tải bất kể trình xử lý nào khác đang được khởi tạo. Nếu thay thế thẻ <default> bằng thẻ <module_controll_action>, các khối được đặt vào đó sẽ tải khi hành động được gọi.

– <Reference>: Cấu trúc tham chiếu gọi các khối trong chủ đề của chúng tôi

– <block>: Khối nội dung xác định loại khối và mẫu sẽ xử lý dữ liệu gửi đi của khối trong hệ thống. loại tham số xác định lớp mô-đun có chứa chức năng của khối. Có 2 cách để đặt một khối nội dung thành một khối cấu trúc. before = tầm – hung và sau = săn – hung là các tham số giúp bạn đặt khối nội dung vào vị trí mà bạn muốn.

Ngoài ra, Magento sử dụng các hành động trong các khối cho các chức năng cần xử lý dữ liệu được nhập vào chúng, ví dụ như thêm các kiểu định dạng CSS:

01 <action method=”addCss”>
02 <stylesheet>css/styles.css</stylesheet>
03 </action>
04 <action method=”addJs”>
05 <script>varien/js.js</script>
06 </action>
07 <action method=”addItem”>
08 <type>skin_css</type>
09 <name>css/styles-ie.css</name>
10 <params/>
11 <if>lt IE 8</if>
12 </action>

Chúng tôi sẽ lưu ý rằng có một số thẻ trong thẻ phương thức hành động. Chúng được xử lý thành một mảng và được truyền qua tham số =, có thể, trong trường hợp này là addCss. Hàm này đặt đầu vào thành đầu ra, sẵn sàng cho mẫu thích hợp của nó.

c. Chủ đề

Chủ đề là bất kỳ sự kết hợp nào của bố cục, mẫu và / hoặc tệp da tạo ra trải nghiệm hình ảnh của cửa hàng của bạn. Magento được xây dựng với khả năng tải nhiều chủ đề cùng một lúc và do đó phân biệt các chủ đề thành hai loại:

– Chủ đề mặc định – Mọi giao diện đều có một chủ đề gọi là ‘mặc định’, đây là chủ đề chính của giao diện. Khi bạn chỉ định một giao diện cho cửa hàng của mình, ứng dụng sẽ tự động tìm chủ đề này ‘mặc định’ và tải giao diện đó lên giao diện người dùng. Để tùy chỉnh thiết kế cửa hàng của bạn, bạn có thể sửa đổi chủ đề này hoặc tạo một chủ đề không mặc định ngoài ra và tải nó cùng với mặc định. Chủ đề mặc định phải chứa tất cả các bố cục, mẫu và giao diện cần thiết để chạy một cửa hàng không có lỗi và do đó là chủ đề thấp nhất trong hệ thống phân cấp chủ đề.

– Chủ đề không mặc định – Một chủ đề không mặc định có thể chứa nhiều hoặc ít tệp chủ đề mà bạn thấy phù hợp với nhu cầu của bạn. Loại chủ đề này nhằm tạo ra các thay đổi thiết kế theo mùa tạm thời cho một cửa hàng mà không phải tạo một chủ đề mặc định hoàn toàn mới bằng cách tạo một vài hình ảnh và cập nhật một số CSS, bạn có thể dễ dàng biến cửa hàng của mình từ một lỗ khoan thực sự thành một giá đỡ -out cửa hàng Giáng sinh theo mùa.

Chúng ta hãy xem các thành phần của một chủ đề:

– Bố cục – Bố cục là các tệp XML cơ bản xác định cấu trúc khối cho các trang khác nhau, cũng như kiểm soát thông tin META và mã hóa trang. Các tệp bố cục được phân tách trên cơ sở mỗi mô-đun, với mỗi mô-đun mang theo tệp bố cục riêng.

– Mẫu – Mẫu là các tệp PHTML có chứa (X) đánh dấu HTML và bất kỳ thẻ PHP cần thiết nào để tạo logic để trình bày trực quan thông tin và tính năng.

– Skins – Skins là các tệp JavaScript và CSS và hình ảnh cụ thể phù hợp với HTML (X) của bạn. Các khối bạn yêu cầu là gì? Câu hỏi hay và đừng lo lắng, chúng ta gần như đã hoàn thành việc xác định các thành phần của Magento.

(Theo Magestore)

Trả lời