열심히 만들어서
이제 사용해야지 ~
하고 열심히 썼더니.......

Klip 만들기 기초 - 무작정 만들기(RSS 지원하지 않는 사이트)
Klip 만들기 기초 - 무작정 만들기(RSS 지원하지 않는 사이트) 2부

두개의 강좌만으로도 만들었는데..
뭔가 허전하고 약간 이상하다는 느낌을 지울수가 없다 ㅡ_ㅡ;;

왠지 계속 똑같은 글이 올라오는거 같고
공지사항은 왜 자꾸 딸려들어오는지 거슬리고 -_-

아무튼 뭔가 좀 찝찝하다 !!


이럴 경우를 위해서 준비했습니다.

이른바 스페셜 럭키 울트라 부록!
(결국 덧붙임이라능 -_-)





왜 자꾸 똑같은 글이 뜨지??

klip은 contentsource를 그대로 분석해서 아이템을 추가해주는 것이기 때문에 지정한 시간마다 아이템을 분석해서 추가하게 된다. 그러다 보면 그전에 수집해서 이미 있는 아이템도 추가를 해주게 된다. 그래서 계속 같은 글이 뜨게 되는 것이다.
그렇다면............ 해결책은 없나?
(예전에 다나와 장터 처음에 작업했을때 이걸 몰라서 계속 글이 쌓이는 현상이 발생했었다.)

없으면 이 스페셜한 부록이 필요하지도 않았지 우후후후 -_-)/

방법이 있다.
특별한 key를 지정해주는 것이다.

아이템을 가져올때마다 유일하게 가지고 있는 값을 두어서 같은 글이 올라오게 될 경우 그냥 덮어쓰는 것이다.
프로그램하는 사람은 알겠지만 모든 게시판에는 Unique(유일)한 값이 있어야 한다.
그런 값을 아이템에 부여를 하게 되면 중복되는 경우를 찾을 수 있게된다.

그런 유일한 값을 무엇으로 지정해야할까?

일단 제목으로 지정을 해보자.
제목같은 경우 뒤에 댓글 갯수가 바뀌고
똑같은 제목으로 계속 글을 올릴수있기 때문에 유일한 값이 될 수 없다.

그렇다면 작성자 ?
작성자 역시 한 사람이 여러번 글을 올릴 수 있기 때문에 안된다.
비슷한 이유로 작성일자, 조회수도 될수가 없다.

그러면 무엇으로 해야할까?

딱 하나 남았다. 게시판 링크 주소

그렇다!
링크주소를 유일한 값으로 설정하면 되는 것이다.
(심도깊게 파고들자면 게시판 링크가 유일한 것이 아니라 게시물 번호 자체가 유일하다고 하는 것이 맞다. 게시판 링크에 게시물번호가 들어있어서 그것이 유일하게 반복될 뿐이다.)

이제 링크 부분을 유일하게 만들어 보자

 td[style="padding-left:10;"] a::attribute(href) {
  type: link;
  base: "http://www.yu.ac.kr";
  key: override;
 }

key 속성이 추가 되었다.
이제부터 게시판 링크가 유일한 값으로 설정되어서 같은 링크를 가진 글이 올라오면 기존에 있던 아이템으로 덮히도록 설정되는 것이다. 속성값으로 override 말고 exclude와 include 값을 설정해 줄 수 있는데 차이점은 따로 설명하지 않을테니 관심있으면 한번씩 해보기를 추천한다.



공지사항은 빼고 싶은데...

왠지 계속 뜨는 공지사항은 빼고 불러오고 싶은데..
할 수 있는 방법 없나?
klipscript를 사용하지 않고 그냥 style 만으로 하는 방법?

있다.


첫강좌에서 봤던 소스 부분이다

자세히 보면 공지사항 부분과 그냥 게시물 패턴이 약간 다른 것을 알 수 있다.


가장 큰 부분이라면
공지사항 제목 <td> 부분에는 colspan="7"라는 속성이 들어간다.

아하!
그럼 공지사항을 빼고 보기 위해서는 같은 <td>를 불러오는데 colspan="7"이 아닌 것만 불러오면 되겠네?

 td[style="padding-left:10;"]:not([colspan="7"]) a {
  itemcol: 1;
  noterow: 1;
  label: '제목';
  content: text;
 }

not 옵션을 붙여서 아닌 것을 제외한 나머지를 뽑아내도록 하면 된다.
이때 : 표시는 하나만 붙이게 된다.
그리고 뒤에 a 선택자를 추가해서 아무것도 써있지 않은(&nbsp; 등) 부분은 빼도록 했다.

다른 비슷한 경우가 있다면 not을 추가해서 해보도록 하자. 



klip 설정에서 새로고침 시간을 설정했으면 좋겠는데..

그냥 klip 파일 설정할때 <setup><refresh> 부분의 숫자를 바꾸면 된다.
하지만 그걸 언제 또 계속 열어서 바꾸고 저장해서 다시 불러오고 하고 있나 -_-;

그러기 위해서는 klipscript로 추가해주면 된다.

