Published:

Last Updated:

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•œ ํ‹ฐ์Šคํ† ๋ฆฌ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ฝ˜ํ…์ธ  ๋…ธ์ถœ ํ•˜๊ธฐ

ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜ํ•˜๊ฒŒ ๋˜๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์‹ ๊ธ€๊ณผ ์ธ๊ธฐ๊ธ€์„ ์‚ฌ์ด๋“œ๋ฐ”์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ธ”๋กœ๊ทธ ์šด์˜์ž๊ฐ€ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€์„ ์„ ๋ณ„์ ์œผ๋กœ ๋…ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋งŒ์˜ ์นดํ…Œ๊ณ ๋ฆฌ ์ตœ์‹ ๊ธ€์„ ์‚ฌ์ด๋“œ๋ฐ”์— ๋…ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€์„ ์ž๋™์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•๊ณผ, ์ด๋ฅผ ํ†ตํ•ด ๊ด€๋ จ๋œ ๊ธ€์˜ ๊ด‘๊ณ ๋ฅผ ๋…ธ์ถœํ•จ์œผ๋กœ์จ ๊ด‘๊ณ  ์ˆ˜์ต์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋” ํ™•๋ณดํ•˜๋Š” ์ฐจ์›์—์„œ ์ ์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.


๋ธ”๋กœ๊ทธ ์šด์˜์ž์—๊ฒŒ ๊ฐ€์žฅ ํฐ ๊ณ ๋ฏผ์€ ๊ณผ๊ฑฐ์˜ ์–‘์งˆ์˜ ๊ธ€์ด ๋ฌปํžˆ๋Š” ๊ฒƒ๊ณผ, ๋ฐฉ๋ฌธ์ž๊ฐ€ ํ•œ ๊ฐœ์˜ ๊ธ€๋งŒ ์ฝ๊ณ  ์ดํƒˆํ•˜๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ด€ ์ฝ˜ํ…์ธ ์˜ ์ž๋™ ๋…ธ์ถœ์€ ์„ ํƒ์ด ์•„๋‹Œ ํ•„์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ธ”๋กœ๊ทธ ์šด์˜์ž์˜ ์˜๋„๋ฅผ ์ตœ๋Œ€ํ•œ ์ž˜ ๋ฐ˜์˜ํ•˜์—ฌ ์‚ฌ์ด๋“œ๋ฐ”์— ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐฉ๋ฌธ์ž ์ฒด๋ฅ˜ ์‹œ๊ฐ„(Duration Time) ์ฆ๊ฐ€: ๊ด€๋ จ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ตœ์‹ ๊ธ€์„ ๋ณด์—ฌ์คŒ์œผ๋กœ์จ ํด๋ฆญ์„ ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค.
  • ํฌ๋กค๋ง ๋นˆ๋„ ์ตœ์ ํ™”: ํŽ˜์ด์ง€ ๋‚ด ๋งํฌ ๊ตฌ์กฐ๊ฐ€ ์ตœ์‹ ๊ธ€ ์œ„์ฃผ๋กœ ๊ณ„์† ๊ฐฑ์‹ ๋˜๋ฉด ๊ฒ€์ƒ‰ ์—”์ง„ ๋ด‡์ด ๋” ์ž์ฃผ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ๊ฐœ์„ : ๊ฒฝ์ œ ์ •๋ณด์ฒ˜๋Ÿผ ์‹œ์˜์„ฑ์ด ์ค‘์š”ํ•œ ์ฝ˜ํ…์ธ ๋Š” ์ตœ์‹  ์ •๋ณด๋ฅผ ์ฆ‰์‹œ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ ์ตœ์‹ ๊ธ€ ๋…ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ• ์†Œ๊ฐœ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•œ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ ์ถ”์ถœ (PC ์ตœ์ ํ™”)

ํ‹ฐ์Šคํ† ๋ฆฌ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ๊ฒฝ๋กœ(category/money-insight/economy)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ(Async) ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋งŒ ์™ ๋ฝ‘์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.

ํŠนํžˆ, ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์†Œ๋ชจ์™€ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ณ ๋ คํ•ด ์„ ํƒ์ ์œผ๋กœ ๋…ธ์ถœํ•˜๊ณ , PC ํ™˜๊ฒฝ์—์„œ๋Š” ํ™”๋ คํ•˜๊ณ  ์ •๋ณด๋ ฅ ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์ œ๊ณตํ•˜๋Š” ์ „๋žต์„ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋…ธ์ถœ ์ ์šฉ ์ฝ”๋“œ (HTML ํŽธ์ง‘ ๋ชจ๋“œ์šฉ)

์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ๋ฐ” ๋˜๋Š” ์›ํ•˜๋Š” ๋…ธ์ถœ ์œ„์น˜์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•ด ์ฃผ์„ธ์š”:

div id="economy-posts-container" class="seo-optimized-list"
 div class="loading-spinner"
 p์ตœ์‹  ๊ฒฝ์ œ ํ†ต์ฐฐ๋ ฅ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.../p
 /div
/div

์ €๋Š” ๊ฒฝ์ œ ๊ด€๋ จ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋…ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— id ์†์„ฑ์„ economy-posts-container๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

2. CSS ์ ์šฉํ•˜๊ธฐ

ํƒ€์ดํ‹€(์ œ๋ชฉ)์€ ์ƒ๋‹จ์— ๋…ธ์ถœํ•˜๊ณ , ์ด๋ฏธ์ง€๋Š” ๊ทธ ์•„๋ž˜์—, ๊ทธ๋ฆฌ๊ณ  ๊ธ€์˜ ์ผ๋ถ€ ๋‚ด์šฉ์€ ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•œ CSS์ž…๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์„ ์ž์‹ ์˜ ๋ธ”๋กœ๊ทธ ์Šคํ‚จ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

style
/* ๊ฒ€์ƒ‰ ์—”์ง„๊ณผ ์‚ฌ์šฉ์ž ๋ชจ๋‘๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋””์ž์ธ */
#economy-posts-container {
 display: flex;
 flex-direction: column;
 gap: 20px;
 margin: 30px 0;
}

.eco-post-item {
 display: flex;
 gap: 18px;
 padding: 15px;
 border: 1px solid #f0f0f0;
 border-radius: 12px;
 text-decoration: none !important;
 color: #333 !important;
 transition: transform 0.3s ease, box-shadow 0.3s ease;
 background: #fff;
}

.eco-post-item:hover {
 transform: translateY(-5px);
 box-shadow: 0 10px 20px rgba(0,0,0,0.05);
 border-color: #3498db;
}

.eco-post-thumb {
 flex-shrink: 0;
}

.eco-post-thumb img {
 width: 150px;
 height: 100px;
 object-fit: cover;
 border-radius: 8px;
 background-color: #eee;
}

.eco-post-info {
 flex: 1;
 min-width: 0;
}

.eco-post-title {
 margin: 0 0 8px 0 !important;
 font-size: 18px !important;
 font-weight: 700 !important;
 line-height: 1.4 !important;
 color: #222 !important;
 display: -webkit-box;
 -webkit-line-clamp: 2;
 -webkit-box-orient: vertical;
 overflow: hidden;
}

.eco-post-date {
 font-size: 12px;
 color: #999;
 margin-bottom: 8px;
}

.eco-post-excerpt {
 margin: 0 !important;
 font-size: 14px !important;
 color: #666 !important;
 line-height: 1.6 !important;
 display: -webkit-box;
 -webkit-line-clamp: 2;
 -webkit-box-orient: vertical;
 overflow: hidden;
}

3. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ

์•„๋ž˜ ์ฝ”๋“œ๋Š” HTML ํ•˜๋‹จ, ์ฆ‰ /html ํƒœ๊ทธ ์œ„์— ์ ๋‹นํ•œ ์œ„์น˜์— ์ ์šฉํ•˜์„ธ์š”. ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋Š” ๋กœ๋”ฉ ์†๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ์ ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

const targetUrl = '/category/ํŠน์ •-์นดํ…Œ๊ณ ๋ฆฌ-๋ช…';
style
/* ๋ชจ๋ฐ”์ผ ๋Œ€์‘: ํ™”๋ฉด์ด ์ž‘์„ ๊ฒฝ์šฐ ์ธ๋„ค์ผ ์ˆจ๊ธฐ๊ธฐ ์„ ํƒ ๊ฐ€๋Šฅ */
@media (max-width: 768px) {
 .eco-post-thumb img { width: 100px; height: 70px; }
 .eco-post-title { font-size: 16px !important; }
}
/style

