rss 작성 질문 입니다.
본문
<?php
include_once('./common.php'); // 영카트5 공통 파일 포함
header('Content-Type: application/rss+xml; charset=UTF-8');
// RSS 헤더 작성
echo "<?xml version='1.0' encoding='UTF-8' ?>\n";
?>
<rss version="2.0">
<channel>
<title>최신 콘텐츠 - <?php echo $config['cf_title']; ?></title>
<link><?php echo G5_URL; ?></link>
<description><?php echo $config['cf_title']; ?>의 최신 등록 콘텐츠</description>
<language>ko</language>
<pubDate><?php echo date('r'); ?></pubDate>
<?php
// 1. 상품 데이터 가져오기
$sql = "SELECT it_id, it_name, it_time, it_price
FROM {$g5['g5_shop_item_table']}
WHERE it_use = 1
ORDER BY it_time DESC
LIMIT 20";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$link = G5_SHOP_URL . '/item.php?it_id=' . $row['it_id']; // 상품 링크
$pubDate = date('r', strtotime($row['it_time'])); // 등록/수정 시간
?>
<item>
<title><?php echo htmlspecialchars($row['it_name']); ?> - ₩<?php echo number_format($row['it_price']); ?></title>
<link><?php echo $link; ?></link>
<description>₩<?php echo number_format($row['it_price']); ?></description>
<pubDate><?php echo $pubDate; ?></pubDate>
</item>
<?php
}
// 2. 게시판 데이터 가져오기
$bo_table = 'gallery'; // 대상 게시판 테이블
$sql = "SELECT wr_id, wr_subject, wr_datetime,wr_content
FROM {$g5['write_prefix']}{$bo_table}
WHERE wr_is_comment = 0
ORDER BY wr_datetime DESC
LIMIT 20";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$link = G5_BBS_URL . '/board.php?bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; // 게시글 링크
$pubDate = date('r', strtotime($row['wr_datetime'])); // 등록 시간
?>
<item>
<title><?php echo htmlspecialchars($row['wr_subject']); ?></title>
<link><?php echo $link; ?></link>
<description><![CDATA[<?php echo $row['wr_content']; ?>]]></description>
<pubDate><?php echo $pubDate; ?></pubDate>
</item>
<?php
}
$bo_table = 'story'; // 대상 게시판 테이블
$sql = "SELECT wr_id, wr_subject, wr_datetime, wr_content
FROM {$g5['write_prefix']}{$bo_table}
WHERE wr_is_comment = 0
ORDER BY wr_datetime DESC
LIMIT 20";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$link = G5_BBS_URL . '/board.php?bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; // 게시글 링크
$pubDate = date('r', strtotime($row['wr_datetime'])); // 등록 시간
?>
<item>
<title><?php echo htmlspecialchars($row['wr_subject']); ?></title>
<link><?php echo $link; ?></link>
<description><![CDATA[<?php echo $row['wr_content']; ?>]]></description>
<pubDate><?php echo $pubDate; ?></pubDate>
</item>
<?php
}
?>
</channel>
</rss>
안녕하세요.
네이버에 등록하기 위해서 rss를 위와 같은 형식으로 만들고 등록을 하였는데
올바른 rss가 아니라면서 등록이 안되고 있습니다.
게시판 데이터 부분이 없으면 등록이 잘 되는 상태이고
url/rss.php를 하면 잘 나옵니다.
어느 부분이 문제일까요?
!-->답변 2
기존코드
SELECT wr_id, wr_subject, wr_datetime, wr_content
FROM {$g5['write_prefix']}{$bo_table}
변경처리
SELECT wr_id, wr_subject, wr_datetime, SUBSTR(wr_content, 1, 255) AS wr_content
FROM {$g5['write_prefix']}{$bo_table}
자문 자답이 되어버렸는데
bbs/rss.php 가 있길래 거기보고 수정을 했는데 잘 되네요..
<?php
include_once('./_common.php');
// 특수문자 변환 함수
function specialchars_replace($str, $len=0) {
if ($len) {
$str = substr($str, 0, $len);
}
$str = str_replace(array("&", "<", ">"), array("&", "<", ">"), $str);
return $str;
}
// 처리할 bo_table 배열 정의
$bo_tables = ['gallery', 'story'];
header('Content-type: text/xml');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";
echo '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n";
echo '<channel>'."\n";
// 게시판 데이터 처리
foreach ($bo_tables as $bo_table) {
// 게시판 설정 조회
$sql = " select gr_id, bo_subject, bo_page_rows, bo_read_level, bo_use_rss_view
from {$g5['board_table']} where bo_table = '$bo_table' ";
$row = sql_fetch($sql);
// 특수문자 변환 및 기본 설정
$subj2 = specialchars_replace($row['bo_subject'], 255);
$lines = $row['bo_page_rows'];
// 비회원 읽기 및 RSS 사용 여부 확인
if ($row['bo_read_level'] >= 2 || !$row['bo_use_rss_view']) {
continue; // 조건에 맞지 않으면 건너뜀
}
// 그룹 제목 조회
$sql = " select gr_subject from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
$gr_row = sql_fetch($sql);
$subj1 = specialchars_replace($gr_row['gr_subject'], 255);
// RSS 헤더 정보 출력
echo '<title>'.specialchars_replace($config['cf_title'].' > '.$subj1.' > '.$subj2).'</title>'."\n";
echo '<link>'.specialchars_replace(get_pretty_url($bo_table)).'</link>'."\n";
echo '<language>ko</language>'."\n";
// 게시글 조회 및 RSS 항목 생성
$sql = " select wr_id, wr_subject, wr_content, wr_name, wr_datetime, wr_option
from {$g5['write_prefix']}$bo_table
where wr_is_comment = 0
and wr_option not like '%secret%'
order by wr_num, wr_reply limit 0, $lines ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$file = '';
$html = strstr($row['wr_option'], 'html') ? 1 : 0;
if ($i === 0) {
echo '<description>'.specialchars_replace($subj2).' ('.$row['wr_datetime'].')</description>'."\n";
}
$date = substr($row['wr_datetime'], 0, 10)."T".substr($row['wr_datetime'], 11, 8)."+09:00";
echo '<item>'."\n";
echo '<title>'.specialchars_replace($row['wr_subject']).'</title>'."\n";
echo '<link>'.specialchars_replace(get_pretty_url($bo_table, $row['wr_id'])).'</link>'."\n";
echo '<description><![CDATA['.$file.conv_content($row['wr_content'], $html).']]></description>'."\n";
echo '<dc:creator>'.specialchars_replace($row['wr_name']).'</dc:creator>'."\n";
echo '<dc:date>'.$date.'</dc:date>'."\n";
echo '</item>'."\n";
}
}
// 상품 데이터 처리
echo '<!-- 상품 데이터 -->'."\n";
$sql = " SELECT it_id, it_name, it_time, it_price
FROM {$g5['g5_shop_item_table']}
WHERE it_use = 1
ORDER BY it_time DESC
LIMIT 20 ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$link = get_pretty_url('item', $row['it_id']);
$date = substr($row['it_datetime'], 0, 10)."T".substr($row['it_datetime'], 11, 8)."+09:00";
echo '<item>'."\n";
echo '<title>'.specialchars_replace($row['it_name']).'</title>'."\n";
echo '<link>'.specialchars_replace($link).'</link>'."\n";
echo '<description><![CDATA[가격: '.number_format($row['it_price']).'원]]></description>'."\n";
echo '<dc:date>'.$date.'</dc:date>'."\n";
echo '</item>'."\n";
}
echo '</channel>'."\n";
echo '</rss>'."\n";
!-->
답변을 작성하시기 전에 로그인 해주세요.