zowのプログラムな日々

日々のプログラミングとか

構成を考える

まず、作成するサイトを想像して構成を決める。

一般的にはこんな感じだろうか

.
├── category1.html
├── category2.html
├── category3.html
├── contents1.html
├── contents2.html
├── contents3.html
├── contents_group
│   ├── contents1.html
│   ├── contents2.html
│   ├── contents3.html
│   └── index.html
├── css
│   ├── layout.css
│   └── style.css
├── img
├── index.html
├── js
├── tag1.html
├── tag2.html
└── tag3.html

css,img,jsはスタティックで、その他のディレクトリとhtmlを生成する感じ。categoryは記事につけられたカテゴリの一覧ページで、tagは記事に付けられたタグの一覧ページになる。ここで言うカテゴリは記事に付けられた大項目で、1記事1カテゴリを想定。階層は1階層までにする。タグは中小項目やカテゴリを跨いだジャンル分けで、1記事複数タグを想定。各記事に相当するcontentsはルート直下に置いていく。contents_groupはある程度まとまったコンテンツのグループで、カテゴリよりもより纏まりの強いコンテンツへ適用する感じ。ブログを想定してはいないけども、要は月ごとに纏められたアーカイブのページも厳密に言えばタグの一種だと言えるし、ブログの記事はpostとかのcontents_groupで纏めればいい話なので、この構造でブログサイトも構築出来ると思う。

大まかなサイトの構成はこんな感じ。

次にコンテンツの構成を考える。

いろんなCMSを使ってきたけども、コンテンツ部分にはかなり不満を持っている。例えば、ある一定のコンテンツに定形的な物を差し込みたいと思った場合、テンプレートを弄って定形部分を差し込んだり、wpみたいにshortcodeを作成してコンテンツ内に差し込む形になったりする場合が多いのだが、それが気に入らない。もっと細分化してコンテンツを管理したい。

例えば、コンテンツを書く場合、見出しを付けてその内容をその下に書くという事が多いと思うが、一般的なCMSの場合、「ページ全体のコンテンツ」としてこれを作成することになる。そして、このブロック(見出しと内容)とブロックの間に定形的なコンテンツをshortcodeでその中に差し込んでいくのだが、このブロックを1コンテンツとして、1ページ内に複数コンテンツを置くことを想定した形で作りたい。あえて言うのなら、Drupal(昔はそうだった。今は知らない)みたいなコンテンツ管理方式にしたい。shortcodeでは無く、1コンテンツとして定形的な物を組み込む形だ。

簡単に言うと、コンテンツの集合がページで、ページの集合がサイトという感じだ。

そしてメニューだが、これも独自に作れるようにしたい。ページへのリンクの集合がメニューだが、アバウトに自動生成で作るのではなく、カスタマイズ可能というか、カスタマイズ前提の物にしたい。そして各ページに設置するメニューは各ページで違うものを表示できるようにしたい。もちろん自動生成したものを全ページに置けるようにもするが、そこは各ページで選ぶ形にしたい。あえて言うのならJoomla!(昔はメニュー中心でサイトを作っていた。今は知らない)みたいな感じだ。

ひと言でまとめると、あらゆる所をカスタマイズ可能にしたい。静的サイトなので動的自動生成は出来ないのだが、だからこそ自由度を最大限に上げたい。静的サイトジェネレータの多くはここら辺のカスタマイズに幅が無いので使いにくいと言うのが本音かもしれない。動的なCMSと同じものを静的サイトで作成するのではなく、静的サイトとして作るからこそ細かい所に手を入れられる様にしたいのだ。