Zope

一つ上に移動 Zope
Zopeに関連する雑多なアイテム

ZopeとXoopsの共存

Zopeは8080番ポートを使うため、アドレスが「http://hoge.com:8080/fuga」のようになるが、ポート指定するのが気持ち悪いというか見栄えが悪いように思えるので、Apacheのバーチャルホストを設定してやってこれを回避したい。
・Zopeの設定
Zopeの Root Folder にVirtual Host Monsterを追加する(IDは vhm とした)。

・Apacheの設定
mod_rewrite と mod_proxy が有効になっていることを確認し、バーチャルホストのディレクティブを設定する。

・Gentoo Linux & Apache 2.x の設定例

/etc/apache2/conf/apache2.conf
...
LoadModule proxy_module modules/mod_proxy.so
...
LoadModule rewrite_module modules/mod_rewrite.so
...
Include conf/vhosts/vhosts.conf
...


/etc/apache2/conf/vhosts/vhosts.conf
<VirtualHost hoge.com>
ServerAdmin webmaster@hoge.com
ServerName hoge.com
RewriteEngine on
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/hoge.com/VirtualHostRoot/$1 [P,L]
</VirtualHost>


これでめでたく http://hoge.com でZopeにアクセスできる。Root Folder 以外のフォルダに誘導したい場合は、RewriteRule の後尾の部分を「(略)/VirtualHostRoot/FolderName/$1 [P,L]」のようにすればよい。


しかし一方でウチのPCではXoops日本公式)も動いているので、リクエストすべてをZopeに持っていくわけにもいかない。

方針としては「Xoopsサイトに来るリクエスト以外のリクエストはすべてZopeに渡す」という風にする。ということで mod_rewrite の RewriteCond を設定し、リクエストされたアドレスをチェックしたときに、Xoopsサイトの名前があった場合は Zope に渡さないという風にする。

Xoopsサイトのアドレスを http://hoge.com/xoops1 および http://hoge.com/xoops2 とすると次のようになる。
<VirtualHost hoge.com>
ServerAdmin webmaster@hoge.com
ServerName hoge.com
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(xoops1|xoops2).* # この行を追加 #
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/hoge.com/VirtualHostRoot/$1 [P,L]
</VirtualHost>


・%{REQUEST_URI}
→リクエストされたアドレスをチェック

・!^/(xoops1|xoops2).*
→正規表現。「!」は否定。「^/(xoops1|xoops2).*」は xoops1 または xoops2 という言葉を含むことを表す。すなわち全体としては、xoops1 または xoops2 という言葉を含まない、ということを示す。この条件に当てはまったリクエストを RewriteRule に基づいて書き換える。

これで http://hoge.com/xoops1/ などXoopsに関係したアドレスはそのままに、それ以外のリクエストをZopeに渡すようになった。めでたしめでたし。
トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/1/tbping

COREBlogRefererPluginの ignore host

ReadMeファイルとかなかったのでいろいろ試行錯誤してみたのだが、どうやら、
・http://hoge.com/ のようにアドレスを丸ごと書く
・複数記述する場合は、改行して並べる
というふうであるようだ。

カテゴリ
Zope Zope
COREBlog1 COREBlog1
トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/2/tbping

COREBlogのアイコン設定四苦八苦

COREBlogのカテゴリータブにはオプションでicon pathというのがある。前々から気にはなっていたがアイコン作るのも面倒なので放置していた。が、Gentooのロゴくらいは付けてみるか、ということでicon pathを設定してみた。

・COREBlog > Contentsタブ > images の中に icon_gentoo という画像を用意
・COREBlog > Categoriesタブ > Gentoo Linux の icon path に images/icon_gentoo を設定

何にも表示されんがや…。iconとcoreblogをキーワードにぐぐってみてもよくわからん。日本語のページだけしか検索しとらんけどさ…。

index_htmlを見てみると、entry_bodyというのをよんでいるようなのでentry_bodyを見てみると…

<dtml-comment>* Show categories.</dtml-comment>
<div class="category">
<dtml-in entry_category_list>
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
[<dtml-var name missing="category name is missing">]
</a> 
</dtml-in>
</div>

これですなぁ。<dtml-var name missing="category name is missing">でたぶんカテゴリの名前を表示しとるんだろう。名前じゃなくてアイコンが表示したいんだけどな…。うーん。アイコンのパスはどこに保存されとるんやろ。
ということでCOREBlogの中身をのぞいてみた。

zope-instance/Products/COREBlog/ の中にCategory.pyてのがあるぞ。正直PythonのPの字もしらんけど、興味深い記述発見。

def __init__(self,id,name,description,icon_path="",created = -1):
self.id = str(id)
self.name = name
self.description = description
self.icon_path = icon_path

これがたぶんカテゴリのidやらnameやらをいじくってるとこだなと予想する。しかもicon_pathってのがあるじゃないか。
<dtml-var name missing="category name is missing">で名前が設定されるなら、<dtml-var icon_path>とかにすればよろしいのかな?

と、ここでふと立ち止まる。今アイコンが設定されとるのはGentoo Linuxカテゴリだけだ。icon_pathが設定されてるときはアイコン表示して、設定されてないときは名前を表示するようにせんとあかんですな。

ということはdtml-ifを使うのか…。実際に使ったこと無いからよくわからんが、手元にZopeの本があるので調べてみた。説明の言葉がよくわからんけど、

<dtml-if name="title">
The title of this object is: <dtml-var name="title">
<dtml-else>
This object has no title.<br>
The Id of this object is:<dtml-var name="id">
</dtml-if>

