トップページ表示テンプレートの作成 [Plone3.3]
トップページ表示として、メインビジュアル、フリーエリア3か所、お知らせを表示するテンプレートを作成する。お知らせの表示が「日付+タイトル」の場合の「ENG TOPPAGE TOPIC VIEW」、「日付+本文」の場合の「ENG TOPPAGE BLOG VIEW」を定義する。
ENG TOPPAGE TOPIC VIEW
Topicタイプのビューとして ENG TOPPAGE TOPIC VIEW を定義する
工学研究科のトップページ表示用に、Topicタイプのビューを定義する。スキンフォルダ内にテンプレートを eng_toppage_topic_view として作成する。タイトルは「ENG TOPPAGE TOPIC VIEW」とする。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en"
metal:use-macro="here/main_template/macros/master"
i18n:domain="plone">
<body>
<div metal:fill-slot="main">
<metal:main_macro define-macro="main">
<metal:body define-macro="body_macro"
tal:define="kssClassesView context/@@kss_field_decorator_view;
getKssClasses nocall:kssClassesView/getKssClassesInlineEditable;
templateId template/getId">
<div class="toppage">
<!--メインビジュアル-->
<div class="top_visual"
tal:define="id string:mainvisual.jpg;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<img src="mainvisual.jpg" />
</div>
<div class="top_area_one">
<!--フリーエリア1-->
<div tal:define="id string:freearea1;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
<!--お知らせ-->
<div tal:define="b_size python:10;" class="top_news" tal:condition="here/listCriteria | nothing">
<h2 tal:content="python:test(language=='en', 'News', 'お知らせ')" />
<div class="rss"><a tal:attributes="href python:context.absolute_url() + '/RSS'">RSS</a></div>
<div metal:use-macro="here/eng_topic_view/macros/listing" />
<div class="allnews">
<a tal:attributes="href string:../news"
tal:content="python:test(language=='en', 'More', u'\u904e\u53bb\u4e00\u89a7')" /></div>
</div>
</div>
<div class="top_area_two">
<!--フリーエリア2-->
<div tal:define="id string:freearea2;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
</div>
<div class="visualClear"><!----></div>
<div class="top_area_three">
<!--フリーエリア3-->
<div tal:define="id string:freearea3;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
</div>
</div>
</metal:body>
<div tal:replace="structure provider:plone.belowcontentbody" />
</metal:main_macro>
</div>
</body>
</html>
Topicのビューで選択できるものを指定する
フォルダのビューで選択できるものを指定する。上で作成した、eng_toppage_topic_view も設定できるようにする。portal_types/Topic を開き Available view methods に次の行を追加する。
eng_toppage_topic_view
ENG TOPPAGE BLOG VIEW
Topicタイプのビューとして ENG TOPPAGE BLOG VIEW を定義する
工学研究科のトップページ表示用に、Topicタイプのビューを定義する。スキンフォルダ内にテンプレートを eng_toppage_blog_view として作成する。タイトルは「ENG TOPPAGE BLOG VIEW」とする。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en"
metal:use-macro="here/main_template/macros/master"
i18n:domain="plone">
<body>
<div metal:fill-slot="main">
<metal:main_macro define-macro="main">
<metal:body define-macro="body_macro"
tal:define="kssClassesView context/@@kss_field_decorator_view;
getKssClasses nocall:kssClassesView/getKssClassesInlineEditable;
templateId template/getId">
<div class="toppage">
<!--メインビジュアル-->
<div class="top_visual"
tal:define="id string:mainvisual.jpg;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<img src="mainvisual.jpg" />
</div>
<div class="top_area_one">
<!--フリーエリア1-->
<div tal:define="id string:freearea1;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
<!--お知らせ-->
<div tal:define="b_size python:5;" class="top_news" tal:condition="here/listCriteria | nothing">
<h2 tal:content="python:test(language=='en', 'News', 'お知らせ')" />
<div class="rss"><a tal:attributes="href python:context.absolute_url() + '/RSS'">RSS</a></div>
<div metal:use-macro="here/eng_blog_view/macros/listing" />
<div class="allnews">
<a tal:attributes="href string:../news"
tal:content="python:test(language=='en', 'More', u'\u904e\u53bb\u4e00\u89a7')" /></div>
</div>
</div>
<div class="top_area_two">
<!--フリーエリア2-->
<div tal:define="id string:freearea2;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
</div>
<div class="visualClear"><!----></div>
<div class="top_area_three">
<!--フリーエリア3-->
<div tal:define="id string:freearea3;
path python:'/'.join(context.aq_parent.getPhysicalPath());
results python:context.portal_catalog.searchResults( path={'query':path, 'depth':1}, id=id );"
tal:condition="results" tal:omit-tag="">
<div tal:define="obj python:results[0].getObject();
translation python:obj.getTranslation();
base_url python:obj.absolute_url();"
tal:attributes="class id">
<div tal:replace="structure python:here.transformRelatedURLs(translation.CookedBody(stx_level=2), base_url)" />
<div tal:condition="python:context.portal_membership.checkPermission('Modify portal content', obj)"
class="edit-link">
<a tal:attributes="href python:base_url+'/edit'"
tal:content="python:test(language=='en', 'Edit', '編集')" />
</div>
</div>
</div>
</div>
</div>
</metal:body>
<div tal:replace="structure provider:plone.belowcontentbody" />
</metal:main_macro>
</div>
</body>
</html>
Topicのビューで選択できるものを指定する
フォルダのビューで選択できるものを指定する。上で作成した、eng_toppage_blog_view も設定できるようにする。portal_types/Topic を開き Available view methods に次の行を追加する。
eng_toppage_blog_view
