githubでブログ作ろうとしたらめっちゃ大変やんけ・・・
以前WEB広告のお仕事をしていたので
自分でブログ書いて広告貼ってチャリンチャリン儲けようと思ったわけですが
サーバー代って結構厄介なわけです。
場合によっては負荷高騰とか考えなくちゃいけないし
既存のブログサービスに乗っかろうとすると
自分で広告貼るには有料会員にならないといけなかったり。。。
しかも自分で広告運用しようとしている人は絶対に優良会員ではないんですよねw
cookie情報抜いたり色んな行動情報集めていたり
そりゃあ広告業者は嫌われますよ
広告貼ったらoptoutのリンクは付けなくちゃとは思っています。
そんで!
計測タグとか広告タグとか色々突っ込まなくちゃいけないので
「とりあえずheaderとfooterは共通化したい!」という
ざっくりとした希望の元に動き出しました。
今回は第一弾なので中でも一番核になる部分のblog-builderについてお話いたします。
正直大した事はしていないので実装をさっくり見てもらった方が早い人は早いです。
最初はnode.jsでgulp使ってejs辺りで~とか思っていたんですけど
やっぱり自分はphperなんだなと思い知らされました。
故にphpで書いています。
workスペースを区切ってそこにbuild用のscriptを置いています。
テンプレート関連はsrcに
その中には共通テンプレートのcommonと
記事詳細を突っ込んでおくdetailがあります。
基本的にはdetailの中身を再帰的に探してきてhtmlとして書き出されたものを取得してファイル書き出しをする
の繰り返しです。
ファイルの書き出しをする時に面倒な事を考えたくなかったので
普通にhttpリクエストで読み込む時と同じような書き方をしています。
記事詳細の書き方をいちいち覚えていられないので記事詳細用のテンプレートなんてのも用意しています。
meta情報をサクッと書いて、記事の詳細をhtmlで組んでいくと良い感じになるのがわかる
とても良いテンプレートです。
headファイルとfootファイルは繰り返し読み込む事になるので
通常仕事では「require_once」とか使うんですけど
今回は「include」を使っています。
テンプレートの中にphpのメソッドは書いてはいけない状態になった事は肝に銘じておきます。
実際の処理ですが、先に書いたように階層下ってfile拾って実行して書き出すだけなので
特に珍しいことはしていません。
唯一珍しい事と言えば、phpとして実行した結果を受け取らなくてはいけなかったので
「ob-start」を使っていることぐらいでしょうか。
/** * fileの実行結果を取得する * @param string $fileName * @return string */ function getFile($fileName) { $contents = ""; ob_start(); // 標準出力を抑制 include($fileName); // ファイルの実行 $contents = ob_get_contents(); // 実行結果を受け取る ob_end_clean(); // 標準出力の抑制解除 return $contents; }
こんな感じで使っていますね。
あとは再帰処理の時に変数の使いまわしが簡単なようにclassに突っ込んだぐらいで
特段珍しいことはしていません。
書き出しが愚痴っぽくなってしまったのでとりあえず次回に期待を・・・