r

네이버 신디케이션 관련

· 2013-06-25 (화) 10:05:02 · 1441 · 3
안녕하세요

네이버 신디케이션을 제대로 구동되고 있는지 요즘 엄청난 노력을 하고 있습니다.

네이버 신디케이션 전체 문서 동기화시

업데이트시 증분값을 가져가려고 하기 때문에 다음 과 같이 호출했을때 전체 글이 나와야 합니다.

http://sirgle.com/plugin/syndi/syndi_echo.php?id=tag:sirgle.com,2013:site&type=article&start-time=2013-06-21T12:00:00+09:00&end-time=2013-06-25T12:00:00+09:00

기존 공개된 소스는 에러가 납니다.



물론 지금 g4s에 적용된 소스도 에러가 납니다.



또한,

http://sirgle.com/plugin/syndi/syndi_echo.php?id=tag:sirgle.com,2013:site&type=article

했을때 전체 문서가 나와야 하는데,

역시 소스 오류로 전체 문서도 나오지 않고, 페이징도 되지 않습니다.

http://dev.naver.com/openapi/apis/function/syndication#sn2

중간 부분
4.3. 문서 정보
4.3.1. 사이트의 모든 문서 목록

참고해주세요.



신디 공개된 소스를 손봐야 할것 같습니다.

채널아이디가 없을때 전체 게시글을 가져오는 부분에 문제가 있습니다.

먼저,

site.func.php

function Syndi_getArticleList($args) 에서

if(!$args->target_channel_id)

이때의 문제가 있는것 같습니다.

다음 게시판id(bo_table)을 가져오지 못합니다.

시간계산에도 문제가 있습니다.

if($args->start_time) $where .= ' and wr_datetime >= '. _getTime($args->start_time);
if($args->end_time) $where .= ' and wr_datetime <= '. _getTime($args->end_time);

를
이와 같이 변경해봤는데

if($args->start_time) $where .= " and wr_datetime >= '". date("Y-m-d H:i:s",_getTime($args->start_time))."'";
if($args->end_time) $where .= " and wr_datetime <= '". date("Y-m-d H:i:s",_getTime($args->end_time))."'";


일단 채널아이디값이 있으면 잘 동작합니다.

전체적인 소스 확인이 필요합니다.

지금것은 보니까, 예제 파일이 거의 그대로 들어가 있는데 오류가 확실히 있습니다.

신디케이션 작동이 제대로 되고 있지 않습니다.

(저의 한계는 여기까지 ㅠ)

http://dev.naver.com/openapi/apis/function/syndication#sn2

중간 부분
4.3. 문서 정보 꼭 참고 한번 해봐 주세요
|

댓글 3개

참고로 저는 기존 소스가지고 지금까지 잘 되고 있다고 생각했었는데,

일단, 네이버에 너무나 반영이 안되길래 확인해보니,


증분값을 보니 제대로 돌아가는 싸이트 (

http://syndication.openapi.naver.com/status/?site=www.hungryboarder.com )

(제대로 last update와 next update값, 그리고 증분도 순조롭게 되는..)

와 비교해 보니, 방문횟수는 수천번인데, 글은 제대로 업데이트 되고 있지 않더군요..

상태는working 이고, 네이버에서 문제는 없습니다. 하지만, 문제는 신디케이션 소스에 있는것 같아서 계속 어떻게든 해볼려고 하고 있습니다 ㅠㅠ

그리고 추가로... 지금 위의 링크처럼 = 이 붙으면 제대로 링크가 안되네요

일단 복붙으로 확인 하시구..

정규식에 문제가 있는듯?
오류를 알려주셔서 감사합니다.

우선 plugin/syndi/func/site.func.php 에서

if(!$channel_id)
{
$sql = "select b.bo_table from " . $g4['board_table'] . " b, ". $g4['group_table'] . " g where b.bo_read_level=1 and b.bo_list_level=1 and g.gr_use_access=0 and g.gr_id = b.gr_id";
$sql .= " order by b.gr_id,b.bo_table limit 1";

$row = sql_fetch($sql);
sql_free_result($result);

return $row['bo_table'];
}

를

if(!$channel_id)
{
$sql = "select b.bo_table from " . $g4['board_table'] . " b, ". $g4['group_table'] . " g where b.bo_read_level=1 and b.bo_list_level=1 and g.gr_use_access=0 and g.gr_id = b.gr_id";
$sql .= " order by b.gr_id,b.bo_table limit 1";

$row = sql_fetch($sql);

return $row['bo_table'];
}

이렇게 수정해 보시기 바랍니다.

필요없는 코드가 들어가 있었습니다.
많이 바쁘실텐데 빠른 답변 감사합니다.

sql_free_result($result); 부분은 일단 모두 삭제했습니다.

위 부분 말고 같은 파일 안에 해당 sql_free_result구문이 몇개 더 있습니다.

모두 삭제 해야 할것 같습니다.

또한, 위의 쿼리에 bo_use_search.b ='1' 을 추가하여 실질적으로 그누에서 가장 많이 사용하는 게시판 제외 방법(검색사용)을 적용해야 할것 같습니다.






또, 본문에 링크가 바로가기가 안되어있는데

네이버 신디케이션 api페이지의 상단 메뉴 두번째

Syndication API 명세 메뉴의 4번 부분입니다.


네이버가 원하는 결과를 거의 내어주지 못하고 있습니다.

따라서 제대로 결과를 수집하지 못하고 있는것 같습니다.





여담으로,

네이버가 진짜 성의가 없는것이..

예제 파일을 한번이라도 실제 그누보드에서 구동해보았으면 문제가 있다는 것을 알텐데

저같은 전문지식이 없는 사람이 봐도 몇몇부분 완전 엉망입니다...


네이버 고객센터에는 그누보드 버젼탓 하면서 제대로 기술적인 지원조차 해주지 않습니다.

알려진 대로, 일단 신디케이션을 한번 승인을 받으면, 기존 네이버 봇은 일단 거의 떠나는것 같습니다.

이렇게 네이버 노출에서 벗어나는 싸이트가 많을듯 싶네요 ㅠㅠ

(제 싸이트가 그 예에 적합합니다. 잘못된 소스의 신디케이션 1년 사용후 네이버 '웹문서' 유입이 90% 줄었으니까요..)
댓글을 작성하시려면 로그인이 필요합니다.

버그신고

4,191건

  문의게시판을 이용해 주세요 :) https://sir.kr/co_qa  

+
분류 제목 글쓴이 날짜
13-07-10
13-07-07
13-07-06
13-07-06
13-07-03
13-07-03
13-07-03
13-07-03
13-07-03
13-07-02
13-07-01
13-06-29
13-06-29
13-06-28
13-06-26
13-06-26
13-06-25
13-06-24
13-06-24
13-06-23