前 [付録A:リソース] | 目次 | 次 [付録C:商業利用のPlone]

付録B:よくある質問と処方箋

よくある質問

Credits: Amr Malik intial FAQ's

静的要素がキャッシュされないようだ。。。なぜ?

Alan Runyan:Zopeの大黒柱の一つは獲得(Aquisition)です。教祖が「だれもはた迷惑な獲得を予想したりしないよ!」というのを言うのを聞くのは一般的です。これは通常は、誰かが獲得を認識していないで獲得におんぶされていることを意味します。最も一般的なケースの一つは、人がPlone/CMF/Zopeの一番上にスキンを書いた時に、それらのリソースの絶対URLを定義しないことです。共通の間違いがスタイルシートの中でも起こります。例えばhttp://site/site.css や/site.css の代わりにsite.cssと書くよう絶対指定しなければ、サイトはただちゃんと動くでしょう。ですが、http://site/about/usを訪ねた時に、もし相対的URLに頼っていたら、それはhttp://site/site.css の代わりに、http://site/about/site.css を取ってこようとするでしょう。ブラウザのリソースキャッシュを活用してください。そして相対URLと獲得に注意してください。これで*あなたも はた迷惑な獲得を予想できるようになりましたね。

「議論を許す」 とはどういう意味ですか?

CMFの中のどのようなコンテンツオブジェクトにでもスレッド化された議論を付加することができます。もしあなたがオブジェクトで議論を許せば、add commentボタンがコンテンツの下部に表示されるでしょう。

Zope2.6とPloneを動かしていると「global name localzone is not defined」というメッセージを見る。

Zope2.6は欠陥のあるDateTime.pyバージョンと共に出荷されました。単純に$ZOPE/lib/python/DateTime/DateTime.pyをこの正しいバージョンに取り替えて下さい。

私のPloneはLinuxでたった数時間か数日しか連続稼働しない。何が問題なんだろう?

Alan Runyan:PloneはZopeアプリケーションサーバの上で動いています。ディフォルトではZopeはstartスクリプトの中に -D が記述してあるデバッグモードで出荷されています。もしデバッグモードで動かしていたら、すべての出力がコンソールに記録されています。もしZopeをデバッグモードで起動し、そしてあなたがログアウトしたら、何かを出力しなければならない次の時には制御ターミナルを見つけることができずに死んでしまうでしょう。(すでにログアウトしているから)。startスクリプトから -D を取り除きます。

どのようにして記事を相互に関連付けるのか?

最初に関連スロットを活性化しなければなりません。これはディフォルトでは行われません。これをするための情報は第X章を見てください。

もしメタデータの中でキーワードを共有するなら、それらは自動的に関連づけられます。これを関連ボックスから知ることができます。良い例として次のようなものが挙げられます。何か小さなコンテンツを作り、メタデータのフォームの中でTopicKeywordというキーワードを追加し、そして保存します。システムの中でもうひとつの別の小さなコンテンツを作り、TopicKeywordというキーワードを追加します。どちらかのコンテンツを見る時には、左側にある関連ボックスの中に他のコンテンツを見ることができるはずです。

シンジケーションとは何?

シンジケーションはRSS 1.0 形式のフォルダにある最後の10個の更新されたオブジェクトを見せてくれます。この形式は他のプログラムに読み込まれるように設計されました。

これらのすべてのインターフェースは XHTML/CSS/Javascript 1.3/TALで行われているんですか?

はい、そうです。これはページテンプレートと共に100%有効なXHTMLです。

コンテンツはWebDAV、FTP、またはMicrosoft Web フォルダーを通してアクセスできますか?

はい、できます。第二章を見てください。

CMFよくある質問はどこにありますか?

CMFよくある質問はhttp://cmf.zope.org/doc/FAQにあります。

私はPloneに貢献したいと思います。どのようにしたら参加することができるのですか?

もし時間があり、率先してやる気があり、オープンソース界でCMF Ploneを最高のコンテンツ管理システムにすることを助けたいと思うのなら、Ploneに参加するにはいくつもの方法があります。いくつかの領域において、私たちはドキュメンテーション、開発者、テスト、ユーザーインターフェースの専門的技能が必要です。Ploneユーザーメーリングリストにあなたが助けたいということとあなたが助けることができる分野を書いたEメールを送って下さい。そうしたら誰かがあなたに連絡をとることでしょう。

