Monday, June 23, 2008

블로그 Element 추가

그냥 생각나는 대로 포스팅하다보니, 어느새 글 수가 100개를 넘어버려서 나도 관리가 안되기 시작했다. 다른 블로그에선 카테고리에 따라 글 목록을 관리할 수가 있었던 것 같은데, 구글블로그에는 카테고리 기능이 없으므로 관리가 조금 더 어려운 듯 보인다.

구글 블로그에는 구글의 다른 제품들과 마찬가지로 카테고리 대신 레이블을 붙여서 관리하는데, 한 게시물의 여러가지 특성을 나타내며 다채롭게 인덱싱할 수 있다는 점은 매우 좋지만, 레이블당 글목록을 만들어내는 방법이 마땅치 않다. 그것 때문에, Hoctro블로그에서 만들었던 자바스크립트 기반의 Related Post를 넣어 사용하고 있긴 한데, 이게 원래 Recent post에서 시작된 것이어서인지, 자바스크립트의 문제인지 최근 25개의 게시물만을 인덱싱해주고 있다.

완전히 자동으로 해주진 못하더라도, 이전의 게시물을 비교적 빠르게 찾을 방법이 필요했다.

새로 추가한 것은 'Today's choices', 'Featured Labels', '게시물의 전체 리스트'의 세 가지이다.

1) Today's choices: 이것은 이전 게시물 중 10개를 골라, 빨리 접근할 수 있는 링크를 제공하는 것으로, 완전 수작업으로 만든다. (완전 수작업이라야, 그저 copy & paste이지만)

위 그림과 같이 이 기능은 단순히 링크 기능을 이용하여 만들고, 다시 수정하기 전까지는 그대로 유지된다. 블로그는 게시물이 시간 순서로 나열되므로 중요도에 따른 편집권이 없지만, 이와 같은 기능을 통해 약간의 편집권을 누리게 된다.
제목은 '오늘의 선택'이지만, 어지간해서 매일 편집하기는 어렵겠지.

(6월25일 수정)
다시 생각해보니 굳이 수작업으로 해야 할 필요가 없을 것 같았다. 그저 Today's Choice라는 Label을 하나 만들고 아래의 Featured Label을 구현하듯 Feed2js로 목록을 자동으로 생성하는 것이 더욱 간단하다. 이렇게 하면 Labeling을 바꾸어주는 것 만으로 간단히 골라낼 수 있다. 물론 rss feed가 빨리 update되지 않는 경우가 있으므로, 시간이 조금 더 걸리긴 하겠지만 간단히 고를 수 있고, 골라낸 게시물만 들어간 페이지도 쉽게 생성할 수 있으므로 더 좋은 방법이라 생각된다.

2) Featured Labels: 이것은 레이블에 연결된 게시물 리스트를 보여주는 기능이다.

윗 그림에서 볼 수 있는 바와 같이 몇 개의 레이블을 정해서 그 해당하는 레이블이 달린 게시물을 나열한다. 레이블과 게시물이 많아지면 너무 길어져서 인덱싱이 오히려 안되므로 접었다 폈다 할 수 있는 기능을 넣는다. (이것에 대해서는 이전 게시물에 있고...)
동일한 레이블을 갖는 게시물리스트는 rss feed를 이용한다. 예를 들어 '가요'의 레이블에 대한 rss feed는
http://eaglface.blogspot.com/feeds/posts/default/-/%EA%B0%80%EC%9A%94
이다. 한글 레이블이므로 뒤에 붙는 레이블명이 그냥 영어 단어가 아님에 주의하자. (UTF-8 code인가?) 일단 rss feed를 얻은 후에는, feed2js 홈페이지에서 자동 feeding을 위한 자바스크립트를 생성한다.
이 때 기본적으로 25개를 최대로 주는 문제가 다시 발생하는데, 이는 rss feed를 줄때 ?max-results=1000을 뒤에 붙여주어 최대 1000개의 feed를 발생시키는 식으로 해결한다. 즉 결과 rss feed는
http://eaglface.blogspot.com/feeds/posts/default/-/%EA%B0%80%EC%9A%94?max-results=1000
의 형태가 된다. 이제 이를 접을 수 있는 페이지에 넣어서 만들면 끝.
레이블 맵을 자동으로 생성해서 만들지 않으므로 조금 손이 가지만, 오히려 너무 많은 레이블을 다 다루려면 페이지 로딩시간이 더 오래 걸릴 것이므로 손이 좀 가는 편이 나을 듯.

3) 게시물 전체 리스트

이는 앞에서 했던 것보다 더 간단하다. 전체 블로그의 rss feed를 넣어 자바스크립트를 만들어 내고 이를 게시한 후, 만들어진 페이지를 링크하면 된다. 역시 max-result를 충분히 많이 주어서 전체 리스팅이 나오도록 한다.

게시 시간순으로 정렬되므로 그리 효율적인 방법은 아닌것 같지만, 그래도 찾아볼 수는 있을테니 나름대로 유용할 수 있을 것 같다.

한 가지 주의할 점은, 이미 게시물이 많은 상태에서 이 게시물을 올리면 오늘 날짜로 만들어져서 중간에 생뚱맞게 매우 긴 post가 생긴다는 점이다. 이것은 게시직전에 post options에서 게시날짜를 첫 게시물이 게시된 날짜보다 과거로 설정하여 1번 게시물이 되게함으로써 간단히 피할 수 있다.

사실 다들 간단한 것이긴 한데, 차후에 템플릿을 바꾸게 되면 다시 해야 할 지 모르므로 포스팅해둔다.

No comments: