구글 블로거에 관련 글 보여주기를 추가하는 방법입니다.

블로그 새단장을 준비하며, 예전에 짜 두었던 관련 글 보여주기 소스를 좀 개선했습니다.
내 블로그에서 같은 태그가 달린 글을 검색해서 관련 글로 보여줘요.
관련글 보여주기를 달기 위해선 템플릿(스킨)을 수정해야 합니다.
구글 블로거에 관련 글 보여주기를 달고 싶은 분은, 마음껏 가져다 쓰세요.:D

Head 태그 안에 다음 코드를 추가 해 줍니다.(구글 API키 필요)

<script src='http://www.google.com/jsapi?key=MYAPIKEY' type='text/javascript'/>

스타일 시트에 다음 코드를 추가 해 줍니다.

#related-side{display:none;visibility:hidden;} #related-posts{padding:15px;}

구글 블로거 템플릿에서 <data:post.body/>를 검색해서, <data:post.body/> 아래에 다음 코드를 추가해 줍니다.

<aside id="related-side">
<br/>
<h4><data:post.title/> 관련 글</h4>
<div id='related-posts'/>
</aside>
<script type='text/javascript'>
// 구글 블로거용 관련글 검색 모듈 by 月風(http://dorajistyle.pe.kr)
google.load(&quot;gdata&quot;, &quot;1.x&quot;, { packages : [&quot;blogger&quot;] });
    function getRelated() {
    function eliminateDuplicates(arr) {var i,j=0,len=arr.length,out="",obj={};for (i=0;i&lt;len;i++) {obj[arr[i]]=0;}for (i in obj) {if(j>=9)break; out+=i;j++;}return out;}   
    var relPostArray = new Array();
    var funcvar1=0;    var bloggerService = new google.gdata.blogger.BloggerService(&#39;dorajistylerelatedposts&#39;);
    var handleQueryResults = function(resultsFeedRoot) {   
    var blogFeed = resultsFeedRoot.feed;var html,postTitle,entryUri;var postEntries = blogFeed.getEntries();for (var i = 0; postEntry = postEntries[i]; i++) {var postTitle=postEntry.getTitle().getText(),entryUri=postEntry.getHtmlLink().getHref();if(title==postTitle) continue;var html= &#39;&lt;li&gt;&lt;a rel=\&#39;bookmark\&#39; title=\&#39;&#39;+ postTitle + &#39;\&#39; href=\&#39;&#39;+entryUri+&#39;\&#39;&gt;&#39;+ postTitle + &#39;&lt;/a&gt;&lt;/li&gt;&#39;;
    relPostArray.push(html);}   
    funcvar1++;    if (funcvar1 == filtArray.length) {var urlfinal=eliminateDuplicates(relPostArray);if(urlfinal.length>0){var aside=document.getElementById(&quot;related-side&quot;);aside.style.display=&#39;block&#39;;aside.style.visibility=&#39;visible&#39;;var elem=document.getElementById(&quot;related-posts&quot;);var content=&#39;&lt;ul&gt;&#39;;content+=urlfinal;content+=&#39;&lt;/ul&gt;&#39;;
    elem.innerHtml=&#39;&lt;ul&gt;&#39;;elem.innerHTML=urlfinal;elem.innerHtml+=&#39;&lt;/ul&gt;&#39;;elem.innerHtml+=content;}}
    };       
    var handleError = function(error) {};
    var tagString=&#39;&#39;;
    var labelArray = new Array();<b:loop values='data:post.labels' var='label'>
    tagString+=&quot;<data:label.name/>&quot;;
    tagString+=&#39;,&#39;
    </b:loop>       
    tagString=tagString.substring(0,tagString.length-1);
    var filtArray = tagString.split(&#39;,&#39;);var title =&#39;<data:post.title/>&#39;;
    var feedUri,query;    for (var i = 0; i &lt; filtArray.length; i++){feedUri = &#39;/feeds/posts/default/-/&#39; + filtArray[i]; query = new google.gdata.blogger.BlogPostQuery(feedUri);    bloggerService.getBlogPostFeed(query, handleQueryResults, handleError);}
    }   
    google.setOnLoadCallback(getRelated);
</script>

구글 블로거용 관련글 보여주기 모듈로, 블로그 방문자들에게 편의를 제공하세요.:D



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    광고를 클릭해주시면,
    블로그 운영에 큰 도움이 됩니다!

블로그 템플릿을 오랜만에 수정했습니다. 가장 중요한 것은 내용이지만, 표지가 눈길을 끌어야 책을 집어 들게 되니, 겉모습도 비중이 꽤 크다고 봐요.

작년 말. 정들었던 텍스트큐브닷컴의 서비스가 종료되면서, 제 블로그는 난민이 되었습니다. 그때 어쩔수 없이 난민이 되신 텍스트큐브 닷컴의 블로거 분들은 환경이 비슷했던 티스토리로 많이 이주하셨고,
전자신문의 토트 서비스로 이주를 하거나, 혹은 설치형 텍스트큐브로 갈아 타는 분들도 계셨었죠.
하지만 블로거 닷컴으로 이주 하신 분은 그리 많지 않으셨어요.
아무래도 낯 설은 인터페이스가 주된 원인인 것 같아요.
저 또한 이곳 저곳을 둘러 보았지만, 그냥 구글의 블로거에 정착을 했습니다.
그 땐 여행 중이라 급작스레 블로거로 이전을 하면서 스킨을 제대로 손 보지 못했어요.
이제서야 조금 손을 보게 되었습니다.

내공이 깊은 작가의 책은, 양장본이라서 손이 간 다던가, 책을 볼 때 편리하게 책갈피가 포함되어 있어서 사람들이 찾는 것이 아닙니다.
영혼을 어루어 만져 주는 문장력 덕분이죠. 하지만 누가 봐도 고개를 끄덕일 정도의 글을 쓰는 작가는 많지 않아요.
그렇게 감동적인 문장력을 구사하는 작가들 역시 처음엔, 감정을 전달 하는 것이 서툴러서 몇몇 독자만이 그 감동을 느낄 수 있었을 겁니다.
그것이 점점 다듬어져서 그런 내공이 쌓인 것이겠죠.
하지만 그런 작가의 책이 아니라면,
보통은 작가의 이름 보다는 끌리는 표지를 보고 책을 집어 든다고 생각합니다.
표지가 이쁘고, 펼쳐보니 내용도 나름 괜찮은 듯 하면 더 읽고 싶은 생각이 생기는 것이죠.
이번 블로그 템플릿 수정은 그런 표지를 만들기 위해서 였습니다.

by 月風

블로그 템플릿 수정

의도하지 않은 화면-'블로그 템플릿 수정'

템플릿을 수정 하다 보면,
이렇게 의도하지 않게 화면이 깨져 버리는 일도 자주 일어납니다.
그래서 템플릿 수정용 블로그를 하나 더 만들어서,
어느정도 안정화가 되면 월풍도원에 적용했어요.

메뉴-'블로그 템플릿 수정'
우선 가장 먼저 눈에 띄는 변화는 블로그 위쪽에 메뉴를 만든 것입니다.
'블로그에 대한 소개' 페이지와,
'RSS 구독 하기',
'이메일로 구독하기',
'즐겨 찾기에 추가하기' 메뉴가 있죠.
제 블로그의 글이 마음에 드신다면, 이 메뉴로 더욱 편리하게 이용하세요.^^



번역기-'블로그 템플릿 수정'
사막에 잔디 나듯 찾아오는 외국인 손님들을 위한 메뉴입니다.
외국인 손님들은 보통 검색을 통해 원하는 내용을 찾아 들어오셨을 텐데,
한국어를 보는 순간 왠지 속았다는 생각이 들 수 있으니까요.
번역기가 외국인 손님과 제 블로그 글을 이어주는 다리 역할을 해 주길 바랍니다.


블로그 글 하단-'블로그 템플릿 수정'
그리고 마지막으로 블로그 글의 하단 부분을 바꾸었습니다.
블로그를 너무 느리게 만드는 믹시 위젯은 과감히 지워버렸고,
몇 가지 메뉴를 추가했어요.
구글의 '+1'버튼으로 글을 쉽게 추천 하실 수 있습니다.
페이스북의 '좋아요' 버튼으로 간단하게 글에 호감을 표시 할 수 있어요.
트위터의 '트윗' 버튼으로 글을 한번에 트위터로 보낼 수 있습니다.
구글의 '버즈' 버튼으로 글을 버즈에서 쉽게 공유할 수 있어요.
페이스북의 '공유' 버튼으로 글을 페이스북 친구들과 함께 나눌 수 있습니다.
그리고 '즐겨찾기' 버튼은 글을 나중에 다시 참고하고 싶을 때 유용하죠.
이메일로 글을 보낼 수도 있습니다!

앞으로 내용을 알차게 채워가는 월풍도원을 만들어 가겠습니다. 
모두 행복 하세요!!!



by


Tags : , , , , ,

  • 재미있게 읽으셨나요?
    광고를 클릭해주시면,
    블로그 운영에 큰 도움이 됩니다!

EclipseRCP 백그라운드잡 템플릿 (EclipseRCP Background Job Template)[Background Job,이클립스 RCP,eclipse RCP]

이미지출처 : www.mobilefish.com

EclipseRCP 백그라운드잡 템플릿 (EclipseRCP Background Job Template)







Code:

Job job = new Job("Title") {
          protected IStatus run(IProgressMonitor monitor) {
           monitor.beginTask(TaskName, totalWork);
              monitor.subTask(SubTaskName);
                  monitor.worked(work);
                  if (monitor.isCanceled()){
                    return Status.CANCEL_STATUS;
                  }
//                  try { Thread.sleep(1000); } catch (Exception e) { }
                        Display.getDefault().asyncExec(new Runnable() {
                           public void run() {
                                           //  UI Update Jobs
                           }
                        });
                 
               return endJob(monitor);
            }
         };
 
//         job.setUser(true);
         job.schedule();
 
   public boolean isModal(Job job) {
          Boolean isModal = (Boolean)job.getProperty(
                                 IProgressConstants.PROPERTY_IN_DIALOG);
          if(isModal == null) return false;
          return isModal.booleanValue();
       }
   protected  Action getCompletedAction() {
      return new Action("View status") {
        public void run() {
         
          MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
                  dialogTitle,
                  dialogContent);
        }
      };
    }
   
    protected  void showResults() {
          Display.getDefault().asyncExec(new Runnable() {
             public void run() {
                getCompletedAction().run();
             }
          });
       }
   
    protected IStatus endJob(IProgressMonitor monitor) {
    if (isModal(this)) {
          // The progress dialog is still open so
          // just open the message
          showResults();
       } else {
       setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE);
       setProperty(IProgressConstants.ACTION_PROPERTY,
              getCompletedAction());
       }
      monitor.done();
       return Status.OK_STATUS;
      
  }



by


Tags : , , , , , , , ,

  • 재미있게 읽으셨나요?
    광고를 클릭해주시면,
    블로그 운영에 큰 도움이 됩니다!