なぜPloneコントローラはZopeアラーム(又は他のファイアーウォール)の警告を発生させてしまうのですか?

Windows のPloneコントローラはPloneの状態をチェックする必要があります。最も簡単でも最も信頼できる方法はHTTP接続でサーバと接続することです。これはあなたのローカルPloneインスタンス以外には接続しませんし、接続を許すことがセキュリティ上の問題を起こすことはありません。

この __getitem__ errorとは何ですか?

Jean Jordann: 私は完璧に機能するPloneのあるZopeサイトを一つか二つ持っています。私はあっちこっちクリックして異なるスキンやプロダクトを試して遊んでみました。とはいえ、ある時、サイトを見ているときに、 「__getitem__」 エラーに遭遇しました。

例えば、新しいスキンを作成したりするようなZopeZenのようなプロダクトをインストールしたりあるいは自分で新しいスキンを作成したりして新しいスキンに切り替えたならば、ブラウザはこのスキンに対応したplone_skinというクッキーを得ます。ここであなたはスキンを削除するか、またはプロダクトがスキンを供給しますが、ブラウザを閉じないでいます。もし新たに同じPloneサイトを見ようとすれば、下記のようなトレースバックを得ることになるでしょう。


                Traceback (innermost last):

                Module ZPublisher.Publish, line 98, in publish

                Module ZPublisher.mapply, line 88, in mapply

                Module ZPublisher.Publish, line 39, in call_object

                Module Products.CMFCore.PortalContent, line 113, in __call__

                Module Products.CMFCore.utils, line 156, in _getViewFor

                Module OFS.Traversable, line 158, in restrictedTraverse

                Module OFS.Traversable, line 143, in unrestrictedTraverse

                - __traceback_info__: ([], document_view)

                AttributeError: __getitem__

            

ブラウザから関連するクッキーを削除します。

処方箋

処方箋は人々がPloneを使いながら発見した役に立つ小技の集まりです。

Credits: Paul Everitt

私が動かしているPloneのバージョンは何だろう?

もし、バグを報告したり助けを求めたいと思ったならば、動かしているソフトウェアのバージョンについてPloneコミュニティが気さくで熱心に知りたがることに気付くでしょう。

Ploneのバージョンを知るには、Zopeサイトのコントロールパネルに行きます。もしZopeサイトがhttp://localhost:8080/で走っているなら、コントロールパネルは http://localhost:8080/manage へ行き、左側にあるフォルダーリストの中のControl_Panelをクリックします。次に右側の枠の中のProduct Managementをクリックし、次にCMFPloneをクリックします。Propertiesタブをクリックします。バージョン番号はversionの横に表示されます。

Zopeのバージョンを知るには、フォルダーリストの中の Control_Panel アイコンを単純にもう一度クリックします。Zopeのバージョン、Pythonのバージョン、オペレーティングシステムのバージョン、そしてそれ以上のものについて情報を見つけることができます。

タイトルと説明はどこで使われるのか?(メールテンプレートとRSS配信)

新しいPloneサイトを追加する時にタイトルと説明を聞かれるでしょう。これらの情報はどこで使われるのか?主にRSS配信とPloneによって送られるEメールです。例えばメンバー登録の最中とかです。

どのようにしてメンバーをプロモートすることができるのか?

Ploneサイトで一緒に働きたいと思う誰かがいるとします。どのようにしてその人に参加するための十分な許可を与えることができるのでしょうか?

最も簡単な方法は彼らにマネージャのロールを与えることです。最初にその人が通常のメンバー登録プロセスでPloneサイトに参加したことを確認してください。次に、あなたのサイトが http://localhost:8080/plone/であるならば、http://localhost:8080/plone/manageでZMIを開いて下さい。画面左にあるフォルダーリストの中で、acl_usersをクリックします。その人のユーザー名をクリックして、さらに Manager ロールをマルチプルクリック(Windowsではシフトを押しながらクリック)します。Changeをクリックする前にユーザーがMemberロールをまだ持っていることを確認してください。

マネージャロールはその人にテンプレート、ユーザー管理、そしてもっといろいろなものを含むサイト内のすべてのものについて許可を与えます。もしその人に限定された許可を与えたいと思うなら、サイトの一部というよりも多くの許可を与えるZopeの ローカルロール という概念を使うことができます。