script
(async function() {
 const container = document.getElementById('economy-posts-container');
 const maxPosts = 5;
 // ๋Œ€์ƒ ์นดํ…Œ๊ณ ๋ฆฌ URL ๊ฒฝ๋กœ
 const targetUrl = '/category/ํŠน์ •-์นดํ…Œ๊ณ ๋ฆฌ-๋ช…';

 try {
 const res = await fetch(targetUrl);
 if (!res.ok) throw new Error('Network response was not ok');
 
 const text = await res.text();
 const parser = new DOMParser();
 const doc = parser.parseFromString(text, 'text/html');

 // ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ๋ณ„ ์„ ํƒ์ž(Selector) ์กฐ์ • ํ•„์š” (์˜ˆ: .post-item, .article-content ๋“ฑ)
 // ์•„๋ž˜๋Š” ์ผ๋ฐ˜์ ์ธ ํ‹ฐ์Šคํ† ๋ฆฌ ๋ชฉ๋ก ๊ตฌ์กฐ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•ฉ๋‹ˆ๋‹ค.
 const items = Array.from(doc.querySelectorAll('.post-item, .list-row, .article-content')).slice(0, maxPosts);

 if(items.length === 0) {
 container.innerHTML = 'p style="text-align:center; color:#999; padding:20px;"ํ˜„์žฌ ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ์ตœ์‹ ๊ธ€์ด ์—†์Šต๋‹ˆ๋‹ค./p';
 return;
 }

 let html = '';
 items.forEach(item = {
 const linkEl = item.querySelector('a')?.href || '#';
 const titleEl = item.querySelector('.title, .link_post, dt')?.textContent?.trim() || '์ œ๋ชฉ ์—†์Œ';
 const thumbEl = item.querySelector('img')?.src || 'https://t1.daumcdn.net/tistory_admin/static/top/pc/img_common_tistory_empty.png';
 const dateEl = item.querySelector('.date, .post-date')?.textContent?.trim() || '';
 const excerptEl = item.querySelector('.excerpt, .desc, dd')?.textContent?.trim() || '๋ณธ๋ฌธ ์š”์•ฝ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.';

 html += `
 article class="eco-article-card"
 a href="${linkEl}" class="eco-post-item"
 div class="eco-post-thumb"
 img src="${thumbUrlFix(thumbEl)}" alt="${titleEl}" loading="lazy"
 /div
 div class="eco-post-info"
 h3 class="eco-post-title"${titleEl}/h3
 div class="eco-post-date"${dateEl}/div
 p class="eco-post-excerpt"${excerptEl.substring(0, 120)}.../p
 /div
 /a
 /article
 `;
 });

 container.innerHTML = html;

 } catch(e) {
 console.error('Fetch error:', e);
 container.innerHTML = 'p style="text-align:center; padding:20px;"์ฝ˜ํ…์ธ ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค./p';
 }

 // ํ‹ฐ์Šคํ† ๋ฆฌ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์ตœ์ ํ™” ํ•จ์ˆ˜
 function thumbUrlFix(url) {
 if(url.includes('tistory.com/image')) return url;
 if(url.includes('tistory.com/fname')) return url;
 return url;
 }
})();
/script

4. ์‹ค์ „ ์ ์šฉ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

1) HTML ํŽธ์ง‘ ๋ชจ๋“œ ํ™œ์šฉ ํ‹ฐ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ์ž ํ™”๋ฉด์˜ [์Šคํ‚จ ํŽธ์ง‘] [html ํŽธ์ง‘]์œผ๋กœ ๋“ค์–ด๊ฐ€ ์›ํ•˜๋Š” ์œ„์น˜์— ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์„ธ์š”.

2) ๋ชจ๋ฐ”์ผ ๋กœ๋”ฉ ์†๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ์€ ๋ธŒ๋ผ์šฐ์ € ์ž์›์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. async์™€ defer ์†์„ฑ์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๊ณ , ์ด๋ฏธ์ง€๋Š” ๋ฐ˜๋“œ์‹œ loading="lazy" ์†์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3) ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒฝ๋กœ ํ™•์ธ ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ๋งˆ๋‹ค ์นดํ…Œ๊ณ ๋ฆฌ ์ฃผ์†Œ ์ฒด๊ณ„๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์ธ์˜ ๋ธ”๋กœ๊ทธ์—์„œ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ฃผ์†Œ์ฐฝ์— ๋œจ๋Š” ๊ฒฝ๋กœ(์˜ˆ: /category/example)๋ฅผ targetUrl ์ƒ์ˆ˜์— ์ •ํ™•ํžˆ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.