Chuyển đến nội dung chính

Bài đăng

Umbraco 13: Quản lý thay đổi Database với MigrationPlan và NPoco - Day 7

Ở Day 6, chúng ta đã thiết kế database đa ngôn ngữ cho hệ thống quản lý Category, sử dụng ba bảng Languages , Categories và CategoryTranslations . Tuy nhiên, khi ứng dụng phát triển, cấu trúc database thường xuyên thay đổi. Chẳng hạn: Bổ sung cột SortOrder để sắp xếp Category. Tạo bảng CategoryAuditLogs để lưu lịch sử thao tác trên Category. Triển khai phiên bản mới lên môi trường Development, Staging hoặc Production mà không phải tự chạy SQL thủ công trên từng database. Nếu mỗi lần thay đổi chúng ta đều mở SQL Server Management Studio rồi chạy script bằng tay, việc triển khai sẽ dễ sai sót và khó kiểm soát. Trong bài này, chúng ta sẽ tìm hiểu cách sử dụng MigrationPlan và MigrationBase của Umbraco 13 để quản lý các thay đổi schema database theo từng bước. 1. Migration là gì? Migration là một bước thay đổi cấu trúc database có thể được thực thi theo trình tự. Ví dụ, database ban đầu có bảng Categories , sau đó chúng ta cần thêm cột SortOrder , rồi tạo bảng mới đ...
Các bài đăng gần đây

Next.js: Từ Static Page Đến CMS-Driven Rendering - Day 3

Trong những bài trước, chúng ta đã tìm hiểu các khái niệm cơ bản của React và Next.js. Ở bài này, chúng ta sẽ kết hợp những kiến thức đó để xây dựng một website lịch sử đơn giản, lấy ví dụ về các vị hoàng đế nhà Đường. Mục tiêu không chỉ là tạo một trang hiển thị thông tin, mà còn hiểu cách phát triển từ một trang HTML tĩnh thành một hệ thống có thể lấy nội dung từ CMS và render bằng các React Components. Chúng ta sẽ đi qua các bước: Tạo một trang Next.js tĩnh với Bootstrap. Tách giao diện thành các React Components. Sử dụng dynamic route để xử lý nhiều URL. Lấy nội dung từ một CMS API. Tạo ContentRenderer để ánh xạ nội dung CMS sang React Components. Hiểu luồng render từ CMS đến HTML hiển thị trên trình duyệt. Lưu ý: Các tên như contentHtml , ContentRenderer và CmsPageTemplate trong bài là tên do chúng ta tự đặt để minh họa. Đây không phải API có sẵn của Next.js, React hay Umbraco. JSON của CMS cũng là ví dụ về một API contract do chúng ta thiết kế, khôn...

Umbraco 13: Thiết kế Database đa ngôn ngữ với Languages và Translations - Day 6

Trong Day 5, chúng ta đã tìm hiểu cách sử dụng Language Variants trong Umbraco 13 để quản lý bài viết Lý Tự Nghiệp (李嗣業) bằng tiếng Việt và tiếng Anh. Với nội dung CMS, Umbraco đã cung cấp sẵn cơ chế quản lý phiên bản ngôn ngữ. Tuy nhiên, trong một ứng dụng thực tế, chúng ta còn có nhiều dữ liệu nghiệp vụ khác như danh mục sản phẩm, tên sản phẩm, mô tả, cấu hình hoặc thông tin do backend quản lý. Ví dụ, Bookstore có thể cần các danh mục sau: Lịch sử — History. Triết học — Philosophy. Thay vì tạo hai danh mục riêng biệt cho hai ngôn ngữ, chúng ta muốn lưu một danh mục duy nhất và quản lý tên của nó theo từng ngôn ngữ. Trong bài này, chúng ta sẽ thiết kế một mô hình database đa ngôn ngữ đơn giản bằng SQL Server và ASP.NET Core Web API. Mô hình có bảng Languages để quản lý ngôn ngữ, bảng Categories để lưu dữ liệu nghiệp vụ và bảng CategoryTranslations để lưu nội dung đã dịch. Chúng ta cũng sẽ bổ sung trạng thái enable/disable cho ngôn ngữ, xây dựng API trả về danh mục t...

Umbraco 13: Xây dựng Blog đa ngôn ngữ với Language Variants - Day 5

Trong các bài trước, chúng ta đã xây dựng project Bookstore, tạo các category Lịch sử và Triết học, đồng thời tìm hiểu cách sử dụng Content Delivery API để lấy dữ liệu từ Umbraco 13. Trong bài Day 5, chúng ta sẽ mở rộng project bằng một chức năng thực tế hơn: xây dựng khu vực Blog có hỗ trợ tiếng Việt và tiếng Anh . Thay vì chỉ quản lý sách, website sẽ có thêm các bài viết lịch sử. Ví dụ, chúng ta sẽ tạo một bài viết về Lý Tự Nghiệp (chữ Hán: 李嗣業), một danh tướng thời Đường, với nội dung tiếng Việt là ngôn ngữ chính và tiếng Anh là ngôn ngữ thứ hai. Qua bài thực hành này, chúng ta sẽ tìm hiểu cách thiết kế Document Type, xây dựng Content Tree, cấu hình Language Variants, nhập nội dung theo từng ngôn ngữ và kiểm tra kết quả qua Content Delivery API. Mục tiêu sau bài học: Hiểu cơ chế đa ngôn ngữ có sẵn trong Umbraco 13. Biết cách tạo Document Type cho Blog, Blog Category và Blog Post. Phân biệt dữ liệu dùng chung với dữ liệu thay đổi theo ngôn ngữ. Tạo một bài viết ...