これをするには、そのメンバーと一緒に働きたい領域、あるいはそのメンバーに責任を持ってもらいたいコンテンツのところへPloneの中でナビゲートします。ナビゲーションボックスの中でSwitch to Contents viewをクリックします。次にlocal rolesというタブをクリックします。

彼らに許可を与えるのは二段階のプロセスです。最初はメンバーを見つけます。そして次に彼らに許可を与えます。 Search byの中で、User nameを選び、そしてSearch Termの中でメンバーの名前を提供します。次にperform searchをクリックします。

次の画面で、検索結果を見ることでしょう。Role to assign ボックスの中でManagerを選択します。次に assign selected role to user(s)をクリックします。

ローカルロール機能はとても強力で柔軟です。新しい役割を作ることができ、これらの役割に付与する権限をカスタマイズすることができます。とはいえ、どきどきするようなZopeセキュリティ管理インターフェースと直面することになります。

私のPloneの外側に私は存在できるか?

いいえ、これはカミュの小説の冒頭ではありません。もしZopeの管理者アカウントをすでに持っているなら?あるいは、もしひとつのZopeプロセスの中で複数のPloneサイトのためのひとつのログインを持ちたいなら。

はい、Ploneサイトの中で管理者あるいはメンバーでありながら、Zopeユーザーアカウントを保持することが本当にできます。 Ploneの外側にあるacl_usersエントリーを再利用して、Ploneはそのアカウントのためにメンバーフォルダーをさえも作成するでしょう。Ploneは自身のacl_usersの中で新しいエントリーを作成しないでしょう。上記で述べられたようなローカルロールでメンバーを見つけたり、というような操作は親の acl_usersフォルダを見て動作しています。

とはいえ、あなたは二つのアイテムを失っているでしょう。もしポートレイトとメンバー情報が欲しいときには、ポートの内側にアカウントを持つ必要があります。そのアカウントはZope上にある上位のアカウントと同じユーザー名を持つことができます。とはいえ、これらは二つの別々のエントリーです。例えば、ひとつのアカウントのパスワードを変更してももう一つのほうへは適用されません。

メンバー参加の禁止

もしあなたがコミュニティ指向ではなくて、イントラネット指向、またば出版指向のサイトを運営していたら、任意の人々にメンバーになってほしいとは思わないでしょう。幸運にも、参加を規制するのは簡単です。あなたのPloneサイトのZMIを訪ねてください。例えば URLはhttp://localhost:8080/plone/manageでしょう。 Securityタブをクリックします。Add portal memberというラベルのついたパーミッションを見つけてください。Acquire というラベルのついたコラム(最初のコラム)の中のボックスのチェックをはずします。次に、ManagerOwnerのボックスをチェックします。Save Changesをクリックしてこの変更を保存します。

サイトナビゲーションのためにタブを変更する

Ploneサイトはロゴのすぐ下に一連のタブを持っています。ディフォルトでは、これらのタブはwelcome, members, newsそしてsearchです。

幸運にも、これらのタブを変更するのは簡単です。最初にPloneサイトのZMIに行きます。例えば、URLは http://localhost:8080/plone/manageであることでしょう。左側にあるフォルダーリストの中で、portal_actionsをクリックします。

横線に区切られたたくさんの「アクション」を見ることでしょう。portal_tabsCategoryでアクションを探して下さい。ロゴの下のタブにあるようなアクションがあるでしょう。

新しいアクションを作る最も簡単な方法はすでにあるものを複製することです。Welcomeという名前のアクションを見つけて下さい。その内容をベースにして、Add an actionの下にある、画面の一番下にあるフィールドを埋めて下さい。 Addをクリックします。リストの最後に新しいアクションが現れます。

次に、リストの中でそれを上に動かすことによって新しいアクションを適切な順番に配置する必要があります。不運にもこれはとてもやっかいです。新しいアクションのチェックボックスをクリックして、一番下までスクロールダウンして、 Move upボタンをクリックします。画面がリフレッシュしたら、アクションを見つけて、チェックボックスをクリックもう一度クリックし、底までスクロールダウンし、Move upをもう一度クリックします。これを新しいアクションが正しい場所にくるまで繰り返します。

新しいタブがナビゲーションとして使われるため、たぶんそれはサイトの中のフォルダを指し示すことになるでしょう。このフォルダが実在し公開されていることを確認してください。もし今フォルダを追加しようとしているなら、ZMIからではなくて、Ploneインターフェースからそれを追加していることを確かめてください。タブがフォルダを指し示すことはそのタブの元でのコンテンツとしてフォルダの中身を表示し、強調表示されたタブはドキュメントがサイトのその部分の中にあることを意味しています。

