Xem Nội Dung Ngay

Tạo blog đa kênh nội dung với Ghost Collection + ContentHub

Tham khảo cách ứng dụng tạo đa kênh nội dung cho blog với Ghost routes.

Cường Trần
Cường Trần
6 phút đọc
Tạo blog đa kênh nội dung với Ghost Collection + ContentHub

Ưu điểm tuyệt vời của Ghost là có thể phân nhóm các nội dung của blog thành nhiều kênh khác nhau cực kỳ tiện lợi bằng Collection và ContentHub (custom route).

Hãy tưởng tượng blog bạn sẽ có các loại bài viết khác nhau như bài về

  1. Tin tức
  2. Blog
  3. Podcast
  4. Review
  5. Deal khuyến mãi

Bạn cần đến 5 trang archived page cho 5 kênh nội dung riêng biệt để người xem dễ theo dõi. Nhờ có Collection và ContentHub (routes.yaml file), bạn có thể tạo 5 kênh nội dung dễ dàng và vẫn đảm bảo được SEO luôn chuẩn.

Dynamics Routes là gì? Kiến thức cơ bản về Routes Ghost
Một trong những khó khăn đầu tiên của hầu hết người dùng Ghost đó là Routes. Hãy cùng tìm hiểu Routes là gì nhé!

Hãy cùng tham khảo các trường hợp cụ thể bên dưới, từ đó bạn có thể tự tạo được các kênh nội dung đúng ý đồ của mình.

Tạo 5 kênh nội dung khác nhau với Collection

  1. Tin tức
  2. Blog
  3. Podcast
  4. Review
  5. Deal khuyến mãi

Bạn chỉ cần tạo 5 collection khác nhau đơn giản trong Route

routes:

collections:
  /:
    permalink: /{slug}/
    template: index
    filter: tag:-[tin-tuc,podcast,review,deal]

  /tin-tuc/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[tin-tuc]
    data: tag.tin-tuc

  /podcast/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[podcast]
    data: tag.podcast

  /review/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[review]
    data: tag.review

  /deal/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[deal]
    data: tag.deal
      
taxonomies:
  tag:  /chuyen-muc/{slug}/
  author: /tac-gia/{slug}/

Bạn nên chọn ra một kênh chính để trang chủ hiển thị. Như ví dụ trên, tôi sẽ dùng kênh blog là trang chủ.

4 Tags (Loại trừ 4 tag sẽ là Blog thành 5)
4 Tags (Loại trừ 4 tag sẽ là Blog thành 5)

Tại sao chỉ tạo 4 Tag? Vì tinh giản cấu trúc site, tốt cho SEO, không cần thiết để tạo thêm tag blog.

Khi đó, bạn sẽ có 5 archived page như sau

  1. https://domain.com/ --> Bài viết blog của bạn
  2. https://domain.com/tin-tuc/ --> Bài tin tức ngắn
  3. https://domain.com/podcast/ --> Bài viết cho podcast
  4. https://domain.com/review/ --> Bài viết reviews
  5. https://domain.com/deal/ --> Bài viết về deal khuyến mãi

Mỗi bài viết con chứa trong kênh sẽ URL như sau: https://domain.com/slug-cua-bai-viet. Tương tự với các kênh còn lại.

Tất cả các kênh được tạo như trên đều có RSS riêng biệt.

Chú ý, Filter của từng kênh là tag bài viết. Khi bạn muốn bài viết nằm ở kênh nào thì chỉ đơn giản là thêm tag tương ứng với kênh đó vào bài viết mà thôi.

filter: tag:x+tag:y # must have both "x" and "y" tags (+ = AND)
filter: tag:x,tag:y # can have either "x" or "y" tags (, = OR)
filter: tag:-x+tag:y # must have tag "y" but not tag "x" (- = NOT)
filter: tag:[x,y,z] # must have either "x", "y", or "z" tags ([] = IN)
filter: tag:-[x,y,z] # must not have any one of "x", "y", or "z" tags (-[] = NOT IN)
filter: author:steve+tag:x # must be written by "steve" and have tag "x"
Tham khảo quy tắc Filter khi dùng Routes

Tạo 5 kênh nội dung bằng ContentHub

Để so sánh dễ hơn, tôi sẽ dùng ContentHub tạo ra 5 kênh nội dung y hệt dùng Collection như trên. Bạn sẽ thấy sự khác biệt.

routes:

  /tin-tuc/:
    controller: channel
    template: index
    filter: primary_tag:[tin-tuc]
    data: tag.tin-tuc

  /podcast/:
    controller: channel
    template: index
    filter: primary_tag:[podcast]
    data: tag.podcast

  /review/:
    controller: channel
    template: index
    filter: primary_tag:[review]
    data: tag.review

  /deal/:
    controller: channel
    template: index
    filter: primary_tag:[deal]
    data: tag.deal

collections:
  /:
    permalink: /{slug}/
    template: index
    filter: tag:-[tin-tuc,podcast,review,deal]

taxonomies:
  tag:  /chuyen-muc/{slug}/
  author: /tac-gia/{slug}/

Code sẽ nằm ở trên phần routes: và 5 trang archived page đều sẽ giống y hệt.

Bạn sẽ xoá permalink đi vì không cần thiết.

Phối hợp cả Collection và ContentHub để tạo kênh nội dung thứ 6

Khi bạn đã tạo 5 kênh nội dung bằng Collection, nhưng bạn lại muốn một trang thứ 6 để nhóm toàn bộ nội dung thành một archived page thứ 6 là TOÀN BỘ BÀI VIẾT MỚI NHẤT.

Gộp tất cả bài viết của 5 kênh lại. Bạn sẽ làm như sau

routes:
  /writing/: ## Kênh thứ 6
    controller: channel
    template: index

collections:
  /:
    permalink: /{slug}/
    template: index
    filter: tag:-[tin-tuc,podcast,review,deal]

  /tin-tuc/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[tin-tuc]
    data: tag.tin-tuc

  /podcast/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[podcast]
    data: tag.podcast

  /review/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[review]
    data: tag.review

  /deal/:
    permalink: /{slug}/
    template: index
    filter: primary_tag:[deal]
    data: tag.deal
      
taxonomies:
  tag:  /chuyen-muc/{slug}/
  author: /tac-gia/{slug}/

Khi nào thì dùng Collection? Khi nào dùng ContentHub?

Collection và ContentHub khá tương tự nhau trong một số trường hợp. Cả 2 đều là tạo kênh nội dung cho site bạn, đều nằm trong phần tùy chỉnh Route.

Tuy nhiên, có một số điểm khác nhau như Collection có thể tạo ra các permalink cố định lâu dài. Trong khi đó, ContentHub có thể nhóm nhanh các nội dung đó mà không làm thay đổi Permalink của các bài viết đơn.

Khi bạn muốn xoá một trang archived page tạo bằng ContentHub sẽ không gây ảnh hưởng tới SEO.

## Collection
  /deal/:
    permalink: /deal/{slug}/ ## Permalink
    template: index
    filter: primary_tag:[deal]
    data: tag.deal

## ContentHub
  /deal/:
    controller: channel
    template: index
    filter: primary_tag:[deal]
    data: tag.deal

Nếu bạn cài đặt permalink như trên, khi bạn xoá trang archived page /deal/ tạo bởi Collection thì mọi bài viết sẽ bị thay đổi slug. Gây hại SEO nghiêm trọng.

Nếu dùng ContentHub thì không sao vì ContentHub không tạo được permalink.

Tóm lại, khi bạn muốn xây dựng và phát triển kênh nội dung lâu dài, bạn nên dùng Collection vì nó tạo được permalink riêng cho từng bài viết (lựa chọn). Khi bạn chỉ muốn nhóm nhanh một số bài viết thành một kênh tổng hợp thì nên dùng ContentHub.

Lời kết...

Ngoài việc phân loại cho bài viết, bạn còn có thể quy định template mẫu của theme ứng với từng loại bài viết. Bạn cần biết custom theme nếu muốn làm như vậy.

Tất cả các trang trong Route dù dùng Collection hay ContentHub đều nằm trong sitemap để Google dễ index. Quan trọng hơn là không bị "duplicate" nội dung.

Tuỳ vào nhu cầu của bạn mà quyết định dùng ContentHub hay Collection. Muốn blog đơn giản cấu trúc thì dùng ContentHub. Muốn blog phân chia kênh rõ ràng chuẩn bị cho phát triển kênh thì dùng Collection sẽ thích hợp hơn.

Case Studies

Bạn có thể quan tâm

Tôi đã dùng 7 lớp bảo vệ để chống spambot cho ghostFam

Ngăn ngừa triệt để spambot cho site Ghost của bạn.

Tôi đã dùng 7 lớp bảo vệ để chống spambot cho ghostFam

Case Study: Dùng Ghost như phần mềm email marketing giá $4.2/tháng

Cách dùng Ghost để gửi email marketing độc lập giá rẻ.

Case Study: Dùng Ghost như phần mềm email marketing giá $4.2/tháng
Cường Trần

Cường Trần

Cường chuyên viết về giải pháp liên quan đến WordPress và Ghost, là một How-to blogger thực chiến.