NP_Plaintext|バックアップ用にHTMLで保存

NP_Plaintext|バックアップ用にHTMLで保存

Author : pushman|Nucleus|2005-11-04 Fri 11:11

今から半年以上前、お気に入りだったとあるサイトをのぞきに行くと、なんと本文と追記の部分がまったく同じに…うっかりしているのかな、と思ったのですが、なんと過去の記事も全てがおかしい…そしてそのサイトは活動を休止されました…

って、まあこれは当サイトのことです。もちろんここではなく古い方です。しかし今でもあの時の嫌な感じは忘れられません。なにかまずいことが起きているのはわかっているけど、心がそれを認められなかったんでしょうね。その後、いろいろな方に助言を頂き、いくつかの記事は修正できたのですが、そのほとんどが Google 様のキャッシュからでした。Macに保存していたのは、なぜか本と映画の記事だけで、その他の実際に役立つような記事、XHTML とか CSS、PHP に Nucleus の記事はまったくオリジナルの記事がありませんでした。そして、当時3人で更新していたので、メンバーの書いてくれた記事はもちろん僕の手元にはありません。

そんな経験をしたので、今では記事は全て保存しています。当たり前か。でも、たまに自分の書いた記事を読み直して、誤字脱字に気がついたり、言い回しを直したりする時、やっぱりめんどくさくなってブラウザから更新してしまいます。そんなことをすると、バックアップしている記事と、実際の記事が違うことになるので、面倒くさい。つまり、どう頑張っても面倒くさい。あー面倒くさい。息をするのも面倒くさい。

そんな面倒くさがりな僕にぴったりのプラグインを見つけました。「NP_Plaintext」です。これは、各記事をテキストファイル形式でダウンロードしてくれるプラグインです。もちろん、オプションでメンバーのみにこの機能を限定することもできます。

ダウンロードされたテキストは

│アイテムのタイトル (カテゴリー)

│本文

│続き

│--
│作者
│日付

といった感じで展開されます。ファイル名は「item_アイテムナンバー.txt」となります。これは静的ページを生成できない Nucleus には、標準であってもいい機能だと思いますよ。素晴らしいです。

これをもっとバックアップに適した形にするべく、HTML タグの除去を行わないようにしてみました。つまり、実際に投稿したまんまのテキストとしてダウンロードするわけですね。

まあ僕が施せた改造ですので、まったくもって簡単です。NP_Plaintext の96行目あたりにある

$buf = strip_tags($buf);

をコメントアウトするだけです。これだけで HTML のタグが削除されていない記事が保存できます。やりましたね。あとは、ファイル名を記事タイトルにしようと思ったのですが、猛烈な文字化けをしたファイル名になってしまい、挫折しました。ちょっと調べてみたのですが、僕にはとても手が出せない領域のお話です。まあ、ダウンロードしてから自分でタイトルつけることでなんとでもできますから問題ではないですけどね。

僕は Safari を使っているので、アイテム投稿時の media タグ挿入ボタンとか使えないんですよね。なので、僕のように Nucleus の変数を記事中に書いていない人は、リンク先の調整さえすれば、サイトの移行も比較的楽にできるのではないでしょうか。

このプラグインの作者である「The Skooler.org Weblog」の「dj k!ng」さんは、他にも「NP_Header」「NP_CodeBeautifier」「NP_DraftWorks」など、超強力なプラグインを多数作成されています。当サイトはかなりお世話になっています。ほんとにありがとうございます。

Tag(s): NP_Plaintext

Comments

Posted by dj k!ng2005-11-04 Fri 15:24

どうもです. ご紹介頂くばかりで申し訳ないっす. orz

このプラグインは元々改造して使うことを前提に基礎的な部分だけを実装したものなので, 色々手を加えて使って頂ければなぁ, と思います. それを誰か配布してくださると, 僕としても嬉しいところだったりしますが (笑).

