Back To Home

Name: Ngày 2: Cấu trúc thư mục dự án Sitecore

🧱 Cấu trúc thư mục dự án Sitecore

Khi bạn mở một solution Sitecore trong Visual Studio hoặc kiểm tra thư mục cài đặt Sitecore trong IIS, bạn sẽ thấy khá nhiều thư mục và file “lạ”.
Bài viết hôm nay giúp bạn hiểu ý nghĩa của từng phần, và phân biệt giữa cấu trúc Sitecore gốccấu trúc Helix (chuẩn code hiện đại).


🔹 1. Hai tầng cấu trúc chính trong Sitecore

Dự án Sitecore có thể chia thành hai lớp (layer) về mặt cấu trúc:

Cấp Mô tả Ví dụ
A. Cấu trúc cài đặt (Website Root) Thư mục cài Sitecore thật trong IIS (chạy web) C:\inetpub\wwwroot\sitecore.local\
B. Cấu trúc code solution (Helix) Thư mục code trong Visual Studio Solution src\Foundation, src\Feature, src\Project

🔹 2. A. Cấu trúc thư mục Website Root

Đây là nơi Sitecore thực sự chạy (giống như wwwroot trong ASP.NET).
Dưới đây là các thư mục quan trọng bạn cần biết:

Thư mục Mô tả
/App_Config/ Chứa tất cả file cấu hình của Sitecore và dự án (bao gồm include patch).
/bin/ Nơi chứa các file DLL sau khi build (Sitecore core DLL + custom code).
/sitecore/ Giao diện quản trị Sitecore (Content Editor, Experience Editor…).
/Views/ Chứa Razor View (.cshtml) cho các Rendering MVC.
/App_Data/ Chứa log, temporary cache, các file serialized data.
/layouts/ Legacy folder (chủ yếu cho View cũ, ít dùng ở phiên bản mới).
/xsl/ Dành cho các rendering XSL cũ (hiện hầu như không dùng nữa).
/sitecore modules/ Dành cho module hoặc gói mở rộng (ví dụ: Sitecore PowerShell Extensions).
/media/ (Tuỳ môi trường) – nơi chứa file media nếu không dùng Media Library database.

📘 Gợi ý: Khi bạn publish từ Visual Studio, code (DLL, Views, Config) sẽ được copy vào đúng các thư mục này.


🔹 3. B. Cấu trúc code Helix (Solution Structure)

Trong Visual Studio, chuẩn Helix định nghĩa 3 layer chính để tách biệt vai trò của từng phần code.

🧩 1. Foundation

Chứa logic cơ bản, tái sử dụng trên toàn hệ thống.
Ví dụ: Logging, Data Access, Serialization, Indexing, Caching…

📂 Ví dụ:

 
src/ └── Foundation/ ├── Foundation.Data/ ├── Foundation.Indexing/ └── Foundation.Logging/

🧩 2. Feature

Chứa tính năng cụ thể, độc lập — có thể tái sử dụng giữa các site.

📂 Ví dụ:

 
src/ └── Feature/ ├── Feature.Navigation/ ├── Feature.Banner/ ├── Feature.Articles/

Mỗi Feature có thể có:

 
/Controllers /Models /Views /App_Config/Include

🧩 3. Project

Chứa phần cấu hình cuối cùng để kết hợp các Feature và Foundation thành website hoàn chỉnh.

📂 Ví dụ:

 
src/ └── Project/ ├── Project.Biltmore/ └── Project.MainSite/

Mỗi project thường có:

  • Layout chính (_Layout.cshtml)

  • App_Config riêng cho môi trường

  • ViewStart, Partial, Theme


🔹 4. Thư mục hỗ trợ khác trong Solution

Thư mục Mục đích
/serialization/ Chứa file .yml hoặc .item được serialize từ Sitecore để version control nội dung.
/tests/ Chứa project test (unit test, integration test).
/tools/ Script build, PowerShell hoặc deploy pipeline.

🔹 5. Quy trình Build & Publish (tổng quan)

  1. Developer code trong src/Feature/... hoặc src/Foundation/...

  2. Build → tạo ra DLL trong /bin

  3. Config được copy vào /App_Config/Include

  4. View được copy vào /Views

  5. IIS hoặc Sitecore chạy trên thư mục website thực (C:\inetpub\...)


🔹 6. Kinh nghiệm thực tế

  • 💡 Không sửa trực tiếp trong thư mục IIS (wwwroot) – chỉ publish từ solution.

  • 💡 Mỗi Feature/Project nên có file App_Config/Include/*.config riêng để dễ quản lý.

  • 💡 Dùng Helix naming convention: Company.Feature.Name, Company.Foundation.Name.

  • 💡 Khi debug lỗi, check log trong:

     
    /App_Data/logs/

🔹 7. Tóm tắt

Layer Vai trò Ví dụ
Foundation Logic dùng chung Logging, Data, Caching
Feature Module tính năng Navigation, Banner, Article
Project Website hoàn chỉnh Biltmore, CorporateSite

🏁 Kết luận

Cấu trúc thư mục là nền tảng quan trọng giúp bạn hiểu Sitecore hoạt động như thế nào, và nên đặt code ở đâu.
Nắm vững cách tổ chức này, bạn sẽ dễ dàng mở rộng, debug, và làm việc nhóm hiệu quả hơn trong các dự án lớn.


📘 Bài tiếp theo:

🔸 Hiểu về Template, Item và Field trong Sitecore
Đây là “linh hồn” của Sitecore – nơi bạn định nghĩa mọi loại nội dung trong hệ thống.


📍Hashtags gợi ý:

#Sitecore #Helix #SitecoreCMS #DotNetDeveloper #SitecoreVietnam #CMSDevelopment

Donald Trump

Để trở thành người chiến thắng, bạn cần biết khi nào là đủ. Đôi khi trong cuộc sống, bạn phải từ bỏ cuộc chiến và chuyển sang mục tiêu mới mang lại hiệu quả hơn

Related Post