Plone

アクセス数増加

analogを使って、このサイトのアクセス解析をしてみました。昨年10月のオープン以降順調にアクセス数をのばしております。良い感じです。もちろんこの解析には「書き込みのため自分でアクセスした分」は入ってません。まだまだアクセス数は少ないですが、これからも徐々にコンテンツを充実させていきますので、皆様のあたたかいご支援をお願いします。

COREBlog2 0.81a

COREBlog2を0.81aにバージョンアップしました。ついでにPloneを2.1.2にしようと思って試したのですが、場合によって改行が無視されたりして表示が崩れたので、あきらめました。現在の運用はPython2.4.2,Zope2.9.0,Plone2.1.1,COREBlog2 0.81aです。zope2.9を使っているのがそもそも間違いのような気がします。ま、とりあえず動いているから良いか。

Ploneの情報源

インタネットから

大抵の情報はインタネットから収集可能。私が頻繁に訪れるサイトたち。

  1. plone.org
    本家本元。ページ右上の検索フィールドにキーワードを入れて検索可能。(これ、ちょくちょくやってます。)
  2. zope.org
    zopeの本家。英語が読めるなら、ここのDocumentにあるTheZopeBookを読みましょう。
  3. python.org
    pythonの本家。pythonのリファレンスはマニュアルここにある。日本語訳はpython.jpで。
  4. CENTRAL CORE さん
    COREBlogの開発元。Plone上でBlogをするとすれば、これを使うのが良いでしょう。
    上の”DevCamp”リンクから合宿(ZopeDevelopersCamp)の資料が見られる。
  5. takanory.net さん
    ploneのカスタマイズ法がかなり詳細。
  6. Emerge Technology さん
    ここにもPloneの情報が沢山。

書籍から

小さいテクニックはWebから検索すれば大抵分かるけど、体系的に概念や思想を学ぶには書籍が良いと思う。実際に私が傍らに置いている本は以下の3冊。

  1. 開発のプロが教える標準Plone完全解説
    ISBN4756146090 Amazonはここ
    Plone2.0に関する解説本。今のところ日本語で読めるのこれだけ。
    元の英文のドキュメントはこれ
  2. Zopeガイド
    ISBN4839907900 Amazonはここ
    2002年出版と、ちょっと古いんだけど、訳本ではなく日本人が書いているのが良いところ。
  3. 初めてのPython(第2版)
    ISBN4873112109 Amazonはここ。オライリーの動物シリーズ。表紙はモリネズミ。
    Pythonの入門書です。Pythonでコードを書くなら、ちょっと分厚いけど通読することをオススメします。リストやディクショナリの使い方、クラス、例外など一通りのことが学べる。
    リファレンス本はバージョンが古くなるから買ってない。

テンプレートの基本

Ploneではテンプレート機能があって(ZoptPageTemplate)、テンプレート中ではいろんな函数が使える。
様々の函数が名前空間という分類で分けることが出来る。代表的なのはTAL,METAL,I18Nの三つ。

TAL(Template Attribute Language)

  1. attributes 属性を付け替える
    <a href=”hoge” tal:attributes=”href context/absolute_url”>
    → <a href=”http://shonan-maguro/thispageurl”>
    hogeがabsolute_urlの値に書き換えられる。”hoge”は失われる。
  2. content 中身をすげ替える
    <li tal:content=”context/title_or_id”>hogehoge</li>
    → <li>テンプレートの基本</li>
    要素liの中身がhogehogeからtitle_or_idの値に置き換えられる。
  3. replace タグを削除して置き換え
    <li tal:replace=”context/title_or_id”>hogehoge</li>
    → テンプレートの基本
    タグliは失われる。
  4. condition 条件判断
    <div tal:condition=”request/hoge”>ほげ</div>
    request/hogeが真→ <div>ほげ</div>
    request/hogeが偽→ (何も出ません。divすら無くなる)
    真の場合にはそのタブの内容が出力される。
  5. define 変数定義
    <ul tal:define=”results here/getResults”>hoge</ul>
    → <ul>hoge<ul>
    変数resultsにgetResultsの内容が入れられる。”;”で区切ることで複数の代入が可能。
    “a here/tako ; b here/ika” → aにtako,bにikaが代入される。
  6. repeat 繰り返し
    <li tal:repeat=”result results”><span tal:replace=”result/Title”>hoge</span></li>
    → <li>タイトル1</li> <li>タイトル2</li> …..
    resultsにはあらかじめTitleを属性に持つ何かのリストを入れておく。その何かが一つずつresultに入れられループする。
    pythonの for result in results: みたいな感じ。