記事を追加・更新するときにファイルを書き出すようにすれば, 静的ページの生成も割と簡単に実現できそうですね. っと, そういうプラグインは既に Nucleus フォーラムでどなたか提案されていました.

あ, ファイル名の日本語文字化けですが, ファイル名の文字コードを OSX なら utf-8, OS9 なら Shift-JIS に変換するようにプラグインを書き換えてやると良いかな, と思います. これは mb_convert_encoding() 関数で簡単にできます.

Posted by pushman|2005-11-04 Fri 23:52

dj k!ng さん
連日のトラックバックすみません。いや、もうほんとに便利なプラグインなので、どうしても記事にしておきたくて。半分以上自分のためですが(笑)。

それを誰か配布してくださると, 僕としても嬉しいところだったりしますが (笑).

ほんとですか?! 僕が今妄想しているのは、ファイル名の文字化け解消と、htmlとtxt両方ともダウンロードできるようにすることです。あ、あとやはり自動生成っていうのはチャレンジしたいですね。

mb_convert_encoding() 関数で簡単にできます.

さっそく

$filename = mb_convert_encoding($obj->title, "UTF-8") . '.txt';

としてみましたが、見事に文字化けしてしまいました…orz
もちょっと勉強しないとやはり駄目ですね…頑張って勉強します。ありがとうございました。

Posted by smallstar2005-11-06 Sun 03:01

単にバックアップならNucleus管理にあるデータベースバックアップや、RSSの表示件数1000とかにして無理やりひっぱるとかでもいいですが、HTML タグが付加できた状態のデータが引っ張れるのはいいかも、P_ExtraLoaderつかえばそのままでドキュメント化できるし。
dj k!ngさんの『記事を追加・更新するときにファイルを書き出すように・・・』が出来るようになったら幸せになれそうですね~。

Posted by pushman|2005-11-06 Sun 10:59

smallstar さん
こんにちは。

単にバックアップならNucleus管理にあるデータベースバックアップや、RSSの表示件数1000とかにして無理やりひっぱるとかでもいいですが

そうですね。そういや Nucleus 標準でバックアップ機能有りましたね(笑)。でも、これってデータベースのバックアップで、僕みたいな素人には他でどう使えばいいかわからないんで、やはりこのプラグインのように、サーバーにあげればとりあえず成り立つ、というのはありがたいです。

自動バックアップ、というか自動完全静的生成(変な言い方ですが)実現したいです。素人考えで、このプラグインで書き出す先をサーバーにすればいいだけ、なんて考えてますが、そうじゃないんでしょうね…こつこつ勉強していきます。

Posted by smallstar2005-11-06 Sun 19:14

うは~(汗
P_ExtraLoaderってなんだ・・・NP_ExtraLoaderです。
書き出す先をサーバーに・・・はNP_Cacheあたりがそんな処理をしてそうですね。

Posted by pushman|2005-11-06 Sun 19:52

smallstar さん

P_ExtraLoaderってなんだ・・・NP_ExtraLoaderです。

ご丁寧にありがとうございます。15秒ほど考えて解読しました(笑)。

よく考えたら、書き出す事ができたとしても、記事以外、スキンやテンプレの部分が無いのをどうすればいいんでしょうね?
そこのところは php で include とか? でもそんなこといちいち意識せず、自動で全てのソースを含んだ html なり php を吐き出させるということは…なんて考えていると、僕ではとても実現できないです(笑)。ま、バックアップ専用として、サーバー上に記事が残っているというのでも助かりますけどね。

いや、しかし Nucleus はおもしろいです。勉強になります。

Comment Form (policy)

(メールアドレスは非公開です)

Others
Newest 5 Items

NP_GoogleMapsにオリジナルマーカーを表示

BLOG.phpのPHP Warning

CPIでNucleus(UTF-8)

NP_znItemFieldEX|「本日」の条件判断を修正

NP_OnlyImg|高さを有効に

Nucleus CMS: Pure Publishing