Plone Advent Calender 2011 (10日目)
今までもPlone系のイベントに参加したいと思ってはいたのですが、北海道に住んでいるとやはり難しいです。
それでも、アドベントカレンダーのようなネット上のイベントであれば参加可能なので、今後は可能な限り参加させていていただきたいと思っています。
という事で、Plone Advent Calender 2011、寺田さん(@terapyon 9日目記事)に続き、自分担当分としては2回目の記事は前回の続きです。
概要
前回はページアイテムに独自の表示形式を追加しました。
今回は、その表示形式を選択した際のページフッターにFacebookコメントプラグインが表示されるようにしていきます。
(最後に表示形式の名称を翻訳する方法についても触れます。)
PageTempalteを完成させる
ここまで使用してきた最低限page templateの内容を埋めていきます。
基本はデフォルト表示形式をそのまま使用したいので、ページアイテムのデフォルトのページテンプレートの内容をコピーします。
補足として、page templateファイルの探し方について触れておきます。
- ZMIでportal_typesに行き、Document(Page)を開きます。
- Default view methodの値が、document_viewである事がわかります。
- 次にZMIでportal_skinsに行き、Findタブのwith ids:にdocument_viewと入力し検索をします。
- plone_content/document_viewがヒットするので、これを開きます。
- Source fileを見るとファイルのフルパス名がわかります。
このファイルをexsoft.fbcommentviewパッケージにfb_comment_document_view.ptとしてコピーし、これを編集していきます。
$ cp [original document_view.pt] $PKG_ROOT/fb_comment_document_view.pt
Facebookコメントプラグインのコードは以下から取得します。
https://developers.facebook.com/docs/reference/plugins/comments/
表示されたコードをfb_comment_document_view.pt内のページフッター部に貼付けます。
$ vim $PKG_ROOT/fb_comment_document_view.pt
<html>
...
<!-- fb comment -->
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-comments" data-href="www.exsoft.net" data-num-posts="2"
data-width="500"></div>
</metal:content-core>
</body>
</html>
この時点でブラウザからページを見るとFacebookコメントが追加されているはずです。
[表示形式]を通常に戻すとFacebookコメントが消える事が確認できると思います。
翻訳する
動きとしては以上で完成しましたが、[表示形式]がfb_comment_document_viewと、viewの名前になっているので、最後にこの部分を日本語に翻訳したいと思います。
先ずは翻訳ファイルを所定の場所に作成します。
$ mkdir -p $PKG_ROOT/locales/ja/LC_MESSAGES/ $ vim $PKG_ROOT/locales/ja/LC_MESSAGES/plone.po
msgid "" msgstr "" "Project-Id-Version: Examples\n" "PO-Revision-Date: 2011-12-01 23:35+0900\n" "Last-Translator: Junichi Yazaki (jy) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0\n" "Language-Code: ja\n" "Language-Name: Japanese\n" "Preferred-Encodings: utf-8 latin1\n" "Domain: plone\n" msgid "fb_comment_document_view" msgstr "ページ with Facebookコメント"
作成した翻訳ファイルをコンパイルします。
$ cd $PKG_ROOT/locales/ja/LC_MESSAGES/ $ msgfmt -o plone.mo plone.po
最後に翻訳ファイル(というかディレクトリ)の登録を設定ファイルに追記します。
$ vim $PKG_ROOT/configure.zcml
<i18n:registerTranslations directory="locales" />
Ploneを起動します。
$ cd $INSTANCE_ROOT $ bin/buildout $ bin/instance fg
表示形式が翻訳されている事が確認できます。
完成です
おつかれさまでした。
Advent Calendar 11日目は、またまた@takanoryさん、よろしくお願いします!
