Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(analytics)!: add post pageviews for GoatCounter #1543

Merged
merged 2 commits into from
Feb 25, 2024

Conversation

kungfux
Copy link
Collaborator

@kungfux kungfux commented Feb 16, 2024

Type of change

  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Description

I've integrated and use GoatCounter for a while in my own codebase and since GoatCounter have been integrated into Chirpy, I'd like to incorporate changes for the post views counter. Other people also want this feature according to ref #1532.

Implementation

First, we need to connect GoatCounter in the config, and then enable views counter by specifying the source provider for it like it is done for comments. This is how it looks like in the UI currently.

image

Ideas

  • Since it takes time to retrieve the data from counter provider, I'm not happy to show "0 views" initially and so I may suggest to hide views counter initially and then display it once actual views number is available by applying visibility: hidden and visibility: visible styles to a parent span element. Here is an example.

Additional context

Since I was surprised to find localized string pageview_measure, I suspect you may have other plans for the same feature in mind, or have passed similar way in the past that you can share. Anyways, let me know what do you think once you have a time. Thanks.

Copy link
Owner

@cotes2020 cotes2020 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you so much! While I didn't actually use a GoatCounter ID to test the code, I'm sure it's available. Also, I have a couple ideas to share with you:

  1. For the UI design, I think the location of the view count would be more appropriate to the right of the reading time.

    pv
  2. The reference to the JS of GoatCounter pageviews should be placed in _includes/js-selector.html, which will bring better web page rendering performance.

  3. The number to initialize the view count could be set to 1 instead of 0.

  4. i18n's pageview_measure was once used for Google Analaytics pageviews reporting, this feature was removed in refactor(core): remove GA page views report #1071 as UA was deprecated. i18n keeps it for future pageviews services (like goatcounter now).

@cotes2020 cotes2020 linked an issue Feb 23, 2024 that may be closed by this pull request
1 task
@cotes2020
Copy link
Owner

cotes2020 commented Feb 23, 2024

  1. For the UI design, I think the location of the view count would be more appropriate to the right of the reading time.

    pv

I'd like to change the above comment: placing views to the left of the reading time is the way to go, otherwise it will cause jitters in the nearby text (reading time) due to JS modifying the number.

Updated:

pv-edited

@kungfux
Copy link
Collaborator Author

kungfux commented Feb 24, 2024

Thank you for taking the time to review the suggested changes and for sharing great ideas.

I've made suggested changes for UI and JS injection location. Please take a quick look. Thank you very much.

Copy link
Owner

@cotes2020 cotes2020 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we now have multiple web analytics options, wouldn't it be a good idea to improve the configured options to make it more compact similar to the comment system.

_config.yml:

# Web Analytics Settings
analytics:
  provider: # [google | goatcounter]
  google:
    id: # fill in your Google Analytics ID
  goatcounter:
    id: # fill in your GoatCounter ID
    pv:
      enabled: # boolean, the option for the post views counter, keep empty means disable

_includes/ folder:

_includes/
└── analytics
    ├── goatcounter.html
    └── google.html

But doing so would require refactoring the existing google analytics code, what do you think?

@kungfux
Copy link
Collaborator Author

kungfux commented Feb 24, 2024

Sure, I like the idea of merging configuration settings to have everything in a single configuration section.

The only thing I would suggest changing is to allow using both analytics platforms at the same time.

However, I wonder how breaking configuration changes will be released? Will it be part of a major release or will changes need to be back-compatible? Maybe not so big deal if you can mention that configuration should be adjusted accordingly in release notes.

@cotes2020
Copy link
Owner

I favor the idea of using multiple analytics platforms at the same time, in which case the settings would have to be designed as:

## _config.yml

# Web Analytics Settings
analytics:
  google:
    id: # fill in your Google Analytics ID
  goatcounter:
    id: # fill in your GoatCounter ID

Since pageviews can only display data from a single platform, the config options would be:

## _config.yml

# Pageviews settings
pageviews:
  provider: # [google | goatcounter]

Generally speaking, breaking changes should be released in the MAJOR version, and strictly enforcing this guideline would result in too many major releases. So for this feature, I prefer to release it on the MINOR version, and remind users of the changes in the release note.

@kungfux kungfux force-pushed the feature/post-views-counter branch 2 times, most recently from 2c46a20 to 0baa0bb Compare February 24, 2024 17:01
@kungfux
Copy link
Collaborator Author

kungfux commented Feb 24, 2024