幸運にも、タブを隠したり取り除いたりするのはより簡単です。タブを隠すためにはアクションを見つけ出し、Visible?チェックボックスをアンチェックします。恒久的に取り除くにはチェックボックスをクリックし、ボタンの所までスクロールダウンし、 Deleteをクリックします。

WebDAV経由でリンクをオーサリングする。

私はWebDAV愛好者です。なぜなら、コンテンツを作るのに自分のツールを使いたいし、それにオフラインの時に創作物を作るのが好きだからです。実際の所、私は今電車に乗りながら、この処方箋を書いています。

リンクサポートの追加に関する私たちの戦略は入力ドキュメントの中のTypeヘッダーを使うことをサポートすることです。例えば、構造化テキストを使う新しいリンクオブジェクトはたぶん次のようなものになるでしょう。

                Title: Test Link Title

                Subject: 

                Publisher: No publisher

                Description: Test Link Description

                Contributors: 

                Effective_date: None

                Expiration_date: None

                Type: Link

                Format: text/url

                Language: 

                Rights: 

                http://www.plone.org/

もちろん、あなたは私と同じように怠惰で、TitleTypeだけを入力し、そしてリンクのためのURLをボディの中に入れることでしょう。

Zope/CMF/PloneにはDAVやFTPを通してドキュメントをオーサリングするためのサポートが組み込まれています。必要なのはサイトの「ソースポート」を知っていることだけです。これはZope起動スクリプトの-Wアーギュメントの中で使われているポートです。これは起動スクリプトのヘルプテキストの中で説明されています。

とはいえ、他のコンテンツタイプを作るにはいくらかの手間がかかります。始めるためにhttp://www.sf.net/projects/collectiveにあるCollectiveからSidnei da Silvaの CMFCTRAddonsをインストールする必要があります。このCollective CVSからファイルを取得する必要があるでしょう。

基本的な理論として、CMFはコンテンツの作成され方を扱う コンテンツタイプレジストリ を持っています。レジストリは述部(要求の中の条件文)を追加されるべきコンテンツタイプに対応させます。

一度CMFCTRAddonsを、それをPloneサイトに入れるための外部メソッドも含めてインストールしたならば、PloneサイトをWebDAVやFTPからのリンクを許可するように変更することができます。最初に、PloneサイトのZMIへ行きます。例えば、URLは http://localhost:8080/plone/manageのようでしょう。ワークスペースの中で(右側のフレーム)、content_type_registryをクリックします。

Edit Predicate List画面は条件(述部と呼ばれます)を追加することを可能にし、述部を変更し、または、それが適用される優先権の順番を再配置します。

底の方にあるAdd predicate:ボックスの中で、識別子としてrfc822linkを入力します。このテキストはあなたが望む何でもありであり、ただそれは唯一のものである必要があるだけである。Addボタンの隣にある選択リストの中で、rfc822_headersを選択します。次にAddをクリックします。さあ、これでrfc822link [rfc822_headers]:というラベルを持った述部を持ちました。この述部の中の両方の選択ボックスのためにLink を選択します。次にChangeをクリックします。

もう一つの飽き飽きするステップです。この述部の優先順位を上げる必要があります。さもなければ、DAVを通じて作成したアイテムはまだドキュメントの中にあることでしょう。 rfc822link述部のために、それがリストの一番上にくるまでUpボタンをクリックします。

これでDAVを通じてリンクを追加することを試すことができます。知っておくべきことは、CMFはDAVに関して普通でない振る舞いをすることです。例えば、構造化テキストの行末は常にWindowsの行末に変換されます。Macから作成している場合、とても普通でない結果をもたらします。

左のナビゲーションボックスのフォルダーを見えるようにする

Ploneインターフェースの中で、navigationの中でフォルダーがどのように表示されるかということに関する条件について疑問に思ったことはありませんか?幸運にも、それはとても単純です。Ploneサイトの最上部にある公開されたフォルダーがナビゲーションツリーの中で見えるようになります。それらを隠すには、フォルダーのstateタブを訪れて、 Change stateの下にあるMake privateを選択します。

余白のスロットを無効にする

