FastComments.com

Add Comments to GoHighLevel Sites

Са FastComments-ом можемо једноставно додати живо коментарисање на било који сајт изграђен помоћу GoHighLevel.

Имајте на уму да овај туторијал захтијева FastComments налог. Препоручујемо да се прво региструјете, а онда вратите овдје. Можете креирати налог овдје.

Пријављивање унапријед осигурава да су генерисани примјери кода већ везани за ваш налог.

GoHighLevel сајтови за чланство и остали сајтови

Овај туторијал је подијељен у двије категорије: сајтови за чланство и обични GoHighLevel сајтови.

Започињемо са упутствима за сајтове за чланство.


Корак 1: Измени курс Internal Link


Прво ћемо уредити поставке нашег курса.

Да бисте то урадили, отворите курс и кликните Edit Details.

Уреди детаље курса
Уреди детаље курса

Корак 2: Отвори напредна подешавања Internal Link

Затим треба да отворимо подешавања Advanced:

Отворите напредна подешавања
Отворите напредна подешавања

Додаћемо наш код у секцију Tracking Code. Идите до те секције и кликните на Footer Code.

Корак 3: Копирај код Internal Link

Sada ćemo generisati vaš prilagođeni FastComments kod. Koristite čarobnjak ispod da konfigurirate kako želite da FastComments radi na vašem GoHighLevel sajtu:

FastComments Configuration Wizard

Choose the type of commenting experience you want
How should the widget be placed on your pages?
Comma-separated URL patterns (leave empty for all pages)
Your FastComments tenant ID (use "demo" for testing)

Različite vrste kutija za komentare

Možete konfigurirati liniju TYPE = 'commenting' da zamijenite proizvod koji se koristi (na primjer možete promijeniti u live za streaming chat ili collab za collab chat).

Postavljanje kutije za komentare tamo gdje želite

Pretpostavimo da želite staviti kutije za komentare na određene dijelove stranice, a ne na podrazumijevane lokacije. Promijenite ovaj red:

const TARGET_ELEMENT_ID = ''; // postavite da koristi režim target div

U:

const TARGET_ELEMENT_ID = 'fc_box'; // postavite da koristi režim target div

Zatim u GHL editoru, kliknite dugme "code" i dodajte gdje želite da idu komentari:

GoHighLevel FastComments Div
Copy Copy
1
2<div
3 id="fc_box"
4 type="commenting"
5 urlid="custom-chat-id"
6></div>
7

Različita vrsta kutije za komentare po stranici

Recimo da želite da korisnici označavaju i raspravljaju dijelove teksta, ili da umjesto toga koriste UI za streaming chat.

Prvo slijedite korake gore u "Postavljanje kutije za komentare tamo gdje želite".

Primijetite u tom malom isječku postoji type="commenting".

Ako želite omogućiti collab chat, na primjer promijenite type u type="collab".

Prikazivati samo na određenim stranicama

Ako ne postavite ne postavite TARGET_ELEMENT_ID, možete umjesto toga konfigurirati varijablu VALID_PATTERNS, da podesite na kojim URL rutama bi se komentari trebali prikazivati. Po defaultu, prikazivat će se na stranicama koje u URL-u sadrže /post.

Konfiguriranje Collab Chata

Možete reći collab chatu da doda kolaborativnu funkcionalnost samo oko HTML-a unutar određenog područja, na primjer, recimo da dodate footer kod gore, a zatim dodate ovaj div u sadržaj posta/stranice da omogućite collab chat:

Collab chat sa određenim sadržajem
Copy Copy
1
2<div
3 id="fc_box"
4 type="collab"
5 urlid="custom-chat-id"
6><p>This content will have collab chat!</p></div>
7

Tada će paragraf element unutar <div> imati omogućen collab chat, i ništa drugo na stranici. Ako ne stavite nikakav sadržaj u <div> onda će omogućiti collab chat na cijelom tijelu posta.


Корак 4: Налепи код Internal Link

Сада када смо копирали наш исјечак, залепите га у одељак Footer Code како је приказано:

Залепите код
Залепите код

Члански сајт — успешно Internal Link


То је то! Сада би требало да имате омогућено живо коментарисање за ваш GoHighLevel курс.

Успјех
Успјех

Ако сте наишли на грешку 'permission denied', или желите прилагодити FastComments, наставите са читањем.


Прилагођавање чланског сајта Internal Link


FastComments je dizajniran da se prilagodi vašem sajtu.

Ako želite dodati prilagođeni stil ili podesiti konfiguraciju, Pogledajte našu dokumentaciju o prilagođavanju da saznate kako.


Корак 1: Додај елемент за прилагођени код Internal Link


Прво ћемо отворити уредник за страницу нашег сајта на коју желимо додати коментаре.

Отворите уређивач
Отворите уређивач

Сада пронађите место на страници где желите додати коментаре. Померите миш према крају тог подручја. Појавиће се икона +:

Додајте секцију
Додајте секцију

Ако кликнемо то ће нас питати колико колона треба да има нова секција. Изабраћемо 1 COLUMN:

Додајте колону
Додајте колону

Сада, ако померите миш преко новог реда са 1 колоном, појавиће се опција да додате елемент. Кликните ту:

Додајте елемент
Додајте елемент

Скролујте наниже и одаберите CUSTOM JS/HTML:

Изаберите CUSTOM JS/HTML
Изаберите CUSTOM JS/HTML

Сада изаберите наш нови елемент и кликните на левој страни Open Code Editor:

Open Code Editor
Open Code Editor

Корак 2: Копирај и налепи код Internal Link

Vrijeme je da kopiramo naš kod. Kopirajte sljedeći kod:

GoHighLevel kod za komentare na sajtu
Copy Copy
1
2<script src="https://cdn.fastcomments.com/js/embed-v2.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 (function () {
6 const tenantId = 'demo';
7 const SCRIPT_ID = 'fastcomments-embed';
8 const WIDGET_ID = 'fastcomments-widget';
9
10 let lastInstance;
11 let currentUrlId;
12 let rendered = false;
13
14 // Izmjene History API-ja za podršku SPA
15 const oldPushState = history.pushState;
16 history.pushState = function pushState() {
17 const ret = oldPushState.apply(this, arguments);
18 window.dispatchEvent(new Event('pushstate'));
19 window.dispatchEvent(new Event('locationchange'));
20 return ret;
21 };
22
23 const oldReplaceState = history.replaceState;
24 history.replaceState = function replaceState() {
25 const ret = oldReplaceState.apply(this, arguments);
26 window.dispatchEvent(new Event('replacestate'));
27 window.dispatchEvent(new Event('locationchange'));
28 return ret;
29 };
30
31 window.addEventListener('popstate', () => {
32 window.dispatchEvent(new Event('locationchange'));
33 });
34
35 function getContainer() {
36 return document.getElementById(WIDGET_ID);
37 }
38
39 // Funkcija koja osigurava da je skripta učitana
40 function ensureScriptLoaded() {
41 return new Promise((resolve) => {
42 // Provjeri da li tag skripte već postoji
43 let scriptTag = document.getElementById(SCRIPT_ID);
44
45 if (!scriptTag) {
46 console.log('FastComments: Script tag not found, adding dynamically...');
47 scriptTag = document.createElement('script');
48 scriptTag.id = SCRIPT_ID;
49 scriptTag.src = 'https://cdn.fastcomments.com/js/embed-v2.min.js';
50 scriptTag.async = true;
51
52 scriptTag.onload = () => {
53 console.log('FastComments: Script loaded successfully');
54 resolve();
55 };
56
57 scriptTag.onerror = () => {
58 console.error('FastComments: Failed to load script');
59 resolve(); // Resolve anyway to prevent hanging
60 };
61
62 document.head.appendChild(scriptTag);
63 } else if (window.FastCommentsUI) {
64 // Script tag exists and is already loaded
65 console.log('FastComments: Script already loaded');
66 resolve();
67 } else {
68 // Script tag exists but not ready yet
69 console.log('FastComments: Waiting for script to initialize...');
70 scriptTag.addEventListener('load', () => {
71 resolve();
72 });
73
74 // Rezervna opcija u slučaju da se skripta već učitava
75 const checkInterval = setInterval(() => {
76 if (window.FastCommentsUI) {
77 clearInterval(checkInterval);
78 resolve();
79 }
80 }, 100);
81
82 // Istek vremena nakon 10 sekundi
83 setTimeout(() => {
84 clearInterval(checkInterval);
85 console.warn('FastComments: Script load timeout');
86 resolve();
87 }, 10000);
88 }
89 });
90 }
91
92 // Glavna funkcija za renderovanje
93 async function render() {
94 rendered = false;
95
96 // Osiguraj da je skripta učitana prije nastavka
97 await ensureScriptLoaded();
98
99 function tryNext() {
100 if (rendered) {
101 return;
102 }
103
104 const container = getContainer();
105
106 if (container) {
107 // Dodatna provjera da li je FastCommentsUI dostupan
108 if (!window.FastCommentsUI) {
109 console.log('FastComments: not ready, waiting...');
110 setTimeout(tryNext, 300);
111 return;
112 }
113
114 console.log('FastComments: Target element found, initializing...');
115
116 // Preuzmi trenutni URL kao urlId
117 const newUrlId = window.location.pathname;
118
119 // Provjeri da li treba ponovo renderovati (urlId se promijenio ili je prvo renderovanje)
120 if (currentUrlId !== newUrlId || !lastInstance) {
121 currentUrlId = newUrlId;
122
123 // Uništi prethodnu instancu ako postoji
124 if (lastInstance) {
125 lastInstance.destroy();
126 // Očisti sadržaj kontejnera
127 container.innerHTML = '';
128 }
129
130 // Pripremi konfiguraciju
131 const config = {
132 tenantId: tenantId,
133 urlId: newUrlId
134 };
135
136 console.log('FastComments: Using urlId:', newUrlId);
137
138 // Inicijalizuj FastComments
139 lastInstance = window.FastCommentsUI(container, config);
140 rendered = true;
141 } else {
142 console.log('FastComments: Already rendered with same urlId');
143 rendered = true;
144 }
145
146 // Nadzor da li je kontejner uklonjen ili se URL promijenio
147 const interval = setInterval(function () {
148 const currentContainer = getContainer();
149 if (!currentContainer) {
150 console.log('FastComments: Container removed, will retry...');
151 rendered = false;
152 currentUrlId = null;
153 tryNext();
154 clearInterval(interval);
155 } else {
156 const newUrlId = window.location.pathname;
157 if (newUrlId !== currentUrlId) {
158 console.log('FastComments: URL changed, re-rendering...');
159 rendered = false;
160 tryNext();
161 clearInterval(interval);
162 }
163 }
164 }, 1000);
165 } else {
166 console.log('FastComments: Target element not found, waiting...');
167 setTimeout(tryNext, 300);
168 }
169 }
170
171 tryNext();
172 }
173
174 // Početno renderovanje kada je DOM spreman
175 if (document.readyState === 'loading') {
176 document.addEventListener('DOMContentLoaded', render);
177 } else {
178 render();
179 }
180
181 // Ponovo renderuj pri promjeni lokacije (za SPA)
182 window.addEventListener('locationchange', function () {
183 console.log('FastComments: Location changed, updating...');
184 render();
185 });
186 })();
187</script>
188

Zalijepite to u prozor uređivača koji smo otvorili:

Zalijepite kod
Zalijepite kod

Sada možemo kliknuti Yes, Save u donjem desnom uglu tog prozora.

Na vrhu stranice sada kliknite Save, a zatim Preview.

Сајт — успешно Internal Link

То је то! Сада бисте требали имати активно коментарисање додато на вашу GoHighLevel страницу.

Успјех
Успјех

Ако сте наишли на грешку permission denied, или желите прилагодити FastComments, прочитајте даље.

Прилагођавање сајта Internal Link


FastComments је дизајниран да се прилагоди вашем сајту.

Ако желите додати прилагођени стил, или прилагодити конфигурацију, Погледајте нашу документацију о прилагођавању да сазнате како.



U zaključku

Ako iz bilo kojeg razloga navedeni koraci ili kod ne rade, molimo vas da nas obavijestite.