うーむ。なかなか興味深い例だ。name="title"のとこは「'title'変数が存在し、真値を返すか?」という意味らしい。よくわからんけど、存在すればいいんだろう。たぶん。

今回のケースでは
・icon_pathが設定されている(存在している)場合:アイコンを表示
・icon_pathが設定されてない(存在していない)場合:名前を表示
だから、

<dtml-if name="icon_path">
<img src="<dtml-var icon_path>">
<dtml-else>
<dtml-var name>
</dtml-if>

こんな感じ?
あとはリンクを貼ればいいのか。ということは、もともとのソースを参考にして、

<dtml-if name="icon_path">
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
<img src="<dtml-var icon_path>">
</a>
<dtml-else>
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=">
[<dtml-var name missing="category name is missing">]
</a>
</dtml-if>

こんな感じ?
dtml-var icon_path と dtml-var name="icon_path" の違いがよくわからんけど、とりあえずこれでやってみる。

うお。できた。
画像が左よりになって、しかも文字が回り込んでるけど、とりあえず表示はできたぞぅ。あとはcssとかで右よりにして回り込みせんようにすればいいのか。うーむ。ほんとにこれでいいのだろうか…。
とりあえず今のentry_bodyのカテゴリのとこはこうなってます。

<dtml-comment>* Show categories.</dtml-comment>
<div class="category">
<dtml-in entry_category_list>
<dtml-if name="icon_path">
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
<img src="<dtml-var icon_path>">
</a>
<dtml-else>
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
[<dtml-var name="name" missing="category name is missing">]</a>
</dtml-if>
</dtml-in>
</div>


ちなみにここに書いてあるソースでタグ付けされてるやつの"<"は全部全角になってるので、コピーペーストすると大惨事になります。はい。
カテゴリ
Zope Zope
COREBlog1 COREBlog1
トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/19/tbping

icon_pathを使ってみる

投稿者 PrinCo. 投稿日時: 2006年08月06日 17時38分
NAGOSUI.ORGさんのところにCOREBlogのアイコン設定四苦八苦って記事がΣ(・д・) 象歩さんのところにもカテゴリのロゴを表示って記事があるよ!PrinCoでは下みたいな感じ(アンカーとイメージタグは表示の都合で改行入れたけれどほんとは一行)。 NAGOSUI.ORGさんのところにCOREBlogのアイコン設定四苦八苦って記事がΣ(・д・) 象歩さんのところにもカテゴリのロゴを表示って記事があるよ!PrinCoでは下みたいな感じ(アンカーとイメージタグは表示の都合で改行入れたけれどほんとは一行)。

カテゴリリストでもアイコンを表示しようかなと。

とりあえずindex_htmlのカテゴリにはアイコンが表示されるようになったけど、カテゴリリスト(categorylist_html)にもアイコンを表示させたいので以下のように変更。

<dtml-comment>
* Show all categories in the blog .
</dtml-comment>
<div class="category">
<dtml-in category_list>
<dtml-if name="icon_path">
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
<img src="<dtml-var icon_path>">
</a>
<dtml-else>
<a href="<dtml-var blogurl missing="">
/categorylist_html?cat_id=<dtml-var id>">
[<dtml-var name missing="category name is missing">]
</a>
</dtml-if>
</dtml-in>
</div>


これでカテゴリの名前の代わりにアイコンが表示されるようになった。

しかしどうだろう。アイコンだけでいいのかな。Gentooのロゴみたいに比較的有名でわかりやすいものならいいけど、もしアイコンがわかりにくかったら?ちょっとあかん。
名前とアイコン両方を表示させよう。index_htmlの方は今のままアイコンだけ表示でいいや。
とりあえずtableでやってみる。
一行目にアイコン、二行目にカテゴリの名前で、カテゴリの数だけ列がある、というふうで。

<dtml-comment>
* Show all categories in the blog .
</dtml-comment>
<div class="category">
<table>
<tr>
<dtml-in category_list>
<td>
<dtml-if name="icon_path">
<a href="<dtml-var blogurl missing="">/
         categorylist_html?cat_id=<dtml-var id>">
<img src="<dtml-var icon_path>">
</a>
</dtml-if>
</td>
</dtml-in>
</tr>
<tr>
<dtml-in category_list>
<td>
<a href="<dtml-var blogurl missing="">
        /categorylist_html?cat_id=<dtml-var id>">
[<dtml-var name missing="category name is missing">]
</a>
</td>
</dtml-in>
</tr>
</table>
</div>


さて、どうなるかなぁ…。

うーむ。できたはできたけど、きたないなあ…。css設定しないとダメだなぁ。table使うのも微妙だなぁ。次の課題はcssですかな。
カテゴリ
Zope Zope
COREBlog1 COREBlog1
トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/20/tbping
このBlogについて
Plone, Zope, Pythonなどのトピックについてのメモです。
カテゴリ
Plone (98)
Plone Products (23)
COREBlog2 (31)
COREBlog1 (29)
ReadingCOREBlog (7)
Zope (66)
Turbogears (18)
Django (12)
Python (25)
Linux (30)
Nagosui (12)
Design (33)
Misc (48)
moblog (5)
最近のエントリ
浜松ブラスバンド定期演奏会2008 nyusuke 2008年11月24日
Glossy Horizontal Menuを使う nyusuke 2008年11月17日
第3回Python東海終了 nyusuke 2008年11月17日
Universalじゃない件 nyusuke 2008年11月15日
最近のコメント
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007年06月01日
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007年05月31日
Re:東海Python Workshop 01終了 nyusuke 2007年05月31日
Re:東海Python Workshop 01終了 kfuruhata 2007年05月30日