Personal tools
You are here: Home なごぶろ Categories COREBlog1

COREBlog1

Up one level COREBlog1
COREBlog1に関するトピック

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に渡すようになった。めでたしめでたし。
The URL to Trackback this entry is:
http://nagosui.org:8080/Nagosui/COREBlog2/1/tbping

COREBlogRefererPluginの ignore host

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

The URL to Trackback this entry is:
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>


ちなみにここに書いてあるソースでタグ付けされてるやつの"<"は全部全角になってるので、コピーペーストすると大惨事になります。はい。
The URL to Trackback this entry is:
http://nagosui.org:8080/Nagosui/COREBlog2/19/tbping

icon_pathを使ってみる

Posted by PrinCo. at Aug 06, 2006 05:38 PM
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ですかな。
The URL to Trackback this entry is:
http://nagosui.org:8080/Nagosui/COREBlog2/20/tbping

COREBlogのアイコン表示調整

アイコン表示はできたけど、見た目を調節するためにcssをいじろうと思ったわけで。
style_cssでカテゴリを調節してるのは以下の部分であるようだ。

.category {
font-size: x-small;
line-height: 110%;
text-align:right;
margin: 0 0 2em 0;
}


そもそもアイコン表示はデフォルトでは設定されてないわけで、cssの設定もテキスト表示を調節するものが基本ですな。マージンの設定はブログのタイトルと本文との距離を調節する意図でこうなってるのだろうか。

と思ったのだが、現状のアイコンの位置でもそんなに悪くないな、と。cssでいじるのはマージンだけにして、後は改行だけいれておけばいいか。

cssはマージンのみ変更。

.category {
font-size: x-small;
line-height: 110%;
text-align:right;
margin: 10px; ←変更
}


あとはアイコンのイメージタグのあとに改行いれればOKということで、entry_bodyにちょびっと手を加える。

<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>
<br clear="all"> ←付け加え


たーだーしー!これだけだとアイコンのまわりにボーダーが表示されてしまうので、ボーダーはなくしてしまおう。ということで、style_cssにちょびっと手を加える。以下付け加え。

A img {border: 0;}


とりあえずindex_html関係のアイコン表示はよしとしよう。

The URL to Trackback this entry is:
http://nagosui.org:8080/Nagosui/COREBlog2/21/tbping