PDA

View Full Version : 2 phút liệu có "làm" được CMS không ?



anhchanghaudau
03-12-2010, 23:07
Nguồn http://linq2js.blogspot.com/2010/12/2-phut-lieu-co-lam-uoc-cms-khong.html

Hì hì, khi đọc tiêu đề gây "sốc" và "ngộ độc" tập thể này, có nhiều bạn sẽ nghĩ mình "siêu phét" hoặc chí ít cũng thuộc loại "phét có bằng cấp". Tất nhiên để tạo 1 CMS ngon lành theo hướng "tự xử" chí ít cũng tốn không ít "xương máu" và thời gian, nhanh thì 2-3 ngày, lâu thì 1 tháng, nếu sử dụng mã nguồn mở thì phải tìm hiểu cấu hình rắc rối, nếu sử dụng software phát sinh mã thì "chắc là có thể".

Quên mất chưa giới thiệu, CMS này là một dạng quản trị và cập nhật thông tin đơn giản, có đầy đủ chức năng Thêm, Xóa, Sửa, Lọc và cuối cùng là nó chạy trên môi trường Windows và sử dụng công nghệ .NET. Đặc biệt CMS này sử dụng LINQ đấy, rất thú vị và tiện phát triển sau này.
[HR]


Chuẩn bị
Để làm được điều này vui lòng chuẩn bị "rau củ quả: như sau:

Có cài đặt sẵn phiên bản .NET 3.5 hoặc 4.0 trên máy
Thêm một bộ Visual Studio nhé và phải là phiên bản 2010 (có thể là 2008 nhưng cần cài thêm một số gói dịch vụ khác, bạn nào có nhu cầu thì mình sẽ gửi thông tin)
Một cơ sở dữ liệu SQL 2005.


30 giây đầu tiên
Ngắm bộ Visual Studio khởi động, tùy máy nhanh hay chậm, nhưng thôi cứ cho là 15 giây khởi động đi.

Tạo một website
Chọn loại ngôn ngữ yêu thích VB hoặc C#.
Chọn loại website là ASP.NET Dynamic Data LINQ to SQL Website



http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkB2KM_3JI/AAAAAAAAAKE/NWul8OuTQHs/s400/1.jpg (http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkB2KM_3JI/AAAAAAAAAKE/NWul8OuTQHs/s1600/1.jpg)


Website đã được tạo với cấu trúc thư mục như sau


http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkBss1tn-I/AAAAAAAAAKA/R4RxLrTmgMM/s1600/2.jpg (http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkBss1tn-I/AAAAAAAAAKA/R4RxLrTmgMM/s1600/2.jpg)




30 giây tiếp theo
Chuẩn bị cho kết nối với cơ sở dữ liệu

