Коментарі для статичного HUGO сайту
Зміст
Які є рішення?⌗
Якщо ми говоримо про статичні сайти, то у нас є лише одне сучасне рішення додати трохи JavaScript на сторінку, а ось реалізацій - дві.
Перша - взяти і написати все власноруч, наприклад використавши Alpine.js або ж і тут не покладатись на когось і озброєвшись чистим JS написати все з нуля. Це звісно добрий підхід, якщо ви хочете щось спробувати спроєктувати або попрацювати з новими для себе інструментами, але і значно складніший. Цей варіант ми розглянемо окремо, якщо буде необхідно.
Друга - обрати сторонню систему коментарів, яких на ринку є безліч. Починаючи від кострубатих але повністью безкоштовних і закінчуючи виключно платними рішеннями під ключ. Пропоную на цьому варіанті і зосередитись.
Disqus - король коментарів⌗
Я думаю, що багато хто з вас бачив Disqus - систему коментарів, яка використовується багатьма сайтами як по всьому світу так і в Україні, наприклад mezha.media.
З основних переваг можна виділити:
- умовно безкоштовну модель користування
- гнучку систему кастомізації і модерації навіть в безкоштовній версії
- адаптивність кольорової схеми блоку з коментарями
До того всього разом з HUGO інтегрувати Disqus можливо рівно за два рядки коду.
Після того як ви зареєструєтесь треба взяти так званий shortname
в панелі керування Disqus. Сам shortname ніщо інакше як унікальний ID, який ви задаєте при реєстрації сайту в системі.
Далі з цим shortname
йдемо в конфігураційний файл HUGO - config.toml
і додаємо наступний рядок
disqusShortname = 'yourDisqusShortname'
Це ми зробили, бо з коробки HUGO вміє інтегрувати блок коментарів за допомогою наступного вбудованого шаблону
{{ template "_internal/disqus.html" . }}
Цей шалон треба вставити на сторінку допису під основним контентом і у нас готова система коментарів з Disqus i HUGO.
Лічильник коментарів⌗
Якщо ви бажаєте додатково показувати кількість коментарів в шапці посту, то це також можливо за допомогою декількох рядків коду.
По перше треба додати скріпт від Disqus на сторінку де будемо показувати лічильник.
<script
id="dsq-count-scr"
src="https://ваш-shortname.disqus.com/count.js"
async
></script>
А далі дописуємо наступний HTML у потрібне місце.
<span>
<a id="disqus_comments" href="{{ .Permalink }}#disqus_thread">
<span
style="display:none!important;"
class="disqus-comment-count"
data-disqus-url="{{ with .Params.disqus_url }}{{ . }}{{ else }}{{ .Permalink }}{{ end }}"
></span>
{{ .Site.Params.noCounter }}
</a>
</span>
Цей код буде брати статичну посилання на ваш допис щоб асоціювати запит з даними на стороні Disqus.
А для більш простого перевикористання цього шматку розмітки можна створити новий partial
з назвою comments_counter.html
и перенести попередній код в цей файл, а замість нього та в будь якому іншому місці де є контекст сторінки можна використовувати такий шорткод
{{ partial "pagination.html" . }}