METAL(Macro Expansion Template Attribute Language)

TALのマクロ拡張版って感じ。

  1. define-macro マクロの定義
    <div metal:define-macro=”getResult”> </div>
    → 空っぽ。
    マクロの定義が行われて、HTML出力としては何も出ない。
  2. use-macro マクロの使用
    <div metal:use-macro=”dokoka/getResult”></div>
    → マクロの実行結果
    上 のmacro-defineで定義されたマクロが実行され、その出力が出てくる。getResultは他のテンプレート上に存在しても良いので、 “dokoka”に使いたいマクロが定義されたテンプレートの場所を書く。同じフォルダにあるテンプレート(tako)の場合は “here/tako/macros/getResult”。同じファイル中にあるなら”template/macros/getResult”。
  3. define-slot スロットを定義する
    ス ロットとは差し込み口のこと。何かを入れるための容器を用意する感じ。Ploneのページは沢山のスロットにいろんなコンテンツをはめ込むことで実現され ている。ZMIのプローンサイト→portal_skins→plone_template→main_templateを見ると沢山のスロットがあるの が分かる。例えば、このページの左側にある「ナビゲーション」を表示しているところがleft-slotsだったりする。
    <div metal:define-macro=”time”>
    <div metal:define-slot=”msg”>hogehoge</div>
    </div>
    define-slotはどこかのマクロに含まれていなければいけない。データを差し込むのはfill-slotを使う。
  4. fill-slot スロットにデータを入れる
    <div metal:use-macro=”template/macros/time”>  ←  同じファイルにマクロが定義されている場合
    <div metal:fill-slot=”メッセージだよん”></div>
    </div>
    → <div><div>メッセージだよん</div></div>

I18N(Internationalization)

国際化。INTERNATIONALIZATION=”I-18文字-N”だから一般にI18Nと略される。ちなみにLOCALIZATIONはL10N。
ま、ぶっちゃけ「いろんな言語に対応できるよ」ってこと。
<p i18n:translate=”XXX”>Welcome to Plone.</p> のように使うらしい。詳しくはここ
すみません、まだ良く理解してないです。分かるようになったら追記します。

IPアドレスに応じて表示を変える

LAN内からのアクセスと、外部からのアクセスを判定しコンテンツを表示したり隠したり出来る。例えば広告を内部からアクセスされたときは表示しないようにしたいなど。

書籍ZopeガイドにはDTMLを使って行う方法が紹介されているが、ここではZPTを使って制御する方法を示す。

  1. 表示制御したい内容を囲む要素を見つける
    大抵はdivとかspanで囲まれているでしょう。隠したいものを囲む一番外側のdivを見つける。
    divで囲まれていなかったら、<div>隠したいもの</div>とか<span>隠したいもの</span>の様に囲ってください。
  2. 先頭の<div>を以下のように追加する。
    <div tal:condition=”python:request.REMOTE_ADDR != ‘192.168.1.100′”>
    IPアドレスの部分は内部のマシンのアドレスを書いてください。

以上で完了。この特定のIPアドレスからのリクエストに対しては「隠したいもの」が出力されなくなる。

トラックバック出来ない?

この自宅鯖のアクセスログに時々”GET ……/tbping…… 503″ってのがある。このブログのトラックバック用のURLへのGET要求。503はサーバエラー。ひょっとしてトラックバックに失敗してるの?と思って私の他のブログからトラックバックしてみた。”POST …./tbping 200″とログられて、トラックバックは成功した。とりあえず安心。
ググったら、トラックバックはPOSTメッセージを飛ばすことになったらしい。最近のMovableTypeでもPOST形式のトラックバックしか受け付けないそうだ。では、この古い形式のトラックバック要求は何だ?トラックバックスパムって奴なのか?

今日は朝から雪。この地方では珍しく5cmくらい積もっている。今日一日降るらしい。

portalタブに表示される順序を変える

Plone2.1をデフォルトで使っていると画面上部にあるポータルタブという領域にフォルダが勝手に追加されていく。この順序を変更するにはどうすれば良いか。

昔のPloneではZMIのportal_actionsの順序を変更することで対応していたが、Plone2.1からはそもそもここにフォルダアイテムが出てこない。
ルートにあるフォルダはナビゲーションにある順で並んでいるだけである。この順を変えればいい。

  1. ZMIではなく、ブラウザでploneホームを開く
  2. 「コンテンツ」タブをクリックしてコンテンツ一覧を出す。
  3. テーブルの右端の「順序」のところにある三角マークでアイテムを上下に移動させる。

以上。ZMIに入らなくて良いのでラクチンです。

 

« Prev - Next »