By João Peterson on 26 Mar 2024 | 22:00 .
Categories | Linux | Jekyll | The web
Tempo de leitura: #
Visualizações: #
Sumário
Introdução
Um dos elementos que faltava em meu blog era a falta de opções de interação dos leitores com os post por meio de comentários. Historicamente via bastante blogs e outros sites usarem comentários embarcados fornecidos pelo Facebook por exemplo ou um terceiro especializado, mas e se eu te disser que podemos fazer isso diretamente usando apenas o Github?
Giscus
O github possui um mecanismo de forum/discussões que permite com que pessoas discutam sobre um projeto em um repositório, utilizando Giscus podemos utilizar essa função para embarcar comentários diretamente em nossa páginas.
Giscus é um serviço que consiste em um app/bot para seu Github e repositório desejado, um serviço hosteado na Vercel, e um elemento iframe
embarcado em sua página.
Para implementar é muito fácil:
- Crie ou use um repositório público que ira abrigar as discussões
- Nas configurações do repositório vá para
General>Features
e habiliteDiscussions
- Adicione o Github app Giscus em sua conta e se quiser, apenas no repositório especifico
- Navegue até a página do Giscus e utilize o guia de configuração para criar seu elemento embarcado, será algo como:
<script src="https://giscus.app/client.js" data-repo="[ENTER REPO HERE]" data-repo-id="[ENTER REPO ID HERE]" data-category="[ENTER CATEGORY NAME HERE]" data-category-id="[ENTER CATEGORY ID HERE]" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="preferred_color_scheme" data-lang="en" crossorigin="anonymous" async> </script>
- Recomendo escolher o
Page Mapping
para usar<title>
como fonte de mapeamento, pois meu blog é feito em Jekyll e os mapas depathName
eUrl
são bagunçados e não quis testar para ver se dava problema, só utilizei a tag título mesmo. - Recomendo também criar uma categoria nas discussões do seu repositório especialmente para o Giscus.
- Insira o elemento em seu html para os posts, no meu caso usei um Jekyll include no meu template de post:
includes/giscus.html
:
<script src="https://giscus.app/client.js"
data-repo="[ENTER REPO HERE]"
data-repo-id="[ENTER REPO ID HERE]"
data-category="[ENTER CATEGORY NAME HERE]"
data-category-id="[ENTER CATEGORY ID HERE]"
data-mapping="pathname"
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="bottom"
data-theme="preferred_color_scheme"
data-lang="en"
crossorigin="anonymous"
async>
</script>
templates/post.html
:
...
<div class="content" id="postContent">
{{content}}
</div>
{% include giscus.html %}
</div>
É isso pessoal, até a próxima!