1. Lan man một xíu
hiện nay có rất nhiều công cụ cho chép chúng ta tạo ra các trang nội dung một cách nhanh chóng có thể kể đến như: Docusaurus, Gatsby, Notion, … Và blog này của mình cũng được xây dựng bằng Notion.
- Lợi ích của các công cụ này là: giúp các bạn có thể nhanh chóng tạo ra cho mình 1 trang cá nhân, không cần biết quá nhiều về lập trình cũng như lưu trữ cơ sở dữ liệu, các công cụ sẳn có của nền tảng cung cấp gần như đầy đủ các nhu cầu cơ bản của bạn
- vậy nhược điểm là gì, vì do cấu trúc cơ sở dữ liệu do nên tảng cung cấp nên một số tính năng tùy chỉnh sẽ hạn chế, hoặc thậm chí là bất khả thi, điển hình như chức năng quản lý bình luận
2. Một số giải pháp
để thực hiện tính năng quản lý bình luận thì chúng ta có một số lựa chọn như: Facebook, Discus, GitHub Discussions, ở bài viết này mình sẽ hướng dẫn các bạn quản lý comment với GitHub Discussions. Lý do ư? Vì blog của mình hướng đến dev là chính, mà dev thì ai cũng có tài khoản github cả nên chọn github là chuẩn bài rồi
3. Cách tích hợp GitHub Discussions vào blog của bạn
Để tích hợp GitHub Discussions vào blog của bạn, chúng ta sẽ sử dụng Giscus.
Giscus là hệ thống bình luận do GitHub Discussions cung cấp. Nó cho phép bạn tích hợp các cuộc thảo luận từ kho lưu trữ của mình vào blog.
Người đọc có thể để lại bình luận trên blog của bạn, bình luận sẽ xuất hiện trên cả blog và trang thảo luận trong kho lưu trữ của bạn.
Lợi ích của việc sử dụng Discussions làm hệ thống trò chuyện trên blog của bạn
- Hoàn toàn miễn phí
- Không có quảng cáo hoặc theo dõi
- Có rất nhiều chủ đề (như dark hoặc light mode)
- Nó khá tùy biến
3.1 Điều kiện tiên quết
- Tất nhiên rồi trước tiên bạn phải có 1 trang blog đã, và có thể chỉnh sửa mã nguồncho nó
- Tài khoản Github, bạn cần có 1 tài khoản Github để tạo mới 1 repository
- Repository phải đặt ở chế độ công khai
3.2 Kích hoạt Discussions
Các bạn vào repository → setting → scroll đến phần Feature tích vào Discussions như hình bên dưới

3.3 Cài đặt giscus
Tiếp theo, cài đặt ứng dụng giscus vào kho lưu trữ của bạn
Truy cập https://github.com/apps/giscus , chọn Configure làm theo lời nhắc và chỉ cấp quyền truy cập vào kho lưu trữ đã chọn như hình bên dưới

chọn 1 repository đã tạo trước đó

3.4 Cấu hình cho Giscus
Bây giờ là phần quan trọng: chúng ta cần cấu hình tiện ích giscus.
Đầu tiên, hãy vào trang chủ giscus và cuộn đến phần Cấu hình .
Chọn ngôn ngữ tiện ích của bạn. Đây là ngôn ngữ bạn muốn hiển thị của mình.

Cung cấp đường dẫn repository như hình bên dưới, lưu ý nếu hiển thị tích xanh nghĩa là đã liên kết vơi repository thành công, ngược lại nếu là dấu x có nghĩa là bạn chưa cài đặt đúng các bước trước đó, kiểm tra repository đã tồn tại và public chưa, kiểm tra đã bật Discussions trong phần cài đặt của repository chưa, kiểm tra đã liên kết repository trong phần Configure chưa.

Chọn một số cài đặt như hình dưới

Bạn cũng có thể tùy chọn thêm một số tùy chỉnh ở phía dưới sao cho phù hợp với bản thân
sau khi cấu hình xong thì bạn sẽ nhận được một đoạn mã tương tự như sau, lưu ý: data-repo-id và data-category-id sẽ tùy thuộc vào mỗi tài khoản nên sẽ khác nhau. Bạn thêm thẻ <script> sau vào website của bạn nơi bạn muốn bình luận xuất hiện (đối với project sử dụng html, css, js thuần).
<script src="https://giscus.app/client.js" data-repo="longnguyendev/giscus" data-repo-id="R_kgKOAz8a8A" data-category="General" data-category-id="DIC_kwKOAz8a8M4Cmod9" data-mapping="url" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="preferred_color_scheme" data-lang="vi" crossorigin="anonymous" async> </script>
3.5 Sử dụng giscus với React, Vue hoặc Svelte
Đối với các project sử dụng React, Vue, Angular, Nextjs, ... bạn có thể tải thư viện Giscus về và import vào project của bạn.
npm i @giscus/react # for React/Preact npm i @giscus/vue # for Vue npm i @giscus/svelte # for Svelte npm i @giscus/solid # for Solid # Change npm with the package manager you use
import Giscus from '@giscus/react'; export default function MyApp() { return ( <Giscus id="comments" repo="giscus/giscus-component" repoId="MDEwOlJlcG9zaXRvcnkzOTEzMTMwMjA=" category="General" categoryId="DIC_kwDOF1L2fM4B-hVS" mapping="specific" term="Welcome to @giscus/react component!" reactionsEnabled="1" emitMetadata="0" inputPosition="top" theme="light" lang="en" loading="lazy" /> ); }
Bạn có thể tham khảo tài liệu tại đây
Để tùy chỉnh giao diện theme mode với theme mode hiện tại ta có thể làm theo cách sau, ví dụ với MUI
'use client'; import Giscus from '@giscus/react'; export default function MyApp() { import { useTheme } from '@mui/material'; return ( <Giscus id="comments" repo="giscus/giscus-component" repoId="MDEwOlJlcG9zaXRvcnkzOTEzMTMwMjA=" category="General" categoryId="DIC_kwDOF1L2fM4B-hVS" mapping="specific" term="Welcome to @giscus/react component!" reactionsEnabled="1" emitMetadata="0" inputPosition="top" theme={theme.palette.mode === 'light' ? 'light' : 'dark'} lang="en" loading="lazy" /> ); }
4. Kết quả
Sau khi bạn đã cấu hình xong, bạn sẽ thấy kết quả như sau:


5. Tổng kết
Trong bài viết này, chúng ta đã tìm hiểu về Giscus là gì, cách hoạt động của Giscus, cách tích hợp Giscus vào blog của bạn. Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ bài viết này để nhiều người biết đến Giscus hơn nhé. Hoặc nếu có chỗ nào cần giải đáp thì hãy bình luận ở phía dưới cho mình biết nha!
