FastComments.com

Add Comments to GoHighLevel Sites

Sa FastComments-om možemo lako dodati komentarisanje uživo na bilo koji sajt napravljen u GoHighLevel.

Imajte na umu da ovaj vodič zahtijeva FastComments nalog. Preporučuje se da se prvo registrujete, pa da se vratite ovdje. Možete kreirati nalog ovdje.

Prijavljivanje unaprijed će osigurati da su generisani kodni isječci već povezani s vašim nalogom.

GoHighLevel sajtovi za članove i ostali sajtovi

Ovaj vodič je podijeljen na dvije kategorije: sajtovi za članove i obični GoHighLevel sajtovi.

Počinjemo s uputstvima za sajtove za članove.


Корак 1: Уредите курс Internal Link


Prvo ćemo urediti postavke našeg kursa.

Da biste to uradili, otvorite kurs i kliknite na Edit Details.

Uredi detalje kursa
Uredi detalje kursa

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

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

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

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

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

Сада ћемо генерисати ваш прилагођени FastComments код. Користите чаробњака испод да конфигуришете како желите да FastComments ради на вашем GoHighLevel сајту:

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)

Различите врсте поља за коментаре

Можете подесити линију TYPE = 'commenting' да промените који се производ користи (на пример, можете га променити у live за стриминг чет или у collab за collab чет).

Постављање поља за коментаре тамо где желите

Рецимо да желите да поставите поља за коментаре на одређеним деловима странице, а не на подразумеваним местима. Промените ову линију:

const TARGET_ELEMENT_ID = ''; // подесите да користите режим target div-а

У:

const TARGET_ELEMENT_ID = 'fc_box'; // подесите да користите режим target div-а

Затим у GHL едитору кликните дугме "code" и додате где желите да иду коментари:

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

Различита врста поља за коментаре по страници

Рецимо да желите да корисници истичу и дискутују делове текста, или уместо тога користе стриминг чет UI.

Прво пратите кораке изнад у одељку "Постављање поља за коментаре тамо где желите".

Обратите пажњу у том малом исечку на type="commenting".

Ако желите да омогућите collab чет, на пример, промените type у type="collab".

Приказ само на одређеним страницама

Ако не подесите TARGET_ELEMENT_ID, можете уместо тога конфигурисати променљиву VALID_PATTERNS, да бисте одредили на којим URL рутама треба да се прикажу коментари. По подразумеваној вредности, приказиваће се на страницама које у URL-у садрже /post.

Конфигурисање Collab Chata

Можете рећи collab чету да дода колаборативну функционалност само око HTML-а унутар одређеног подручја, на пример, рецимо да додате код у фоотеру горе а затим додате овај div у садржај поста/странице да бисте омогућили collab чет:

Collab Chat са одређеним садржајем
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

Онда ће параграф елемент унутар <div> имати омогућен collab чет, а ништа друго на страници. Ако не ставите садржај у <div> онда ће омогућити collab чет за читаво тело поста.

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


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

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

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

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

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

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

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


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

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


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

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

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

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

Додај одељак
Додај одељак

Ако кликнемо на њу, тражиће од нас колико колона нови одељак треба да има. Изабраћемо 1 COLUMN:

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

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

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

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

Одаберите CUSTOM JS/HTML
Одаберите CUSTOM JS/HTML

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

Отворите едитор кода
Отворите едитор кода

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

Вријеме је да копирате наш код. Копирајте следећи код:

GoHighLevel код коментара за сајт
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 // Измјене History API за подршку 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 // Функција за осигурање да је скрипта учитана
40 function ensureScriptLoaded() {
41 return new Promise((resolve) => {
42 // Провјерите да ли таг скрипте већ постоји
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(); // Свеједно решити да се спречи заглављивање
60 };
61
62 document.head.appendChild(scriptTag);
63 } else if (window.FastCommentsUI) {
64 // Таг скрипте постоји и је већ учитан
65 console.log('FastComments: Script already loaded');
66 resolve();
67 } else {
68 // Таг скрипте постоји али још није иницијализован
69 console.log('FastComments: Waiting for script to initialize...');
70 scriptTag.addEventListener('load', () => {
71 resolve();
72 });
73
74 // Резервна провјера у случају да се скрипта већ учитава
75 const checkInterval = setInterval(() => {
76 if (window.FastCommentsUI) {
77 clearInterval(checkInterval);
78 resolve();
79 }
80 }, 100);
81
82 // Истек времена након 10 секунди
83 setTimeout(() => {
84 clearInterval(checkInterval);
85 console.warn('FastComments: Script load timeout');
86 resolve();
87 }, 10000);
88 }
89 });
90 }
91
92 // Главна функција за рендеровање
93 async function render() {
94 rendered = false;
95
96 // Осигурајте да је скрипта учитана прије наставка
97 await ensureScriptLoaded();
98
99 function tryNext() {
100 if (rendered) {
101 return;
102 }
103
104 const container = getContainer();
105
106 if (container) {
107 // Додатна провјера да ли је FastCommentsUI доступан
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 // Узми тренутни URL као urlId
117 const newUrlId = window.location.pathname;
118
119 // Провјери да ли треба поново рендеровати (urlId је промијењен или је ово прво рендеровање)
120 if (currentUrlId !== newUrlId || !lastInstance) {
121 currentUrlId = newUrlId;
122
123 // Уништи претходну инстанцу ако постоји
124 if (lastInstance) {
125 lastInstance.destroy();
126 // Очисти садржај контејнера
127 container.innerHTML = '';
128 }
129
130 // Припреми конфигурацију
131 const config = {
132 tenantId: tenantId,
133 urlId: newUrlId
134 };
135
136 console.log('FastComments: Using urlId:', newUrlId);
137
138 // Иницијализуј 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 // Праћење ако се контејнер уклони или ако се URL промијени
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 // Почетно рендеровање када је DOM спреман
175 if (document.readyState === 'loading') {
176 document.addEventListener('DOMContentLoaded', render);
177 } else {
178 render();
179 }
180
181 // Поновно рендеровање при промјени локације (за SPA)
182 window.addEventListener('locationchange', function () {
183 console.log('FastComments: Location changed, updating...');
184 render();
185 });
186 })();
187</script>
188

Paste that in the editor window we opened:

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

Сада можемо кликнути на Yes, Save у доњем десном углу тог прозора.

На врху странице сада кликните Save и затим Preview.

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


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

Успјешно
Успјешно

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


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

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

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

У закључку

Ако из било ког разлога наведени кораци или код не функционишу, обавијестите нас.