- Today
- Total
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 클론코딩
- 배열
- pl/sql
- spring boot
- 이클립스
- 트러블슈팅
- sql
- 문제해결
- 오류해결
- 워드프레스
- 워스프레스
- dbeaver
- wordpress
- 의존성주입
- 쿼리개선
- PLSQL
- 티스토리챌린지
- iframe
- 엘리멘터
- PROCEDURE
- Hostinger
- Oracle
- 프로시저
- 환경세팅
- JSP
- 함수
- javascript
- function
- 오블완
- 오라클
Archives
개발 공부중
[HTML/CSS] 홈페이지에 rss로 최신 뉴스기사 불러오기 (닷홈빌더 활용) 본문
누군가에게 필요할까 싶어서 써보는
닷홈빌더로 만든 홈페이지에 rss로 최신 뉴스기사 불러오기

빠르게 홈페이지를 만들고 싶어서 뭘 써볼까 고민하다가
닷홈에서 손쉽게 홈페이지를 만드는 기능이 있는 걸 발견했다.
그래서 닷홈빌더를 활용해서 친구들과 사용할 홈페이지를 만들었다. 놀랍게도 하루만에 만들었다.
그런데 홈페이지가 너무 허전해서 최신정보를 볼 수 있는 메뉴를 만들었다.

1. 프레임을 나누고 요소 코드를 추가해준다.


그럼 아래처럼 화면이 된다.

2. 코드를 입력하고 적용하기

<style>
.news-widget-box {
font-family: 'Malgun Gothic', sans-serif;
border: 1px solid #ddd;
border-radius: 10px;
background: #fff;
overflow: hidden;
max-width: 100%;
margin-bottom: 20px; /* 박스 간 간격 */
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.news-widget-header {
background: #0b0e23; /* 배경색 */
color: #fff;
padding: 15px;
font-weight: bold;
font-size: 16px;
display: flex;
justify-content: space-between;
align-items: center;
}
.news-widget-list { padding: 0; margin: 0; list-style: none; }
.news-widget-item { padding: 15px; border-bottom: 1px solid #eee; transition: background 0.2s; }
.news-widget-item:hover { background-color: #f9fbfc; }
.news-widget-item a { text-decoration: none; color: #333; font-size: 15px; font-weight: 500; display: block; margin-bottom: 5px; }
.news-widget-item a:hover { color: #1a73e8; text-decoration: underline; }
.news-widget-meta { font-size: 12px; color: #888; }
.news-loading { padding: 20px; text-align: center; color: #666; }
</style>
<script>
// 이 함수가 뉴스를 가져와서 박스에 넣어줍니다.
function loadNewsWidget(boxId, searchKeyword, titleText) {
// 1. 박스 찾기
const box = document.getElementById(boxId);
if (!box) return;
// 2. 제목 설정
const titleArea = box.querySelector('.widget-title-text');
if (titleArea) titleArea.innerText = titleText || searchKeyword + " 뉴스";
// 3. RSS 주소 생성
const baseUrl = "https://news.google.com/rss/search";
const params = `?q=${encodeURIComponent(searchKeyword)}&hl=ko&gl=KR&ceid=KR:ko`;
const apiUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(baseUrl + params)}`;
// 4. 데이터 가져오기
fetch(apiUrl)
.then(res => res.json())
.then(data => {
const listArea = box.querySelector('.news-widget-list');
if (data.status === 'ok' && data.items.length > 0) {
let html = '';
data.items.slice(0, 5).forEach(item => {
// 날짜 포맷
let dateStr = item.pubDate;
try {
const d = new Date(item.pubDate);
dateStr = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')} ${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}`;
} catch(e) {}
html += `
<div class="news-widget-item">
<a href="${item.link}" target="_blank">${item.title}</a>
<div class="news-widget-meta">${dateStr} | ${item.author || '뉴스'}</div>
</div>`;
});
listArea.innerHTML = html;
} else {
listArea.innerHTML = '<div class="news-loading">검색 결과가 없습니다.</div>';
}
})
.catch(err => {
const listArea = box.querySelector('.news-widget-list');
if(listArea) listArea.innerHTML = '<div class="news-loading">불러오기 실패</div>';
});
}
</script>
<div id="news-1" class="news-widget-box">
<div class="news-widget-header">
<span class="widget-title-text">뉴스 로딩 중...</span>
<span style="font-size:11px; opacity:0.8;">Live</span>
</div>
<div class="news-widget-list">
<div class="news-loading">뉴스를 검색하고 있습니다...</div>
</div>
</div>
<script>
// loadNewsWidget('아이디', '검색어', '박스제목');
loadNewsWidget('news-1', '핸드볼', '핸드볼 최신 뉴스');
</script>
첫번째 code/ 박스
<div id="news-2" class="news-widget-box">
<div class="news-widget-header">
<span class="widget-title-text">뉴스 로딩 중...</span>
<span style="font-size:11px; opacity:0.8;">Live</span>
</div>
<div class="news-widget-list">
<div class="news-loading">뉴스를 검색하고 있습니다...</div>
</div>
</div>
<script>
// 아이디를 news-2 로 맞춰줍니다.
loadNewsWidget('news-2', '여자축구', '여자축구 최신 뉴스');
</script>
두번째 code/ 박스
style 과 script 는 이미 첫번째 박스에서 써서 훨씬 간단하게 작성할 수 있다.
코드 전문 맨 아래에 있는
loadNewsWidget('아이디', '검색어', '박스제목');
아이디만 각 박스 별 div id와 맞추고, 검색어와 박스제목만 바꿔주면 끝~
구글서치콘솔에 등록했는데 한번 실패하고 다시 개선해서 재등록 중이다.
등록이 잘 되길...
끝
'HTML, CSS' 카테고리의 다른 글
| [JS] JS, CSS 파일 변경 후 내용이 적용이 안될 때 오류 해결 방법 (0) | 2024.06.18 |
|---|---|
| [HTML] 인코딩 참조표 (0) | 2024.04.08 |
| [TIL] 메서드 - GET / POST 차이점 (0) | 2023.02.09 |
| [HTML/CSS] 폼 관련 태그 <form> <lable> <input> (0) | 2022.08.19 |
| [HTML/CSS] 이미지맵 실습 (0) | 2022.08.19 |
Comments
