Khu vực này chứa đựng mọi cơ chế quản lý gian hàng online của Magento. Đây là phần mà người mua hàng không thể nhìn thấy được mà chỉ có người bán hàng nhìn thấy. Sử dụng nó bạn có thể quản lý được doanh số, đơn đặt hàng, sản phẩm, danh mục sản phẩm, etc. và cài đặt các gói mở rộng cũng như thiết lập nhiều gian hàng cho cùng một website. Nếu bạn có một module hay một extension cho Magento, bạn có thể tạo ra cơ chế quản lý việc bật hay tắt và các thiết đặt khác của nó tại khu vực này.
Frontend (front-end)Khu vực này chứa đựng tất cả những thứ liên quan tới trải nghiệm của khách hàng khi mua hàng trên gian hàng Magento của bạn. Các sản phẩm được trưng bày tại đây cũng như các tính năng đặt hàng, tạo hoá đơn và hiển thị hoa lá cành bắt mắt khác. Khi cài Magento vào lần đầu thì khu vực này đã hoàn toàn hoạt động bình thường như mọi website bán hàng trực tuyến khác. Tuy nhiên, chúng ta chắc chắn sẽ phải sờ mó vào nó nhiều nhất để tuỳ biến gian hàng theo ý muốn của mình.
InstallĐây là khu vực đặc biệt, bạn chỉ nhìn thấy nó đúng một lần khi mới cài Magento và bạn không cần sờ mó gì vào nó cả.
Vùng lập trình (Code pools)Vùng lập trình của Magento được chia ra làm 3 phân vùng nhỏ, mỗi phân vùng đảm trách một vai trò riêng trong việc cấu thành bộ mã nguồn của nó
Vùng cốt lõi (Core): Vùng này chứa tất cả các chức năng thiết yếu tạo nên xương sống của Magento, nó là tập hợp các modules được viết hoặc được chứng nhận bởi đội ngũ lập trình của Magento. Bất cứ khi nào mở rộng hoặc tuỳ biến Magento, chúng ta đều cần phải tham khảo vùng này để hiểu được những gì Magento cung cấp, các thư viện cũng như các hàm có sẵn để chúng ta sử dụng. Magento không khuyến khích viết đè lên hay chỉnh sửa phần lõi này vì nó ảnh hưởng đến khả năng cập nhật của Magento và có thể gây ra các rắc rối không thể sửa chữa được. Trên thực tế, mình khuyến cáo các bạn KHÔNG BAO GIỜ được đụng tới vùng này ngoài việc xem (Cứ đụng vào đi rồi khóc ra đấy thì mình không chịu trách nhiệm đâu
).
Vùng bản địa (Local): Vùng này chứa tất cả các tuỳ biến và mở rộng Magento của người sử dụng. Nó được dựng nên chủ yếu để cho người dùng nghịch ngợm và phát triển những thứ của riêng họ dựa trên vùng lõi. Do đó nó hoàn toàn tách biệt với vùng lõi và không dính líu tới quá trình cập nhật của Magento khi có phiên bản mới. Có nhiều loại mở rộng khác nhau nhưng chúng đều nằm trong cùng một thư mục. Các phần mở rộng bản địa hoàn toàn hoạt động giống như phiên bản của chúng trong lõi, chỉ khác mỗi thư mục thôi. Đây là một cách rất hay để bạn lập trình mà không chạm vào lõi của Magento.
Vùng cộng đồng (Community): Vùng này dành cho các tuỳ biến và phần mở rộng Magento của cộng đồng phát triển Magento. Cũng như vùng bản địa, vùng cộng đồng này được phân tách ra để các nhà phát triển ứng dụng chuyên nghiệp sáng tạo ra các chức năng của riêng họ mà không gây ra xáo trộn gì trong lõi của Magento. Thú thực mình cũng chẳng hiểu tại sao phải cần có thêm vùng này và vùng này thì khác gì với vùng local nói ở trên vẫn là một câu hỏi khó. Nếu để ý, bạn sẽ thấy hầu hết các phần mở rộng toàn dùng vùng local thay vì community. Cứ coi đơn giản là chúng ta có nhiều sân chơi hơn để làm những thứ mà mình thích.
Gói mở rộng (Extensions)Gói mở rộng được coi như một gói các tập mã lập trình cho phép mở rộng các chức năng của Magento. Thông thường, các gói mở rộng này phải tuân theo các quy định và điều khoản của Magento để đảm bảo chúng không can thiệp vào mã nguồn và các phần cốt lõi bên trong Magento, cũng như các tính năng mới mà chúng cung cấp không gây ảnh hưởng tới việc nâng cấp Magento.
Các gói mở rộng của Magento có thể được cài đặt bằng tay bằng Ctrl + C và Ctrl + V nếu bạn download mã nguồn của chúng về, hoặc cài đặt thông qua extension key do hệ thống Magento Connect cung cấp. Hầu hết các extension này phải mua, cũng có một lượng vừa đủ cho phép tải miễn phí. Nếu bạn nhìn vào giá của chúng trên hệ thống Magento Connect, bạn sẽ hiểu tại sao chúng ta nên học Magento
Modules Một module là một gói mở rộng nhằm mở rộng cả tính năng lẫn đặc tính của Magento. Nếu bạn đã từng đọc qua về module của các loại phần mềm khác, bạn có thể dễ dàng hiểu nó là gì. Còn nếu bạn chưa thân thuộc lắm với nó thì có thể tưởng tượng ra một số ví dụ như: cho thêm một bước nữa vào quá trình đặt hàng, tích hợp một phương thức thanh toán mà Magento chưa hỗ trợ hay tạo hệ thống thưởng điểm cho khách hàng, etc. Bên trong một Module có các thành phần nhỏ, được phân vào các thư mục như sau:
BlocksBlocks, gọi nôm na là các khối, là cách mà Magento phân biệt các mảng chức năng trong hệ thống và tạo ra phong cách quản lý kiểu module để quản lý các chức năng này cả về góc độ giao diện trực quan lẫn tính năng. Có 2 loại blocks và chúng phối hợp với nhau tạo ra giao diện trực quan mà bạn thấy trong Magento:
Structural blocks (Khối cấu trúc): Các khối này được tạo ra chỉ nhằm mục đích duy nhất là thiết đặt bố cục cho các trang. Ví dụ như khối header, khối body và khối footer tạo ra một trang có bố cục 3 phần chẳng hạn.
Content blocks (Khối nội dung): Là các khối chứa đựng nội dung nằm trong các khối cấu trúc ở trên. Chúng là đại diện cho từng đặc tính chức năng của trang và sử dụng template đã nói ở trên tạo ra đoạn mã HTML chèn vào khối cấu trúc cha của nó. Ví dụ cho khối nội dung các các khối mini cart, category list, product listing, etc.
Thực tế cho thấy rằng layout và các khối là các thành phần phức tạp và khó nuốt nhất khi bạn học Magento. Nó rất chặt chẽ nhưng chứa đựng đầy rẫy nguy cơ làm hỏng mọi thứ bạn làm chỉ với một chút bất cẩn nhỏ. Do đó việc hiểu cách thức hoạt động của block là cần thiết để giúp bạn thành thạo Magento (Chính mình cũng nhiều lúc điên đầu với mấy thằng này).
HelperTại đây bạn sẽ cho vào các helper class. Các hàm bạn định nghĩa trong helper có thể được gọi ở bất cứ chỗ nào. Do đó helper là nơi chứa các "công cụ" giúp quá trình lập trình của bạn trở nên dễ dàng hơn ở một khía cạnh nào đó (nếu không thì nó đã chả gọi là helper
).
ModelTại đây bạn sẽ có thể tạo các Model mà bạn muốn theo phong cách MVC. Chỗ này còn là nơi mà một Model đặc biệt có tên là Observer cư ngụ. Nói nôm na thì nó là nơi bạn cho vào các chức năng xử lý sự kiện (kiểu như event listener) mà sau này mình sẽ nói nhiều hơn khi đi vào các trường hợp cụ thể.
controllersNếu bạn đã quen với MVC, bạn chắc chắn biết thư mục này dùng làm gì. Có điều là mình thấy hơi lạ khi nó sử dụng chữ 'c' nhỏ thay vì chữ 'C' to như nhiều nền tảng và bộ khung phát triển khác vẫn làm. Một kinh nghiệm mà mình biết được từ đồng nghiệp cho thấy các class nằm trong thư mục "controllers" sẽ cần phải cho thêm require_once([Tên_class_bạn_muốn_extend]) còn các class nằm trong thư mục "Controllers" thì không cần. Mình chưa rõ lắm có đúng không. Dù sao thì Magento cũng hỗ trợ cả hai cho nên cái nào thuận lợi nhất thì bạn dùng cái đó.
dataỞ đây bạn sẽ cho vào các dữ liệu cài đặt để khởi tạo module. Các dữ liệu này đương nhiên sẽ được lưu vào database. Ví dụ, khi bạn muốn tạo một trang CMS của riêng mình thì đây là nơi để bạn cho các dữ liệu khởi tạo vào.
sqlCũng như trong thư mục "data", các dữ liệu trong thư mục này dùng để cài đặt khởi tạo module. Tuy nhiên nó không đi kèm nội dung mà thường chỉ gồm các câu lệnh SQL cơ bản để bạn khởi tạo cấu trúc các bảng trong cơ sở dữ liệu. Nói chung, vì thư mục này và "data" không khác nhau nhiều nên thường người ta chỉ sử dụng thư mục này cho cả việc khởi tạo data lẫn cấu trúc dữ liệu.
etcMọi thứ trong này chỉ là các file xml giúp bạn thiết đặt module của mình. Trong đó một file không thể thiếu là config.xml. Các vấn đề của thư mục này sẽ được nói rõ hơn ở các bài sau.
Layouts là các file XML cơ bản định nghĩa cấu trúc và bố cục các khối (blocks) tại các trang khác nhau, nó cũng điều khiển các thông tin META và page encoding (ví dụ như các thông tin dành cho máy tìm kiếm, các thông tin về mã hoá trang dưới dạng Unicode hay ANSI). Các layouts này được bố trí tuỳ theo module với mỗi module có thể có layout riêng.
Templates:
Template là các file có định dạng *.phtml sử dụng (X)HTML thuần và PHP để tạo ra logic hiển thị thông tin và đặc tính của trang.
Skins: