FastComments.com

Add Comments to GoHighLevel Sites

FastComments๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด GoHighLevel๋กœ ๊ตฌ์ถ•๋œ ๋ชจ๋“  ์‚ฌ์ดํŠธ์— ์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์€ FastComments ๊ณ„์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐ€์ž…ํ•œ ๋‹ค์Œ ์ด๊ณณ์œผ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋กœ๊ทธ์ธํ•˜๋ฉด ์ƒ์„ฑ๋œ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ด ์ด๋ฏธ ๊ท€ํ•˜์˜ ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

GoHighLevel ๋ฉค๋ฒ„์‹ญ ์‚ฌ์ดํŠธ ๋ฐ ๊ธฐํƒ€ ์‚ฌ์ดํŠธ

์ด ํŠœํ† ๋ฆฌ์–ผ์€ ๋ฉค๋ฒ„์‹ญ ์‚ฌ์ดํŠธ์™€ ์ผ๋ฐ˜ GoHighLevel ์‚ฌ์ดํŠธ์˜ ๋‘ ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ฉค๋ฒ„์‹ญ ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ง€์นจ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.


1๋‹จ๊ณ„: ์ฝ”์Šค ํŽธ์ง‘ Internal Link


๋จผ์ €, ์ฝ”์Šค์˜ ์„ค์ •์„ ํŽธ์ง‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

To do this, open the course, and click Edit Details.

์ฝ”์Šค ์„ธ๋ถ€ ์ •๋ณด ํŽธ์ง‘
์ฝ”์Šค ์„ธ๋ถ€ ์ •๋ณด ํŽธ์ง‘

2๋‹จ๊ณ„: ๊ณ ๊ธ‰ ์„ค์ • ์—ด๊ธฐ Internal Link

๋‹ค์Œ์œผ๋กœ, Advanced ์„ค์ •์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

๊ณ ๊ธ‰ ์„ค์ • ์—ด๊ธฐ
๊ณ ๊ธ‰ ์„ค์ • ์—ด๊ธฐ

์ฝ”๋“œ๋Š” Tracking Code ์„น์…˜์— ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์„น์…˜์œผ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ Footer Code๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

3๋‹จ๊ณ„: ์ฝ”๋“œ ๋ณต์‚ฌ Internal Link

์ด์ œ ๋งž์ถค FastComments ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GoHighLevel ์‚ฌ์ดํŠธ์—์„œ FastComments๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•˜์„ธ์š”:

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๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

๋Œ“๊ธ€ ๋ฐ•์Šค๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜๊ธฐ

ํŽ˜์ด์ง€์˜ ํŠน์ • ๋ถ€๋ถ„์—๋งŒ ๋Œ“๊ธ€ ๋ฐ•์Šค๋ฅผ ๋„ฃ๊ณ  ๊ธฐ๋ณธ ์œ„์น˜์—๋Š” ๋„ฃ์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ด ์ค„์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”:

const TARGET_ELEMENT_ID = ''; // ํƒ€๊ฒŸ div ๋ชจ๋“œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์„ค์ •

๋‹ค์Œ์œผ๋กœ:

const TARGET_ELEMENT_ID = 'fc_box'; // ํƒ€๊ฒŸ 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="collab"๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

ํŠน์ • ํŽ˜์ด์ง€์—๋งŒ ํ‘œ์‹œ

TARGET_ELEMENT_ID๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ€์‹  VALID_PATTERNS ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๋Œ“๊ธ€์„ ํ‘œ์‹œํ•  URL ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ URL์— /post๊ฐ€ ํฌํ•จ๋œ ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Collab ์ฑ„ํŒ… ๊ตฌ์„ฑํ•˜๊ธฐ

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 ์„น์…˜์— ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”:

Paste Code
Paste Code

๋ฉค๋ฒ„ ์‚ฌ์ดํŠธ ์„ค์น˜ ์„ฑ๊ณต Internal Link


์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค! ์ด์ œ GoHighLevel ์ฝ”์Šค์— ์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๊ณต
์„ฑ๊ณต

๊ถŒํ•œ ๊ฑฐ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ 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 // SPA ์ง€์›์„ ์œ„ํ•œ History API ์ˆ˜์ •
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(); // ๋Œ€๊ธฐ ์ƒํƒœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์–ด์จŒ๋“  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

์—ด์—ˆ๋˜ ํŽธ์ง‘๊ธฐ ์ฐฝ์— ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”:

์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ
์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ

์ด์ œ ๊ทธ ์ฐฝ์˜ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์—์„œ Yes, Save๋ฅผ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ์ƒ๋‹จ์—์„œ Save๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ Preview๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

์‚ฌ์ดํŠธ ์„ค์น˜ ์„ฑ๊ณต Internal Link

์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค! ์ด์ œ GoHighLevel ์‚ฌ์ดํŠธ์— ๋ผ์ด๋ธŒ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณต
์„ฑ๊ณต

๊ถŒํ•œ ๊ฑฐ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ FastComments๋ฅผ ๋งž์ถค ์„ค์ •ํ•˜๋ ค๋ฉด ๊ณ„์† ์ฝ์œผ์„ธ์š”.


์‚ฌ์ดํŠธ ๋งž์ถค ์„ค์ • Internal Link


FastComments๋Š” ์‚ฌ์ดํŠธ์— ๋งž์ถฐ ๋งž์ถค ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ์„ ์กฐ์ •ํ•˜๋ ค๋ฉด ๋งž์ถค ์„ค์ • ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.


๊ฒฐ๋ก 

์ œ๊ณต๋œ ๋‹จ๊ณ„๋‚˜ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ €ํฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ์„ธ์š”.