Tăng Lượt View và Hiển Thị Các Bài Viết Xu Hướng
Giới Thiệu
Trang chủ của Blog được thiết kế để hiển thị mục các bài viết xu hướng. Trong mục này, người đọc sẽ thấy 5 bài viết có lượt view cao nhất tại thời điểm hiện tại. Để lấy được lượt view cho mỗi bài viết, trước tiên, cần phải xây dựng chức năng tăng lượt view khi người dùng nhấn vào bài viết.
Tăng Lượt View của Bài Viết
Khi người dùng nhấn vào một bài viết, một yêu cầu sẽ được gửi đến hệ thống để lấy các thông tin chi tiết. Trong quá trình này, chúng ta sẽ tăng lượt view cho bài viết đó. Trong cơ sở dữ liệu, cụ thể là bảng ezyarticle_posts, không có cột nào để lưu trữ lượt view. Thay vào đó, lượt view sẽ được lưu trong bảng ezyarticle_post_meta.
Mỗi bài viết sẽ tạo ra một dòng dữ liệu có key và value tương ứng với postId trong bảng ezyarticle_post_meta, trong đó phần key được đặt là views. Điều này cho phép chúng ta dễ dàng theo dõi lượt view của từng bài viết mà không cần một phương thức riêng biệt.
Trong lớp WebPostService, chúng ta đã có sẵn phương thức để tăng lượt view. Phương thức này sẽ được sử dụng trong phương thức GET khi hệ thống lấy thông tin bài viết chi tiết. Trong lớp WebEssentialPostController, chúng ta sẽ ghi đè phương thức decoratePostDetailsView() và sử dụng phương thức increaseViewCountByPostId() của WebPostService để tăng lượt view mỗi khi bài viết được nhấn vào.
Hiển Thị Các Bài Viết Theo Lượt View
Chúng ta cần lấy ra top 5 bài viết theo lượt view. Để thực hiện điều này, câu truy vấn sẽ kết hợp hai bảng ezyarticle_posts và ezyarticle_post_meta, lấy ra bài viết với meta_key là views với điều kiện bài viết đã được phát hành và thuộc loại POST. Câu truy vấn sẽ được sắp xếp theo thứ tự giảm dần của lượt view (metaNumberValue).
Chúng ta sẽ viết một result để lưu trữ thông tin về các bài viết này. Đầu tiên, trong package result, chúng ta sẽ tạo lớp MostViewPostResult để lưu trữ thông tin truy vấn cho các bài viết có nhiều lượt view nhất. Sau đó, trong lớp PostService, thêm một hàm getMostViewPosts() để lấy ra các bài viết có lượt view cao nhất.
Khi đã có được dữ liệu từ repo, chúng ta cần chuyển đổi dữ liệu từ result sang model. Trong package converter, chúng ta sẽ tạo lớp ResultToModelConverter để thực hiện chuyển đổi này. Mỗi model sẽ được định nghĩa trong package model, nơi chúng ta sẽ viết MostViewPostModel.
Chuẩn Bị Dữ Liệu và Phản Hồi
Lớp MostViewPostModel sẽ chứa các thông tin như postId, title, featuredImageId và viewCount. Để xử lý postId và featuredImageId, chúng ta sẽ sử dụng lớp PostModelDecorator để trang trí các dữ liệu này. Tạo phương thức decorateMostViewPosts() trong decorator để lấy ra đầy đủ thông tin cần thiết trước khi gửi về cho phần giao diện.
Cuối cùng, trong controller.service.PostControllerService, thêm phương thức để lấy ra 5 bài viết có lượt view cao nhất và gọi decorator để trả về danh sách các MostViewPostResponse. Khi đã hoàn tất, gọi service để xử lý hiển thị các bài viết xu hướng trong HomeController và sử dụng Thymeleaf để lấy dữ liệu.
Kết Luận
Sau khi hoàn thành tất cả các bước trên, chúng ta đã có thể hiển thị 5 bài viết xu hướng theo thứ tự lượt view giảm dần. Bài viết đã hướng dẫn chi tiết quy trình tăng lượt view và cách hiển thị các bài viết hot nhất một cách hiệu quả, giúp người dùng dễ dàng tiếp cận thông tin.
source: viblo