Posts from the ‘Wordpress’ Category

2010/07/23

WordPress – Download ePub プラグイン

by ctrans

WordPressのエントリをePubに変換し、ダウンロードできるようにするプラグインを作成しました。

ダウンロード:Download ePub プラグイン( download-epub.zip )

システム要件

圧縮にPEARのFile/Archive.phpを利用しているため、同パッケージを使える必要があります。

設置方法

サーバ側の設定

  1. Download ePubプラグインのフォルダをサーバのpluginフォルダにアップロードします。
  2. プラグインのフォルダ内にあるskeleton/OEBPSフォルダの属性を777にします。
  3. wp-content/uploads内にepubというフォルダを作成し、属性を777にしてください。
  4. wp-content/uploads/epubフォルダに以下を記した .htaccess を置きます(MIMEタイプの設定です)。
  5. AddHandler application/epub+zip .epub
    AddType application/epub+zip .epub
  6. ePubにフォントを同梱したい場合は、download-epub/skeleton/OEBPS/fontsにフォントをアップロードし、download-epub/skeleton/OEBPS/style.cssを適宜編集します。

WordPressの設定

ダウンロード用のリンクを挿入する場所を決めて下さい。たとえば利用しているテーマのsingle.phpを開き、適当な位置に

< ?php if(isset($ePub)) $ePub->ePublisher(); ?>

を挿入します。このタグはページが表示される際に

<div class="epub"><a href="%s" target="_blank">Download ePub</a></div>

というePubをダウンロードするためのリンクに変換されます(このリンクは任意の形式に変更できます。下記「設定項目」を参照して下さい)。

設定項目

download-epub.phpの32行目から37行目までが設定項目です。

$this->ePub_dir → 作成したePubファイルを保存するディレクトリ
$this->ePub_url → ePubが保存してあるフォルダのURL
$this->ePub_author → ePubの作者
$this->ePub_publisher → ePubの出版者
$this->ePub_language → ePubで使用している言語
$this->ePub_anchor_template → ePubダウンロード用アンカータグのテンプレート

32行のディレクトリは、デフォルトの「get_option(‘upload_path’) . “/epub”;」から変更する必要はありません。33行のURLは32行のディレクトリと等価ですが、「メディア」の設定で「アップロードするファイルの保存場所」を変更している場合、デフォルトの「get_option(‘siteurl’) . ‘/wp-content/uploads/epub/’;」では正しく動作しません。設定に応じて適宜修正して下さい。

アンカータグのテンプレートは、初期状態では
<div class=”epub”><a href=”%s” target=”_blank”>Download ePub</a></div>
となっています。「href=”%s”」以外の部分は変更可能ですので、お好きなように編集して下さい。

設置例

当サイトでは、使用しているテーマのsingle.phpを編集し、

<h1>< ?php the_title(); ?></h1>

となっていたところを、

<h1>< ?php the_title(); ?>< ?php if(isset($ePub)) $ePub->ePublisher(); ?></h1>

とし、ダウンロード用のリンクを挿入しています。リンクは

<div class="epub"><a href="hogehoge.epub" target="_blank">Download ePub</a></div>

の形式で挿入されるため、テーマのcssには次のクラスを追加しています。

.epub {
	float: right;
	background-image: url("../images/epub.png");
	background-repeat: no-repeat;
	background-position: center left;
	margin:0 15px 0 15px;
	padding-left:20px;
	font-size: 11px;
	font-weight: normal;
}

各エントリのタイトルの横にePubをダウンロードするためのリンクが本のアイコンとともに表示されていると思います。その見栄えを定義しているのが上のePubクラスです。[1]

次にフォントについてですが、日本語のフォントとしてIPAモナーP明朝(ipamp-mona.ttf)、中国語のフォントとして文鼎(Arphic)の簡体字宋体フォント(gbsn00lp.ttf)をプラグインのフォルダの plugins/download-epub/skeleton/OEBPS/fonts に加えています。

このフォントを使うため、plugins/download-epub/skeleton/OEBPS/style.css には次のような定義を加えています。

@font-face {
  font-family: "ipampmona", serif;
  src: url(fonts/ipamp-mona.ttf);
}
@font-face {
  font-family: "AR PL SungtiL GB", serif;
  src: url(fonts/gbsn00lp.ttf);
}
body {
  font-family: "ipampmona", serif;
  margin: 3%;
}
p {
  line-height: 150%;
  font-family: "ipampmona", serif;
  text-indent: 1em;
}
.cn {
  font-family :"AR PL SungtiL GB", SimSun, STSong, STKaiti, serif;
}