Nếu bạn không thấy cửa sở Server Explorer thì có thể vào menu View -> Server Explorer
Chọn phần Data Connections
Sau đó nhấn chuột phải để thấy menu xổ và chọn Add Connection...
Nhập thông tin kết nối vào hộp thoại, ở đây máy mình có tên SQL Server là localhost\sql2005, nếu máy bạn chỉ có cài 1 phiên bản SQL thì có thể điền là (local).
Chọn database sử dụng để tạo CMS, mình sẽ dùng Northwind, nếu bạn chưa có database mẫu thì có thể tải về một bản để làm thử (tải tại đây (http://download.microsoft.com/download/d/e/5/de57f203-3140-43e0-9473-d694d45bbd9b/SQL2000SampleDb.msi), trong đây có 2 database mẫu là Northwind và Pubs)



http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkEfHMqYHI/AAAAAAAAAKI/DeH6UTyDr0w/s400/3.jpg (http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkEfHMqYHI/AAAAAAAAAKI/DeH6UTyDr0w/s1600/3.jpg)



Sau khi kết nối thì cấu trúc database sẽ hiển thị như sau:


http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkGh7W2IyI/AAAAAAAAAKM/fpdeNzoxDJE/s1600/4.jpg (http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkGh7W2IyI/AAAAAAAAAKM/fpdeNzoxDJE/s1600/4.jpg)



30 giây đầu của phút thứ 2
Tạo mới một tập tin cho website bằng cách


http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkHjUxAcQI/AAAAAAAAAKQ/BUCY6BwaNZ4/s400/5.jpg (http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkHjUxAcQI/AAAAAAAAAKQ/BUCY6BwaNZ4/s1600/5.jpg)




Chọn menu File -> New file...
Chọn loại tập tin là LINQ to SQL Classes, bạn có thể đặt tên tập tin là DB
Một cửa sổ chỉnh sửa hiện ra
Bạn "nắm đầu" những table của cơ sở dữ liệu từ cửa sổ Server Explorer và kéo thả vào vùng soạn thảo màu trắng, bạn sẽ được một cấu trúc quan hệ của những class do Visual Studio phát sinh dựa trên cơ sở dữ liệu của bạn



http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkJbGV8lqI/AAAAAAAAAKU/03lWZN1JeJQ/s400/6.jpg (http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkJbGV8lqI/AAAAAAAAAKU/03lWZN1JeJQ/s1600/6.jpg)



Lưu lại và đóng vùng soạn thảo dành cho tập tin DB

Chỉ còn 30 giây thôi
Trong cửa sổ Solution Explorer, tìm đến tập tin gloabl.asax, nhấp đúp vào để soạn thảo nó.


http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkLsZdaclI/AAAAAAAAAKY/e6IrotOyzpU/s400/7.jpg (http://2.bp.blogspot.com/_-GHT-kgNuYI/TPkLsZdaclI/AAAAAAAAAKY/e6IrotOyzpU/s1600/7.jpg)



Bạn sẽ thấy một đoạn mã lệnh được mở ra, có rất nhiều dòng viết sẵn và nhiều dòng được đánh dấu chú thích.

Tìm đến dòng 17, có nội dung như sau
//model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
Bạn sao chép dòng này sang dòng 18 và bỏ chú thích dòng này đi, sau đó sửa tại typeof(YourDataContextType) thành typeof(DBDataContext), nếu lúc nãy bạn đặt tên tập tin LINQ to SQL là DB thì có nghĩa tên class đầy đủ là DBDataContext (Visual Studio tự động thêm hậu tố DataContext vào).
Sửa tiếp chỗ ScaffoldAllTables = false thành ScaffoldAllTables = true
Lưu và đóng cửa sổ soạn thảo lại.
Nhấn nhanh nào F5 để cho kịp 2 phút, bây giờ cầm một cốc cà phê và thưởng thức thành quả 120 giây của mình đê.


Chạy thử
Giao diện trang chủ cũng khá "mướt", trình bày tất cả những bảng của cơ sở dữ liệu


http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkMurRYLRI/AAAAAAAAAKc/BwFTg3IewNA/s320/7.png (http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkMurRYLRI/AAAAAAAAAKc/BwFTg3IewNA/s1600/7.png)




Còn đây là một danh sách dữ liệu của một bảng


http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkOhK7oWSI/AAAAAAAAAKg/CLlrMI03EeM/s400/8.jpg (http://4.bp.blogspot.com/_-GHT-kgNuYI/TPkOhK7oWSI/AAAAAAAAAKg/CLlrMI03EeM/s1600/8.jpg)



Tuyệt chưa nào, trông cũng pro đấy. Có những công cụ đã được phát sinh:

Lọc theo trường có kiểu dữ liệu true / false
Lọc theo danh mục sản phẩm
Lọc theo nhà cung cấp
Thao tác Sửa
Thao tác Xóa
Thao tác Xem
Dùng checkbox hiển thị trường có kiểu true / false đó nha
Xem được cả bảng phụ danh sách những chi tiết hóa đơn của từng sản phẩm
Có thể xem thông tin danh mục sản phẩm của từng sản phẩm
Và xem được cả thông tin nhà cung cấp
Chuẩn luôn, có hẳn bộ phân trang, nhảy trang trực tiếp bằng cách nhập số và nhấn enter
Còn có cả bộ chỉ định số mục hiển thị nữa nè
Còn đây là nút thêm sản phẩm
Đó là những điều khiển chung của một trang danh sách, tất cả những thao tác lọc, chuyển trang, đổi số mục hiển thị đều sử dụng Ajax.

Trang sửa dữ liệu


http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkQrYpQ2XI/AAAAAAAAAKk/pihZuwh6v24/s320/9.jpg (http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkQrYpQ2XI/AAAAAAAAAKk/pihZuwh6v24/s1600/9.jpg)

Dùng textbox để nhập liệu cho phần lớn các trường
Những trường có kiểu tru / false thì dùng checkbox
Những trường tham chiếu đến bảng cha thì dùng hộp xổ
Lệnh cập nhật hoặc hủy cập nhật

Trang thông tin chi tiết


http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkRcTPI2DI/AAAAAAAAAKo/LM2vjB5wS-g/s1600/10.jpg (http://1.bp.blogspot.com/_-GHT-kgNuYI/TPkRcTPI2DI/AAAAAAAAAKo/LM2vjB5wS-g/s1600/10.jpg)



Cũng trang bị những liên kết tham chiếu đến bảng cha, bảng con
Và những thao tác trực tiếp: Xóa, Sửa

Ưu điểm
Với những thao tác đơn giản, gọn nhẹ, "mì ăn liền", việc tạo CMS như thế này sẽ giúp cho việc nhập liệu dữ liệu mẫu vào thật đơn giản mà không phải làm nhiều thao tác hoặc tốn sức lập trình. CMS này cũng thích hợp cho những sản phẩm nhỏ, những sản phẩm giới thiệu, dùng thử (demo).

Nhược điểm
Vì nhỏ gọn nên chức năng tạo sẵn khá ít.

Hướng phát triển
Tất nhiên, đồ chùa, đổ tạo sẵn thì không hoàn thiện, nhưng không có nghĩa là không thể phát triển. Với những tính năng cơ bản đó, bạn có thể tùy biến thêm những chức năng nâng cao như:

Tạo phần quản lý đa ngôn ngữ
Tạo đăng nhập, quản lý quyền thành viên
Tạo thêm nhiều loại điều khiển cho từng loại trường dữ liệu theo yêu cầu
Đặt lại tên những trường tùy biến theo ý nghĩa khác
Giới hạn những mục được chỉnh sửa / được xem
...
Cấu trúc CMS này khá chuẩn, bạn có thể tùy biến nhiều, mọi thứ chỉ phụ thuộc vào độ "mò" và sáng tạo của bạn.

Thao khảo

Thêm phần quản trị và phân quyền http://forums.asp.net/t/1343958.aspx
Tạo thêm một số điều khiển để nhập liệu http://csharpbits.notaclue.net/2009/06/html-editor-fieldtemplate-for-dynamic.html
Tạo thêm những trang chỉnh sửa tùy theo bảng dữ liệu http://csharpbits.notaclue.net/2008/07/dynamic-data-and-custom-pages.html
Tạo những bộ lọc dữ liệu nâng cao http://csharpbits.notaclue.net/2009/01/dynamic-data-filtering-installation.html
Sắp xếp danh sách dữ liệu http://code.msdn.microsoft.com/ddcolumnsordering

phongjalvn
14-12-2010, 11:30
Nếu theo tiêu chí bài viết này thì mình làm 1 simple todo list trong vòng 30 giây. Thật đấy. Và bao gồm cả database, chứ không xài database có sẵn nhé.

1. Chuẩn bị:
Máy bạn có cài sẵn Rails (Ít nhất 2.2), Hobo (http://hobocentral.net/)

2. Bắt đầu:
5 giây đầu tiên: mở Ruby console hoặc command promt, tùy bạn theo cài đặt trên máy bạn
10 giây tiếp theo: Ghõ

$ hobo todolist
$ cd todolist
$ ruby script/generate hobo_model_resource todo name:string body:text complete:boolean
$ ruby script/generate hobo_migration

(Bấm 'm' khi được hỏi)

$ ruby script/server

15 giây tiếp theo, mở trình duyệt, đến địa chỉ http://localhost:3000

Giờ bạn đã có thể:

- Đăng ký, đăng nhập.
- Quản lý todo list
- Tìm kiếm trong todo list

Have fun!

anhchanghaudau
19-12-2010, 09:30
Nếu theo tiêu chí bài viết này thì mình làm 1 simple todo list trong vòng 30 giây. Thật đấy. Và bao gồm cả database, chứ không xài database có sẵn nhé.

1. Chuẩn bị:
Máy bạn có cài sẵn Rails (Ít nhất 2.2), Hobo (http://hobocentral.net/)

2. Bắt đầu:
5 giây đầu tiên: mở Ruby console hoặc command promt, tùy bạn theo cài đặt trên máy bạn
10 giây tiếp theo: Ghõ

$ hobo todolist
$ cd todolist
$ ruby script/generate hobo_model_resource todo name:string body:text complete:boolean
$ ruby script/generate hobo_migration

(Bấm 'm' khi được hỏi)

$ ruby script/server

15 giây tiếp theo, mở trình duyệt, đến địa chỉ http://localhost:3000

Giờ bạn đã có thể:

- Đăng ký, đăng nhập.
- Quản lý todo list
- Tìm kiếm trong todo list

Have fun!

Vâng, càng nhanh càng tiết kiệm. Mỗi framework đều có những bộ đóng gói dạng này. Có điều cái này còn phải gõ lệnh, vậy thì còn chậm hơn là next next một bộ setup Todolist. Điểm khác của CMS trên là nó không phụ thuộc vào database, có thể dùng để quản lý database nào cũng được.

alone_hero
23-12-2010, 11:38
Mình nghĩ CMS là gì thì phải xem lại, có lẽ phải xem một số khái niệm về CMS xem thực sự cái phần Back-End đã đủ được gọi là CMS hay không nhỉ.
http://en.wikipedia.org/wiki/Web_content_management_system

whitepenguin
27-12-2010, 20:19
Cái mà cậu nói 2 phút đó đâu phải là CMS đâu, cậu thiếu concept nghiệm trọng rồi hahahaha

Phata
20-04-2011, 16:09
yeah yeah, hoan hô bác Bill Gates, .Net muôn năm, wa1 pro...

ltnhuan
22-04-2011, 16:21
hoan đường!!!!!! học kiểu này thì CNTT VN đâu có thiếu hụt nhân lực!

kaka163
28-04-2011, 15:02
hoan đường!!!!!! học kiểu này thì CNTT VN đâu có thiếu hụt nhân lực!

phải nói học kiểu này ...VN mới thiếu nhân lực :D vì bi bô CMS ... mà không hình dung CMS là cái chi chi :D

ltnhuan
29-04-2011, 09:09
CMS = Content Management System. Là hệ thống quản trị nội dung dùng để tạo ra, thay đổi, lưu trữ, xóa, các thông tin , tài nguyên dựa trên một hệ thống lưu trữ được tổ chức CSDL tốt.Ngoài ra nó còn bao gồm các công cụ giúp cho việc tìm kiếm, quản lý phiên bản và phát hành thông tin, định dạng thông tin một cách nhanh chóng và dễ dàng.
Joomla Drupal WordPress................