为内容对象添加视图菜单条目

为内容对象添加视图菜单条目

为内容对象添加视图菜单条目只需如下简单两步骤:

  1. 内容类型注册文件中列出视图名称:
    <?xml version="1.0"?>
    <object name="emc.kb.kbfolder"
       meta_type="Dexterity FTI"
       i18n:domain="emc.kb" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
    
      <!-- Basic metadata -->
      <property name="title" i18n:translate="">resource folder</property>
      <property name="description"
        i18n:translate="">resource folder</property>
      <property name="content_icon">++resource++emc.project/folder.png</property>
      <property name="factory">emc.kb.kbfolder</property>
      <property name="global_allow">False</property>
      <property name="filter_content_types">True</property>  
      <property name="allowed_content_types">	
           <element value="Folder" />
           <element value="File" />                    
      </property>
      <property name="allow_discussion">False</property>
    
      <!-- schema and class used for content items -->
      <property name="schema">emc.kb.contents.kbfolder.Ikbfolder</property> 
      <property name="klass">plone.dexterity.content.Container</property>
    
      <property name="behaviors">
         <element value="plone.app.content.interfaces.INameFromTitle" />
         <element value="plone.app.dexterity.behaviors.metadata.IBasic"/>
       </property>
    
      <!-- View information -->
      <property name="link_target"></property>
      <property name="immediate_view">folder_contents</property>
      <property name="default_view">folder_contents</property>
      <property name="view_methods">
       <element value="folder_contents"/>
       <element value="ajax_listings"/>
      </property>
      <property name="default_view_fallback">False</property>
      <property name="add_permission">cmf.AddPortalContent</property>
    
    
      <!-- Method aliases -->
      <alias from="(Default)" to="(dynamic view)" />
      <alias from="view" to="(selected layout)" />
      <alias from="edit" to="@@edit" />
      <alias from="sharing" to="@@sharing" />
    
      <!-- Actions -->
      <action title="View" action_id="view" category="object" condition_expr=""
        url_expr="string:${object_url}/" visible="True">
        <permission value="View" />
      </action>
      <action title="Edit" action_id="edit" category="object" condition_expr=""
        url_expr="string:${object_url}/edit" visible="True">
        <permission value="Modify portal content" />
      </action>
    </object>
    
  2. 采用configure.zcml配置视图名称、菜单名称:
    ...
      <browser:page
        for="Products.CMFCore.interfaces._content.IFolderish"
        class="plone.app.content.browser.contents.FolderContentsView"
        name="folder_contents"
     	layer="emc.theme.interfaces.IThemeSpecific"     
        template="templates/folder_contents.pt"
        permission="cmf.ListFolderContents"
        menu="plone_displayviews"
        title="Folder view"
        />
    ...
  3. 备注:zcml 中的title 可以被i18n,翻译域domain一般为plone,i18ndude不能自动提取该msgid ,只能手动添加到po文件。
设置