このプラグインの仕様および注意事項

このプラグインは、ページが表示される際にそのエントリに対応するePubファイルが存在するか否かをまずチェックします。もしまだ作成されていなければ、タイトルや本文を取り出してePubに変換し、wp-content/uploads/epub のフォルダに保存します。その後、ブログ内の指定された位置にアンカータグを挿入します。

Download ePubタグの挿入場所はsingle.phpをおすすめします。ePubファイルを作成する処理は、それほど重いものではありませんが、作成する数が多いとそれなりに時間がかかるため、index.phpなどに設置すると表示されるエントリの数だけePub作成処理が実行されます。作成処理が実行されるのはePubが存在しない1回目だけですがご注意下さい。

ePubのファイル名は、エントリのID+更新日時のタイムスタンプで構成されています。このことから予想がつくと思いますが、エントリの更新を行うと、ePubファイルもあらためて作成されますので、細かい修正を繰り返すとePubの保存フォルに同じようなファイルがたくさんできます。

バージョン0.1現在、圧縮まわりに不具合が残っています。今後修正する予定ですが使用する際はご注意下さい。

  1. 現在プラグイン停止中です。 []
2009/12/14

WP – FC2拍手の設置

by ctrans

FC2拍手の導入に苦戦したのでメモ。

FC2拍手は、以下のタグをWordPressの個別エントリのページの下にでも放り込めば使える。

1
2
3
<a href="http://clap.fc2.com/post/XXX(ユーザ名)/?url=XXX(URL)&title=XXX(Title)" target="_blank" title="拍手する by FC2">
<img src="http://clap.fc2.com/images/button/white/XXX(ユーザ名)?url=XXX(URL)" alt="拍手する" style="border:none;" />
</a>

ユーザ名にはFC2拍手の登録IDを入れ、あとはパーマリンクとエントリのタイトルを補えば良いのだが、ここではまった。結論からいうとパーマリンクはget_permalink、タイトルはthe_titleで取得し、どちらもurlencodeしたら動いた。タイトルはmb_convert_encodingをかまさないとダメみたいだった。

1
2
3
<a href="http://clap.fc2.com/post/ctrans/?url=<?php echo urlencode(get_permalink()); ?>&title=<?php echo urlencode(mb_convert_encoding(the_title("","",false),"UTF-8")); ?>" target="_blank" title="web拍手">
<img src="http://clap.fc2.com/images/button/white/ctrans?url=<?php echo urlencode(get_permalink()); ?>" alt="web拍手" style="border:none;vertical-align:middle;" />
</a>
2009/11/21

WP – archive.php の編集

by ctrans

このサイトで今使っているTitanというテーマはかなり気に入っているのだが、カテゴリー別のページに見出ししか表示されないのが不満だった。WordPressは中身をちゃんと理解していないのでカスタマイズできないまま放置→今日に至っていたが、夕方息子が寝てるすきにphpのファイルをだーっと眺めたら、なんとなく分かったような気がしたのでindex.phpの構造をそのままarchive.phpにコピペして作業完了。とりあえず動いているようなのでよしとする。

2009/11/13

WP – Simple Tweet 導入

by ctrans

twitter
WordPressで投稿すると自動的にtwitterで紹介できるようにしたかったのでSimple Tweetというプラグインを導入しました。ほかにもいくつかtwitter関連のプラグインはあるようですが、シンプルで導入も簡単そうなこちらのプラグインを選択。さてさて。

関連:WordPress › Simple Tweet « WordPress Plugins

2009/09/10

WordPress 導入したプラグイン

by ctrans

今ところ6つのプラグインを使用しています。

2009/09/04

特定カテゴリの非表示

by ctrans

メモ書きや日記のようなエントリまでトップページに表示されると美しくないのでどうにかしたかったのですが、アーカイブページで特定カテゴリーを非表示にする « eight and halfを参考にindex.phpを編集したら期待通りの状態を実現することができました。これで表示したくないカテゴリのエントリは隠すことができます(画面右の「Recent Articles」には表示されるので閲覧自体は問題なし)。感謝。

追記:この手法で特定カテゴリ非表示にすると、最大表示数を10件に設定している場合に最新エントリ10件が非表示カテゴリだと、トップページに何も表示されなくなってしまいます。何らかの回避策が必要ですね(09/09/10)。

結論:Advanced Category Excluderを導入しました。とても便利です。