左と右の余白にある例えばカレンダーのようなボックスを見てください。Ploneではこれらは スロットと呼ばれます。そしてタブのように、Ploneサイトでスロットをカスタマイズするのはとても簡単です。実際、フォルダー毎にスロットをカスタマイズできます。

例えば、カレンダーを取り除くには、PloneサイトのZMIを訪ねることから始めます。例えばURLはたぶんhttp://localhost:8080/plone/manageになっていることでしょう。カレンダーを隠したいと思うフォルダーを見つけます。私たちの場合はPloneサイトのルートフォルダーを選択します。なぜならそれはスロットのセットを既に持っているからです。

ルートフォルダーの中で、Propertiesと呼ばれるZMIタブを見ることになります。それをクリックし、スクロールダウンします。left_slotsright_slotsという名前の二つのプロパティを見るでしょう。スロットのためにオブジェクトとオブジェクトの順番を定義する複数の値を持つ「行」プロパティがあります

right_slotsプロパティの中で、 here/calendar_slot/macros/calendarBoxのエントリーを見つけます。それは2行目のはずです。この行を取り除き、ページの底にあるSave changesをクリックします。

さあ、Ploneサイトのホームページを訪ねましょう。カレンダーは見えないはずです。

追加の練習として、前の処方箋でサイトへの人々の参加の許可を取り除きました。しかしログインボックスは無名ビジターに対してまだ表示されたままです。ひとつの解決方法はleft_slotからログインボックスを削除することです。

ナビゲーションボックスで文字が切り落とされるのを直す。

ev: 私のブラウザでもそうなんだよ。ナビゲーションボックスが"Zope Europe Association"の最後のいくつかの文字を切り落としてしまうんだ。君のはどうだい?

limi: まあね。

limi: それは確かナビボックスのプレファランスで定義されていると思う。

limi: croppingだよ。(訳注:ZMIでportal_properties => navtree_propertiesを見るとpropertiesタブのページにcroppingLengthというプロパティがあります)

どうしてカレンダーはトップフォルダーにしか現れないのか?

limi: なぜなら、それ以外のフォルダではカレンダーを隠しているから。

ev: ふ〜ん

limi: 右のスロット

ev: ほ〜う

limi: たぶん、とにかくいいアイデアだよ。

limi: それらはナビゲーションに出てくるんだ。

ev: 君の意見では、私のサイトではカレンダーは役に立つ案内ツールなのかい、それともちがうのかい?

limi: それはイベントリストをとても視覚的に補完するんだ。

limi: これからどんなイベントがあるのか見ることができるよ。

limi: 私は好きだよ。

limi: そしてそれはアイキャンディ(tm)

limi: 私たちは好きなんだよ

limi: 単調なものを突き破るものが。

カレンダーの代わりに、イベントの一覧を得るにはどのようにしたらいいのか?

limi: イベントボックスかな。

ev: 違うよ、本当じゃないね。(pas vrai)

ev: そのZPTはどこだろう?

limi: ファイルシステムだよ。

ev: それはもうあるの?

limi: plone_templates/ui_slots/event_slot.ptだよ。(訳注:Plone/Data/Products/CMFPlone/skins/plone_templates/ui_slots/events_slot.ptのことです)

limi: 前にPloneの中をチェックしたんだ。

一般閲覧者のためにアバウトボックスを消すにはどうするの?

ev: 左欄にあるアバウトスロットが一般の閲覧者にとって役に立つとは思えないんだ。

limi: じゃあ、site_propertiesの中のanonymousを消せばいいよ。(訳注:ZMIで見ると、portal_properties => site_properties の中にallowAnonymousViewAboutというプロパティのチェックボックスがあり、そのチェックをはずします)

ev: ok

limi: これは君への素敵で大きなチェックマークだよ。(えっへん!) :]

私の文字列を適切に配置したい。(又は異なるフォント、フォントサイズ、等)

ev: 文字列が完全に配置された!

limi: そうだね

ev: 君はどう思う?こんなんで君は好きかなぁ?

limi: ploneCustom.cssは見た?

ev: まず最初に、こんなので君は好きかい?それとも変えた方がいいかい?

limi: 君はそれに p { text-align: left; } を追加することができるよ

ev: ploneCustom.cssに優先権はあるのかい?

limi: あるよ

Page Editor: Andy McKay $Id: b,v 1.1.1.1 2003/08/26 17:09:52 tyam Exp $

前 [付録A:リソース] | 目次 | 次 [付録C:商業利用のPlone]