2005/07/02 更新
| 以下の内容は、Plone 2.0.x 当時のものであり、それ以降のバージョンではもはや有効ではありません |
お手軽に使うための Plone のカスタマイズはじめの一歩。
もうちょっと親切な(やさしい口調の)解説が欲しいは場合は Liris さんの所の Plone関連、 カスタマイズ以外の Plone についての落書きは Plone 雑記帳参照のこと。
また、書籍では「開発のプロが教える標準Plone完全解説」がお勧め。その原著は「Defenitive Guide to Plone」で 内容は http://docs.neuroinf.de/PloneBook/ から参照することもできます。
ただし、Epozと フォームによる編集を切り替えたい場合は、再度個人設定で変更
portal_metadata->Elementsタブ->Subject に追加
例えば、「ニュース」タブの削除の場合
たとえば ルートフォルダにある about_us という Document へのリンクをタブに追加したい場合
portal_actions の Actionsタブで以下のような内容で登録。
| Name | About Us(タブのタイトル) |
|---|---|
| ID | about_us(適当に) |
| Action | string:$portal_url/about_us |
| Condition | (ブランクのまま) |
| Permissions | View |
| Category | portal_tabs |
| Visible? | ON |
Actionsには、string:http://www005.upp.so-net.ne.jp/nakagami/ のように、他のサイトへの URLも指定できる。
タブの左右の位置は、portal_actionsの一覧の上→下の順番なので、左右を入れ替えたい場合は、MoveUp Move down ボタンで行う
これで、Anonymous の人が、Joinできなくなりますが、Manager の人は、ログイン後に Ploneの設定→「ユーザーとグループの管理」で追加することができる。
既存の Plone サイトも、CSSを変更しているだけのところが多いので、具体的なデザインは
のあたりをみて CSSの定義を参考にすると良い。
CSSについては、
を参考にするとよさそう。
プロパティの
同じく、Print this page の チェックを OFFにすると「このページを印刷する」アイコンが消える。
もし、Reviewer がレビューするワークフローを使っていたら、 pending のものを確認する必要があるので、here/portlet_review/macros/portlet を left_slots に移しておく必要があるはず。
(Default) のワークフローに simple_workflow を指定しても良い。
simple_workflow を作らずに、単純に 2.で forlder_workflow を指定しても良い(わけわかんなくならなければ)
Public のものを複数の人が編集すると、わけわからんくなるので、必ず visibleにしないと (または、privateまで戻さないと)編集できないようにしたほうが良いと思う。
ZMIを開き Memberフォルダの Security タブで
を
にする。
また、portal_actions の Members の Condition をpython:member
に変更して「メンバー」タブが
Member のときのみ出るようにする(Visible?のチェックを OFFにしても良い)。
portal_skins/plone_content/document_view をカスタマイズ、Description を表示しているところを(抜粋)以下のようにする
|
<div class="documentDescription" tal:content="here/Description" tal:condition="not:isAnon"> description </div> |
Security タブで
の Member Role を ON にする。
フォルダオブジェクトの URL の最後に /folder_contents をつけると、フォルダのコンテンツ一覧が出る(http://blog.so-net.ne.jp/nakagami/2005-03-15 参照)
portal_properties の site_properties のプロパティ allowAnonymousViewAbout のチェックを OFF
portal_skins/plone_templates/global_personalbar をカスタマイズ。以下太字の1行を加える。
| <div metal:define-macro="personal_bar" tal:condition="not: isAnon" tal:define="display_actions python:user_actions[:-1]+global_actions+user_actions[-1:];" tal:omit-tag=""> |
ただ、これだと、線の引かれ方と配色がいまいちなので、本当はもっとちゃんと直すべし。
Personal Bar の下の Path Bar
のデザインを変えると良いかも。例えば、portal_skins/plone_style/ploneCustom.css をカスタマイズして
以下のような内容を ploneCustom.css の
/* DELETE THIS LINE AND PUT YOUR CUSTOM STUFF HERE */
とあるあたりに入れるとか 。
#portal-breadcrumbs {
background-color: &dtml-globalBackgroundColor;;
border-top-color: &dtml-globalBorderColor;;
border-top-style: &dtml-borderStyle;;
border-top-width: &dtml-borderWidth;;
border-bottom-color: &dtml-globalBorderColor;;
border-bottom-style: &dtml-borderStyle;;
border-bottom-width: &dtml-borderWidth;;
line-height: 1.3em;
color: &dtml-fontColor;;
padding: 0em 3em 0em 3em;
margin: 0;
text-transform: &dtml-textTransform;;
list-style: none;
}
|
ログインのリンクが出ていない状態でも http://localhost:8080/login_form のように URLの最後に login_form とつけるとログイン画面が出るので支障はない。
で、以下のように、tal 式で常に False になるように指定
| <div id="portal-xxxx" metal:define-macro="xxxxxxxx" i18n:domain="plone" tal:condition="nothing"> |
単純に内容(<div>~</div>の部分)を書き換えても良い。
ここまでのカスタマイズをしているサイトは、アドバンス検索があると混乱するはず(使っていない機能がたくさんあるので)。
portal_skins/plone_forms/serch をカスタマイズして、該当するパラグラフを削除する。もしくは、
| <p i18n:translate="search_results_advanced" tal:condition="nothing"> |
という感じにする。
portal_types で該当するものをクリックして Implicitly addable? のチェックを OFFにする。
例えば、http://www.example.com/ として Ploneサイトを表示したいような場合・・・
Squid を使ってよければ Zopeと Squidの連携を参照。
Apacheじゃなきゃいやな人はこちら。
Splitter for ZCTextIndexのページを参照すべし。中でも ejSplitter がお勧め(自画自賛)。ejSplitter のインストールについては、 http://takanory.net/plone/basic/splitter/ の説明が丁寧。
jaMailHostをインストールして、ZMIから MailHost の Titleに「utf-8」 と入れる(自画自賛) 。
$portal_skins/plone_scripts/logged_in をカスタマイズ
最後の
return REQUEST.RESPONSE(redirect)
の行の直前に
dest = REQUEST.URL1
if hasattr(member, 'isGroup'):
groups = member.getGroupsWithoutPrefix()
if len(groups):
dest += '/groups/' + groups[0]
|
ZMI から、ルートフォルダの Propteries タブの left_slot に
| here/portlet_mygroups/macros/portlet |
の行を加える。
File を 追加・変更しようとする時に、日本語の含まれるパス名のファイルを
アップロードしようとすると、エラーになって追加できない。
「日本語のファイル名やフォルダー名はだめです」と言ってしまえれば良いが、
そうもいかない場合も多い。
$portal_skins/plone_form_scripts/validate_file_editを
--- validate_file_edit.vpy.orig Thu Nov 11 19:44:32 2004
+++ validate_file_edit.vpy Thu Nov 11 19:54:28 2004
@@ -21,12 +21,7 @@
if not filename and not size:
state.setError('file', 'You must upload a file')
-if context.CreationDate() == context.ModificationDate() and filename:
- alternative_id = filename[max( string.rfind(filename, '/')
- , string.rfind(filename, '\\')
- , string.rfind(filename, ':') )+1:].strip()
-else:
- alternative_id = context.getId()
+alternative_id = context.getId()
id = id.strip()
id_err = context.check_id(id, 1, alternative_id)
|
--- file_edit.cpy.orig Thu Nov 11 19:56:22 2004
+++ file_edit.cpy Thu Nov 11 19:57:45 2004
@@ -14,20 +14,10 @@
original_id=context.getId()
filename=getattr(file,'filename', '')
-if file and filename and context.isIDAutoGenerated(original_id):
-# if there is no id or an autogenerated id, use the filename as the id
-# if not id or context.isIDAutoGenerated(id):
-# if there is no id, use the filename as the id
- if not id:
- id = filename[max( string.rfind(filename, '/')
- , string.rfind(filename, '\\')
- , string.rfind(filename, ':') )+1:]
if file and hasattr(file, 'seek'):
file.seek(0)
-# if there is no id specified, keep the current one
-if not id:
- id = context.getId()
+id = context.getId()
if not file and file_data:
file=StringIO(file_data)
|
また、Document を追加・変更しようとする時に、ファイルのアップロードで やろうとすると、UTF-8 で書いてないと文字化けしてしまう。 $portal_skins/plone_content/document_edit_formをカスタマイズして、 アップロードするファイルを指定する部分の<div>~</div>を削除してしまった 方が良いかも
Zopeの本体の Structured Text のソースを少し変更する必要あり。
http://blog.so-net.ne.jp/nakagami/2005-01-07
portal_skins/plone_prefs/password_form をカスタマイズ
Manage properties のパーミッションを Authenticated ON に
portal_controlpanel のChange Password の Permission を View
portal_skins/plone_form_scripts/plone_change_password
をカスタマイズ
Proxy タブで Manage を選択
→といろいろやってみたが、今のところうまくいかない
パスワードの変更は Zope を経由しないようにする方法はある。例えば、ユーザー情報は、LsbUserFolder 等を使って保持し、かつ Manage properties のパーミッションを Authenticated ON にして、ユーザー設定は変更させないようにするとか。