数少ない Blog プロダクトのひとつ「SimpleBlog」は Plone4 に入れようとしてもそのままではエラーが出て動かない(3.xなら動くんだけど)。そこで素人なりに修正した結果とりあえずは動作するようになったのでそれのメモ。
※ 2013/8/6 追記:この記事を書いていたときは Plone 4.0 で動作確認していました。それ以降で動くかどうかは不明。
もくじ
ファイルの入手
simpleblog-3.0beta2.tar.gz を入手する。Plone 公式の Products ページからは落とせないので、ファイル名でググって手に入れるか、もしくは持っている人を探して譲ってもらう。
入手したら、適当な場所にアーカイブを展開する。
プロダクトの修正
インストールできるようにする
このままだとインストールすらできないので、まずはそこをクリアする。
- SimpleBlog\content\blogfolder.py
- インポート文追加。
1from plone.app.blob.config import packageName
- 最終行のregisterTypeの引数変更。
123registerType(BlogFolder)↓registerType(BlogFolder, packageName)
- インポート文追加。
記事追加(正確には追加した記事の表示)時に落ちるので、それの対処。
- SimpleBlog\skins\SimpleBlog\simpleblog_byline.pt
- 冒頭のspanタグのtal:defineに以下を追加。
1mtool python:context.portal_membership;
- 52行目くらいのdivタグのtal:defineに以下を追加。
123wtool context/portal_workflow;mtool python:context.portal_membership;portal context/@@plone_portal_state/portal;
- なんだか知らないけどここが原因で落ちるので最後のほうの以下の部分を削除(履歴表示部分はなくてもいいかと思ったので)。
1<span metal:use-macro="obj/review_history/macros/review_history" />
- 冒頭のspanタグのtal:defineに以下を追加。
- SimpleBlog\skins\SimpleBlog\SimpleBlog_macros.pt
- 7行目、28行目、49行目のdtタグのtal:defineに以下を追加。
1normalizeString nocall: context/plone_utils/normalizeString;
- 7行目、28行目、49行目のdtタグのtal:defineに以下を追加。
設定画面表示時に落ちる部分の対処。
- SimpleBlog\skins\SimpleBlog\prefs_simpleblog_form.cpt
123tal:attributes="tabindex tabindex/next"↓tal:attributes="tabindex tabindex/next|nothing"
新規作成ドロップダウンに画像とファイルが追加されない問題の対応
かなり適当な部分。permission 絡みというところまではわかったけど、どこをどう直せばいいのかさっぱりわからないので…
- SimpleBlog\__init__.py
- インポート部分を変更。
123456from Products.SimpleBlog.Permissions import wireAddPermissionsfrom Products.SimpleBlog.Permissions import permissions↓from plone.app.blob.config import permissionsfrom Products.CMFCore.permissions import setDefaultRolesfrom Products.SimpleBlog.Permissions import sPermissions
- 31行目(
allTypes = zip(content_types, constructors)
の前)に以下を追加。12345678910TYPE_ROLES = ('Manager', 'Owner')blog_types = listTypes(PROJECTNAME)for btype in blog_types:perm = "%s: Add %s" % (PROJECTNAME, btype['portal_type'])setDefaultRoles(perm, TYPE_ROLES)permissions[btype['portal_type']] = perm# ↓ここがベタ書きの部分permissions['Blog'] = "%s: Add %s" % (PROJECTNAME, 'Blog')permissions['BlogEntry'] = "%s: Add %s" % (PROJECTNAME, 'BlogEntry')permissions['BlogFolder'] = "%s: Add %s" % (PROJECTNAME, 'BlogFolder') - 33行目の
wireAddPermissions()
削除。 -
ContentInit の引数変更。
123permission = permissions[atype.__name__],↓permission = permissions[atype.portal_type], - SimpleBlog\Permissions.py
- 変数
permissions
をsPermissions
にリネーム。
- 変数
- インポート部分を変更。
どうしてこう直そうと思ったのかは忘れた。紆余曲折を経て上記の修正で一応動くようになったことはなったけど詳しい人から見たらデタラメなんだろうなぁ。
プロダクトの配置
products フォルダに配置する。
おまけ
見栄えを変更したい場合は、SimpleBlog\skins\SimpleBlog 内の SimpleBlog_macros.pt、simpleblog_view.pt などを編集する。このサイトでは <dl>
、<dt>
、<dd>
で表示される部分を <div>
、<h2>
、<p>
に変更して使っていた。