가장 기본적이고 많이 사용하게 되는 스크립트로 새로고침 시간 설정을 알려주겠다.
이 부분은 그냥 복사해서 </style> 밑에 붙여넣고 사용하면 된다.
(소스에 대해서는 추가적으로 설명하지 않겠다.)


  1.     <klipscript>
  2.     <![CDATA[
  3. // Setup AddTab - Refresh Rate
  4. Setup.addTab ("새로고침");
  5. c_refresh_rate = Setup[0].addComboBox("1분 마다", "5분 마다", "10분 마다");
  6. c_refresh_rate.onChange = fn_refresh_rate_onChange;
  7. c_refresh_rate.selected = ((p = Prefs.getPref("refresh_rate")) != false ? Number(p) : 1);
  8. function onRefresh () {
  9.     var cs = Prefs.contentsource;
  10.     if (cs != undefined)
  11.     {
  12.         return Engines.KlipFood.process (cs);
  13.     }
  14.     return false;
  15. }
  16. // -- refresh Start -- Cookbook - Customizable Refresh Rates
  17. function fn_refresh_rate_onChange(index)
  18. {
  19.     Prefs.setPref("refresh_rate", "" + (c_refresh_rate.selected));
  20.     setRefreshRate()
  21. }
  22. function setRefreshRate()
  23. {
  24.     switch (c_refresh_rate.selected)
  25.     {
  26.         case 0: Prefs.refreshrate = 1; break;
  27.         case 1: Prefs.refreshrate = 5; break;
  28.         case 2: Prefs.refreshrate = 10; break;
  29.     }
  30. }
  31. // -- refresh End --
  32.     ]]>
  33.     </klipscript>

만약에 시간을 수정하고 싶다면
굵게 표시된 부분들을 수정하면 된다.
기본적으로 새로고침 시간은 분단위로 설정하게 되어있으니 참고해서 값을 넣으면 된다.



이렇게 하면
style 만으로 만들어 놓은 것보다 쬐~금 아주 쬐~금 더 있어보인다;




그래도 많이 부족한 부분들은
style와 klipcsript를 열심히 공부해서 채워갈 수 있을 것이다.





정말.....

참 쉽죠잉 ~?




퍼갈때는 꼭 출처 표시!!
Posted by Mooki

댓글을 달아 주세요

  1. BlogIcon 낙훈 2009.02.01 18:06  댓글주소  수정/삭제  댓글쓰기

    우와~ 저도 여기까지 따라오고 왔더니 글이 계속 똑같은 걸 불러오더라고요 ㅠ
    ㅎㅎㅎㅎ
    이야 스페셜 팁이네요 ㅋ

  2. BlogIcon 낙훈 2009.02.01 18:19  댓글주소  수정/삭제  댓글쓰기

    exclude는 최근에 조회수가 변경된 글을 불러오는 건가요?; 몇개 글을 더 불러오긴 하는데 그 불러온 글이 보니깐 조회수가 1씩 올라가있더라고요.;
    그리고..include 도 5개씩 조회수가 변경된 글을 불러오는 거 같은데 차이는 잘 모르겠네요.;;
    exclude랑 가져오는 글 갯수가 다른 거 같기는 한데 정확히는..^^;;

    • BlogIcon Mooki 2009.02.02 04:37 신고  댓글주소  수정/삭제

      기본적으로 override를 사용하는 것이 좋습니다.
      exclude와 include는 뭔가 차이점이 있는데 .....
      저도 잘 모르겠습니다 -_-;;;

  3. BlogIcon 낙훈 2009.02.01 18:21  댓글주소  수정/삭제  댓글쓰기

    그런데 리프래쉬할 때..klip 파일을 새로 불러와야하나요, 아니면 메뉴에서 리프래쉬 클립하면 코드가 수정변경된 클립을 불러와서 리프래시하는 건가요, (메뉴에서 리프래시 하는 건 단순히 게시판 피드만 리프래시 하는 건가요?;)

  4. BlogIcon 낙훈 2009.02.01 18:24  댓글주소  수정/삭제  댓글쓰기

    이전에 추가됐던 클립은 클립을 껐다가 새로 키지 않는 이상 그대로 변경되지 않은 상태로 이용 가능한 거군요.
    리셋해도 코드 변경된게 반영되지 않네요.;;
    새로 코드 수정할 때마다 클립을 지웠다가 새로 추가해야하는게 약간 번거롭네요. ^^;

  5. BlogIcon 낙훈 2009.02.01 18:43  댓글주소  수정/삭제  댓글쓰기

    td[style="padding-left:10;"]:not([colspan="7"]) a{
    를 써주게 되니깐 제목 뒤에 코멘트가 안 나와서 그런데 :not 옵션을 사용하지 않고 글번호 항목을 추가시키고
    키 속성을 주면 어떨까 싶어요.
    <td height="28" align="center" class="dot11">1001872</td>
    이게 키 속성인데
    td[height="28" align="center" class="dot11"] {
    itemcol: 1;
    noterow: 1;
    label: '글번호';
    content: text:not([공지]);
    }
    이렇게 하면 될까요? 또 글번호 안에 '공지'가 있을 경우 제외하고 싶을 경우도 컨텐트에 not 옵션을 주면 될까요?;;