윈도우

윈도우에서 펠리칸 돌려서 위키 비슷한 홈페이지 만들자..? (4)

ForceCore 2016. 8. 13. 22:58

전 글에선 딴 길로 샜다. 이제 진짜로, 테마를 만들어보자.


http://docs.getpelican.com/en/3.6.3/themes.html?highlight=theme


이렇게 만드는 것이군. 설정 파일 (pelicanconf.py)에 THEME항목을 넣으란다. 넣지 뭐.

THEME='red2' 한 줄 추가.


https://github.com/getpelican/pelican/tree/master/pelican/themes/simple

simple 폴더를 받아서 (zip으로 pelican을 몽땅 받은 다음에, 해당 폴더만 추려내면 된다) red2로 이름 변경했다.


그리고 홈페이지 git 폴더에, Makefile 있는 곳에, themes폴더를 만들고 그 안으로 이동.

하고 나면 red2\themes\red2\templates\index.html 이 존재하게 되는 것이다... 근데 make html을 시도해보면 Could not find the theme red2 라고 에러 메시지가 나온다. 왜 그럴까...


THEME = './themes/red2' 로 교체했다. 그러니 된다. 컴파일의 결과물을 보니 매우 매우 장식 하나도 없고, 옛날 HTML1 시절?? 홈페이지 스럽게 나온다. 곧 교체해주마.


가장 중요한 것은 base.html이다.


에... base.html을 뜯어보니 Feed 기능도 있네. Feed 부터 할까?


# Feed

FEED_DOMAIN = SITEURL

FEED_MAX_ITEMS = 100

FEED_ALL_ATOM = 'feeds/all.atom.xml'


디폴트로는 RSS가 아닌 atom feed라고 한다. 이 세 줄이면 될 것이다. Default 값들은 feed를 생성하지 않는 방향으로 되어 있으므로 위 세 줄을 반드시 넣어 주어야 한다. 또 주의 사항은, SITEURL 항목을 http://red2.net 과 같이 웹상의 절대적인 주소로 해야 한다는 것이다. 안 그러면 Feed 프로그램에서 상대경로로 홈페이지를 어떻게 찾겠는가. 이러니 feed는 잘 생성된다. 이에 대한 링크를 넣기만 하면 된다, 나중에. 다시 base.html을 개조해보자... 음... 이는 홈페이지마다 다르니까 자세한 사항은 생략한다.


Feed 위치는 base.html 에 있는대로 

<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />

이것을 참조해 적어주자. {{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }} 이 부분이 경로다.

테마엔 css가 들어가야 제맛. 원본 파일들은

red2\themes\red2\static\css
에 두면 make html을 했을 때
red2\output\theme\css
에 배치가 자동으로 된다. HTML 파일 안에선 당연히



    <!-- Bootstrap -->

    <link href="/theme/css/bootstrap.css" rel="stylesheet">

    <link href="/theme/css/kfonts2.css" rel="stylesheet">

    <link href="/theme/css/custom3.css" rel="stylesheet">


이런 식으로 가져다 쓰게 된다.


    <link rel="shortcut icon" href="{{ RED2_FAVICON }}" type="image/x-icon">

아이콘도 파일 이름을 변수로 좀 멋있게 해주고 싶으면, pelicanconf.py 에서 내 맘대로 변수를 도입하고 (여기선 RED2_FAVICON) base.html 에서 이용해주면 된다.


Template에 사이트 내용물에 대한 링크를 걸 수 있을까? 다소 힘드네...


완전 처음부터 하려니 힘들고, 또 홈페이지의 소스를 복붙 하려니까, 코드가 의외로 지저분하다. 게시판 로그인 기능도 있고 그래서... 차라리, 깔끔한 테마부터 시작해서 나중에 원하는 모양으로 고쳐나가는 것이 좋을 것으로 생각된다. 내가 홈페이지 주인장도 아니고, 나중에 주인장이 편하게 고칠 수 있도록 깔끔한 base를 제공하는게 우선이니까.


https://github.com/blueicefield/pelican-blueidea


여기 테마부터 출발...


MENUITEMS 라는 테마별 parameter가 있는데, 사실상 거의 모든 테마가 MENUITEMS 를 지원한다. (pelicanconf.py에서 지정한다.)


살짝 문제가 있는데, (제목, URL) tuple에서 URL부분이 나름 동적이라 지정이 힘들다는거... pelican이 생성하는 파일 이름이 파일 내부의 title을 따라간다는 것이다. 이를 방지하고 예상 가능한 파일명을 얻으려면, 파일 안에 save_as: contents.html 처럼 파일명을 지정해버리면 된다.


말이 나온 김에.

URL:

save_as: index.html

위 두 줄을 넣으면 홈페이지의 index.html을 override할 수 있다.