Sounds good. Thanks.

Configuration changes have been implemented and seems to work as expected. Please have a look.

@cotes2020
Copy link
Owner

I've done a lot of refactoring, so if there are any thoughts on this, please let me know.

@kungfux
Copy link
Collaborator Author

kungfux commented Feb 24, 2024

The only thought is: It's nicely done 👍

I have enjoyed the solution with the spinner 🤩 and learnt something new. Thank you.

@cotes2020 cotes2020 merged commit b641b3f into cotes2020:master Feb 25, 2024
6 checks passed
@kungfux kungfux deleted the feature/post-views-counter branch February 25, 2024 19:19
@cotes2020 cotes2020 changed the title feat: add post views counter for GoatCounter feat(analytics)!: add post pageviews for GoatCounter Mar 1, 2024
@kungfux kungfux mentioned this pull request Mar 1, 2024
1 task
@cotes2020 cotes2020 added this to the v7.0.0 milestone Mar 9, 2024
github-actions bot pushed a commit that referenced this pull request May 11, 2024
## [7.0.0](v6.5.5...v7.0.0) (2024-05-11)

### ⚠ BREAKING CHANGES

* optimize the resource hints (#1717)
* rename media-url file and related parameters (#1651)
* rename comment setting parameter (#1563)
* **analytics:** add post pageviews for GoatCounter (#1543)

### Features

* add cloudflare web analytics ([#1723](#1723)) ([c17fba4](c17fba4))
* add support for embed video files ([#1558](#1558)) ([9592146](9592146))
* add support for giscus strict title matching ([#1614](#1614)) ([700fd5b](700fd5b))
* **analytics:** add post pageviews for GoatCounter ([#1543](#1543)) ([b641b3f](b641b3f))
* **analytics:** add Umami and Matomo tracking codes ([#1658](#1658)) ([61bdca2](61bdca2))
* change site verification settings ([#1561](#1561)) ([e436387](e436387))
* **deps:** move `MathJax` configuration to a separate file ([#1670](#1670)) ([44f552c](44f552c))
* display theme version in footer ([#1611](#1611)) ([8349314](8349314))
* **i18n:** allow `page.lang` to override `site.lang` ([#1586](#1586)) ([547b95c](547b95c))
* make post description customizable ([#1602](#1602)) ([f865336](f865336))
* **media:** support audio and video tag with multi sources ([#1618](#1618)) ([23be416](23be416))

### Bug Fixes

* make TOC title and entries visible at the same time ([#1711](#1711)) ([e0950fc](e0950fc))
* mode toggle not outlined when receiving keyboard focus ([#1690](#1690)) ([cd37f63](cd37f63))
* prevent footnote back arrow from becoming an emoji ([#1716](#1716)) ([8608147](8608147))
* **pwa:** skip range requests in service worker ([#1672](#1672)) ([76d58fe](76d58fe))
* search result prompt is empty ([#1583](#1583)) ([8a2afae](8a2afae))
* use `https` for Weibo sharing URL ([#1612](#1612)) ([8e5fbb7](8e5fbb7))

### Improvements

* improve <hr> visibility in dark mode ([#1565](#1565)) ([4ddd5c4](4ddd5c4))
* lean bootstrap javascript ([#1734](#1734)) ([ddb48ed](ddb48ed))
* rename comment setting parameter ([#1563](#1563)) ([f8390d4](f8390d4))
* replace jQuery with Vanilla JS ([#1681](#1681)) ([fe7afa3](fe7afa3))
* simplify mode toggle script ([#1692](#1692)) ([d4a6d64](d4a6d64))
* tree shaking Bootstrap CSS ([#1736](#1736)) ([363a3d9](363a3d9))

### Changes

* optimize the resource hints ([#1717](#1717)) ([dcb0add](dcb0add))
* rename media-url file and related parameters ([#1651](#1651)) ([9f8aeaa](9f8aeaa))
Copy link

🎉 This PR is included in version 7.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

kimbob13 pushed a commit to kimbob13/kimbob13.github.io that referenced this pull request May 25, 2024
---------

Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
kimbob13 pushed a commit to kimbob13/kimbob13.github.io that referenced this pull request May 25, 2024
## [7.0.0](cotes2020/jekyll-theme-chirpy@v6.5.5...v7.0.0) (2024-05-11)

### ⚠ BREAKING CHANGES

* optimize the resource hints (cotes2020#1717)
* rename media-url file and related parameters (cotes2020#1651)
* rename comment setting parameter (cotes2020#1563)
* **analytics:** add post pageviews for GoatCounter (cotes2020#1543)

### Features

* add cloudflare web analytics ([cotes2020#1723](cotes2020#1723)) ([c17fba4](cotes2020@c17fba4))
* add support for embed video files ([cotes2020#1558](cotes2020#1558)) ([9592146](cotes2020@9592146))
* add support for giscus strict title matching ([cotes2020#1614](cotes2020#1614)) ([700fd5b](cotes2020@700fd5b))
* **analytics:** add post pageviews for GoatCounter ([cotes2020#1543](cotes2020#1543)) ([b641b3f](cotes2020@b641b3f))
* **analytics:** add Umami and Matomo tracking codes ([cotes2020#1658](cotes2020#1658)) ([61bdca2](cotes2020@61bdca2))
* change site verification settings ([cotes2020#1561](cotes2020#1561)) ([e436387](cotes2020@e436387))
* **deps:** move `MathJax` configuration to a separate file ([cotes2020#1670](cotes2020#1670)) ([44f552c](cotes2020@44f552c))
* display theme version in footer ([cotes2020#1611](cotes2020#1611)) ([8349314](cotes2020@8349314))
* **i18n:** allow `page.lang` to override `site.lang` ([cotes2020#1586](cotes2020#1586)) ([547b95c](cotes2020@547b95c))
* make post description customizable ([cotes2020#1602](cotes2020#1602)) ([f865336](cotes2020@f865336))
* **media:** support audio and video tag with multi sources ([cotes2020#1618](cotes2020#1618)) ([23be416](cotes2020@23be416))

### Bug Fixes

* make TOC title and entries visible at the same time ([cotes2020#1711](cotes2020#1711)) ([e0950fc](cotes2020@e0950fc))
* mode toggle not outlined when receiving keyboard focus ([cotes2020#1690](cotes2020#1690)) ([cd37f63](cotes2020@cd37f63))
* prevent footnote back arrow from becoming an emoji ([cotes2020#1716](cotes2020#1716)) ([8608147](cotes2020@8608147))
* **pwa:** skip range requests in service worker ([cotes2020#1672](cotes2020#1672)) ([76d58fe](cotes2020@76d58fe))
* search result prompt is empty ([cotes2020#1583](cotes2020#1583)) ([8a2afae](cotes2020@8a2afae))
* use `https` for Weibo sharing URL ([cotes2020#1612](cotes2020#1612)) ([8e5fbb7](cotes2020@8e5fbb7))

### Improvements

* improve <hr> visibility in dark mode ([cotes2020#1565](cotes2020#1565)) ([4ddd5c4](cotes2020@4ddd5c4))
* lean bootstrap javascript ([cotes2020#1734](cotes2020#1734)) ([ddb48ed](cotes2020@ddb48ed))
* rename comment setting parameter ([cotes2020#1563](cotes2020#1563)) ([f8390d4](cotes2020@f8390d4))
* replace jQuery with Vanilla JS ([cotes2020#1681](cotes2020#1681)) ([fe7afa3](cotes2020@fe7afa3))
* simplify mode toggle script ([cotes2020#1692](cotes2020#1692)) ([d4a6d64](cotes2020@d4a6d64))
* tree shaking Bootstrap CSS ([cotes2020#1736](cotes2020#1736)) ([363a3d9](cotes2020@363a3d9))

### Changes

* optimize the resource hints ([cotes2020#1717](cotes2020#1717)) ([dcb0add](cotes2020@dcb0add))
* rename media-url file and related parameters ([cotes2020#1651](cotes2020#1651)) ([9f8aeaa](cotes2020@9f8aeaa))
gudtldn pushed a commit to gudtldn/gudtldn.github.io that referenced this pull request Jul 26, 2024
---------

Co-authored-by: Cotes Chung <11371340+cotes2020@users.noreply.github.com>
gudtldn pushed a commit to gudtldn/gudtldn.github.io that referenced this pull request Jul 26, 2024
## [7.0.0](cotes2020/jekyll-theme-chirpy@v6.5.5...v7.0.0) (2024-05-11)

### ⚠ BREAKING CHANGES

* optimize the resource hints (cotes2020#1717)
* rename media-url file and related parameters (cotes2020#1651)
* rename comment setting parameter (cotes2020#1563)
* **analytics:** add post pageviews for GoatCounter (cotes2020#1543)

### Features

* add cloudflare web analytics ([cotes2020#1723](cotes2020#1723)) ([c17fba4](cotes2020@c17fba4))
* add support for embed video files ([cotes2020#1558](cotes2020#1558)) ([9592146](cotes2020@9592146))
* add support for giscus strict title matching ([cotes2020#1614](cotes2020#1614)) ([700fd5b](cotes2020@700fd5b))
* **analytics:** add post pageviews for GoatCounter ([cotes2020#1543](cotes2020#1543)) ([b641b3f](cotes2020@b641b3f))
* **analytics:** add Umami and Matomo tracking codes ([cotes2020#1658](cotes2020#1658)) ([61bdca2](cotes2020@61bdca2))
* change site verification settings ([cotes2020#1561](cotes2020#1561)) ([e436387](cotes2020@e436387))
* **deps:** move `MathJax` configuration to a separate file ([cotes2020#1670](cotes2020#1670)) ([44f552c](cotes2020@44f552c))
* display theme version in footer ([cotes2020#1611](cotes2020#1611)) ([8349314](cotes2020@8349314))
* **i18n:** allow `page.lang` to override `site.lang` ([cotes2020#1586](cotes2020#1586)) ([547b95c](cotes2020@547b95c))
* make post description customizable ([cotes2020#1602](cotes2020#1602)) ([f865336](cotes2020@f865336))
* **media:** support audio and video tag with multi sources ([cotes2020#1618](cotes2020#1618)) ([23be416](cotes2020@23be416))

### Bug Fixes

* make TOC title and entries visible at the same time ([cotes2020#1711](cotes2020#1711)) ([e0950fc](cotes2020@e0950fc))
* mode toggle not outlined when receiving keyboard focus ([cotes2020#1690](cotes2020#1690)) ([cd37f63](cotes2020@cd37f63))
* prevent footnote back arrow from becoming an emoji ([cotes2020#1716](cotes2020#1716)) ([8608147](cotes2020@8608147))
* **pwa:** skip range requests in service worker ([cotes2020#1672](cotes2020#1672)) ([76d58fe](cotes2020@76d58fe))
* search result prompt is empty ([cotes2020#1583](cotes2020#1583)) ([8a2afae](cotes2020@8a2afae))
* use `https` for Weibo sharing URL ([cotes2020#1612](cotes2020#1612)) ([8e5fbb7](cotes2020@8e5fbb7))

### Improvements

* improve <hr> visibility in dark mode ([cotes2020#1565](cotes2020#1565)) ([4ddd5c4](cotes2020@4ddd5c4))
* lean bootstrap javascript ([cotes2020#1734](cotes2020#1734)) ([ddb48ed](cotes2020@ddb48ed))
* rename comment setting parameter ([cotes2020#1563](cotes2020#1563)) ([f8390d4](cotes2020@f8390d4))
* replace jQuery with Vanilla JS ([cotes2020#1681](cotes2020#1681)) ([fe7afa3](cotes2020@fe7afa3))
* simplify mode toggle script ([cotes2020#1692](cotes2020#1692)) ([d4a6d64](cotes2020@d4a6d64))
* tree shaking Bootstrap CSS ([cotes2020#1736](cotes2020#1736)) ([363a3d9](cotes2020@363a3d9))

### Changes

* optimize the resource hints ([cotes2020#1717](cotes2020#1717)) ([dcb0add](cotes2020@dcb0add))
* rename media-url file and related parameters ([cotes2020#1651](cotes2020#1651)) ([9f8aeaa](cotes2020@9f8aeaa))
ryo-wijaya pushed a commit to ryo-wijaya/blog that referenced this pull request Sep 9, 2024
## [7.0.0](cotes2020/jekyll-theme-chirpy@v6.5.5...v7.0.0) (2024-05-11)

### ⚠ BREAKING CHANGES

* optimize the resource hints (#1717)
* rename media-url file and related parameters (#1651)
* rename comment setting parameter (#1563)
* **analytics:** add post pageviews for GoatCounter (#1543)

### Features

* add cloudflare web analytics ([#1723](cotes2020/jekyll-theme-chirpy#1723)) ([ce53717](cotes2020/jekyll-theme-chirpy@ce53717))
* add support for embed video files ([#1558](cotes2020/jekyll-theme-chirpy#1558)) ([ec6fbc8](cotes2020/jekyll-theme-chirpy@ec6fbc8))
* add support for giscus strict title matching ([#1614](cotes2020/jekyll-theme-chirpy#1614)) ([49fc3a7](cotes2020/jekyll-theme-chirpy@49fc3a7))
* **analytics:** add post pageviews for GoatCounter ([#1543](cotes2020/jekyll-theme-chirpy#1543)) ([a19a00d](cotes2020/jekyll-theme-chirpy@a19a00d))
* **analytics:** add Umami and Matomo tracking codes ([#1658](cotes2020/jekyll-theme-chirpy#1658)) ([795f477](cotes2020/jekyll-theme-chirpy@795f477))
* change site verification settings ([#1561](cotes2020/jekyll-theme-chirpy#1561)) ([2240821](cotes2020/jekyll-theme-chirpy@2240821))
* **deps:** move `MathJax` configuration to a separate file ([#1670](cotes2020/jekyll-theme-chirpy#1670)) ([f13cfb3](cotes2020/jekyll-theme-chirpy@f13cfb3))
* display theme version in footer ([#1611](cotes2020/jekyll-theme-chirpy#1611)) ([9b30364](cotes2020/jekyll-theme-chirpy@9b30364))
* **i18n:** allow `page.lang` to override `site.lang` ([#1586](cotes2020/jekyll-theme-chirpy#1586)) ([615af0a](cotes2020/jekyll-theme-chirpy@615af0a))
* make post description customizable ([#1602](cotes2020/jekyll-theme-chirpy#1602)) ([8fc6757](cotes2020/jekyll-theme-chirpy@8fc6757))
* **media:** support audio and video tag with multi sources ([#1618](cotes2020/jekyll-theme-chirpy#1618)) ([30a6617](cotes2020/jekyll-theme-chirpy@30a6617))

### Bug Fixes

* make TOC title and entries visible at the same time ([#1711](cotes2020/jekyll-theme-chirpy#1711)) ([d6461d0](cotes2020/jekyll-theme-chirpy@d6461d0))
* mode toggle not outlined when receiving keyboard focus ([#1690](cotes2020/jekyll-theme-chirpy#1690)) ([b480ce2](cotes2020/jekyll-theme-chirpy@b480ce2))
* prevent footnote back arrow from becoming an emoji ([#1716](cotes2020/jekyll-theme-chirpy#1716)) ([68b9caa](cotes2020/jekyll-theme-chirpy@68b9caa))
* **pwa:** skip range requests in service worker ([#1672](cotes2020/jekyll-theme-chirpy#1672)) ([94a1401](cotes2020/jekyll-theme-chirpy@94a1401))
* search result prompt is empty ([#1583](cotes2020/jekyll-theme-chirpy#1583)) ([24eaef4](cotes2020/jekyll-theme-chirpy@24eaef4))
* use `https` for Weibo sharing URL ([#1612](cotes2020/jekyll-theme-chirpy#1612)) ([8ed2bb7](cotes2020/jekyll-theme-chirpy@8ed2bb7))

### Improvements

* improve <hr> visibility in dark mode ([#1565](cotes2020/jekyll-theme-chirpy#1565)) ([ece9ae0](cotes2020/jekyll-theme-chirpy@ece9ae0))
* lean bootstrap javascript ([#1734](cotes2020/jekyll-theme-chirpy#1734)) ([05341c8](cotes2020/jekyll-theme-chirpy@05341c8))
* rename comment setting parameter ([#1563](cotes2020/jekyll-theme-chirpy#1563)) ([30b3972](cotes2020/jekyll-theme-chirpy@30b3972))
* replace jQuery with Vanilla JS ([#1681](cotes2020/jekyll-theme-chirpy#1681)) ([99efa1e](cotes2020/jekyll-theme-chirpy@99efa1e))
* simplify mode toggle script ([#1692](cotes2020/jekyll-theme-chirpy#1692)) ([90ce15f](cotes2020/jekyll-theme-chirpy@90ce15f))
* tree shaking Bootstrap CSS ([#1736](cotes2020/jekyll-theme-chirpy#1736)) ([3892198](cotes2020/jekyll-theme-chirpy@3892198))

### Changes

* optimize the resource hints ([#1717](cotes2020/jekyll-theme-chirpy#1717)) ([ac3eb35](cotes2020/jekyll-theme-chirpy@ac3eb35))
* rename media-url file and related parameters ([#1651](cotes2020/jekyll-theme-chirpy#1651)) ([787cbeb](cotes2020/jekyll-theme-chirpy@787cbeb))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

PageView counter at top of the posts using Goatcounter
2 participants