@cms.model id=modelId!>
    <#assign
        model=object
        fieldList=model.fieldList![]
        requiredFieldList=model.requiredFfieldList![]
    />
    <@cms.category id=categoryId!><#assign category=object/>@cms.category>
<#assign urlExtendFieldTypes=['file','image','video']>
<#assign privateUrlExtendFieldTypes=['privatefile','privateimage','privatevideo']>
<#assign editorExtendFieldTypes=['editor','tinymce','ckeditor']>
<#macro getExtendData extend>
<#if urlExtendFieldTypes?seq_contains(extend.inputType)>
        ${r'${(attribute.'+extend.id.code+r')!}'}
<#elseif editorExtendFieldTypes?seq_contains(extend.inputType)>
        ${r'${(attribute.'+extend.id.code+r'?no_esc)!}'}
<#elseif privateUrlExtendFieldTypes?seq_contains(extend.inputType)>
        ${r'${getPrivateUrl(attribute.'+extend.id.code+r')!}'}
<#elseif 'category'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.category ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.name} <#sep>,
            #list>
        @cms.category>#noparse>
    <#else>
        <#noparse><@cms.category id=attribute.#noparse>${extend.id.code}<#noparse>>${object.name} @cms.category>#noparse>
    #if>
<#elseif 'content'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.content ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.title} <#sep>,
            #list>
        @cms.content>#noparse>
    <#else>
        <#noparse><@cms.content id=attribute.#noparse>${extend.id.code}<#noparse>>${object.title} @cms.content>#noparse>
    #if>
<#elseif 'user'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@sys.user ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.nickname} <#sep>,
            #list>
        @sys.user>#noparse>
    <#else>
        <#noparse><@sys.user id=attribute.#noparse>${extend.id.code}<#noparse>>${object.nickname}@sys.user>#noparse>
    #if>
<#elseif 'tag'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.tag ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.name} <#sep>,
            #list>
        @cms.tag>#noparse>
    <#else>
        <#noparse><@cms.tag id=attribute.#noparse>${extend.id.code}<#noparse>>${object.name}@cms.tag>#noparse>
    #if>
<#elseif 'color'=extend.inputType>
        <#noparse>text #noparse>
<#elseif 'survey'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.survey ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.title} <#sep>,
            #list>
        @cms.survey>#noparse>
    <#else>
        <#noparse><@cms.survey id=attribute.#noparse>${extend.id.code}<#noparse>>${object.title}@cms.survey>#noparse>
    #if>
<#elseif 'vote'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.vote ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.title} <#sep>,
            #list>
        @cms.vote>#noparse>
    <#else>
        <#noparse><@cms.vote id=attribute.#noparse>${extend.id.code}<#noparse>>${object.title}@cms.vote>#noparse>
    #if>
<#elseif 'tagType'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.tagType ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.name} <#sep>,
            #list>
        @cms.tagType>#noparse>
    <#else>
        <#noparse><@cms.tagType id=attribute.#noparse>${extend.id.code}<#noparse>>${object.name}@cms.tagType>#noparse>
    #if>
<#elseif 'categoryType'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.categoryType ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.name} <#sep>,
            #list>
        @cms.categoryType>#noparse>
    <#else>
        <#noparse><@cms.categoryType id=attribute.#noparse>${extend.id.code}<#noparse>>${object.name}@cms.categoryType>#noparse>
    #if>
<#elseif 'dictionary'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@cms.dictionaryData dictionaryId='#noparse>${extend.dictionaryId}<#noparse>' values=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,d>${k}:${d.text}<#sep>,#list>
        @cms.dictionaryData>#noparse>
    <#else>
        <#noparse><@cms.dictionaryData dictionaryId='#noparse>${extend.dictionaryId}<#noparse>' value=attribute.#noparse>${extend.id.code}<#noparse>>${object.id.value}:${object.text}@cms.dictionaryData>#noparse>
    #if>
<#elseif 'dept'=extend.inputType>
    <#if extend.multiple>
        <#noparse><@sys.dept ids=attribute.#noparse>${extend.id.code}<#noparse>>
            <#list map as k,v>
                ${v.name} <#sep>,
            #list>
        @sys.dept>#noparse>
    <#else>
        <#noparse><@sys.dept id=attribute.#noparse>${extend.id.code}<#noparse>>${object.name}@sys.dept>#noparse>
    #if>
<#elseif 'keyvalue'=extend.inputType>
        <#noparse>
            
                
                    #noparse><@t.page "key"/><#noparse> 
                    #noparse><@t.page "value"/><#noparse> 
                 
             
            
                <#list attribute.#noparse>${extend.id.code}<#noparse>?split(",")?chunk(2) as row>
                    
                        <#list row as a>${a} #list>
                     
                #list>
             
        
#noparse>
<#elseif 'alphaColor'=extend.inputType>
        <#noparse>text
#noparse>
<#elseif 'textarea'=extend.inputType>
        <#noparse><#list (attribute.#noparse>${extend.id.code}<#noparse>!"")?split("\n") as a>${a}<#sep>${object.name}  >
        @cms.category>
    #if>
#macro>
    
    
        #noparse><@t.page 'model'/><#noparse>: 
        ${(model.name)!}
    
    
        #noparse>${(model.fieldTextMap['title'])!}<#noparse>: 
        ${(content.copied?then('[#noparse><@t.page 'copied'/><#noparse>]',''))!} ${(content.title)!}
    
    
        #noparse><@t.page 'content.score'/><#noparse>: 
        ${content.score!}
    
<#if 1=content.status>
    
        #noparse><@t.page 'inspector'/><#noparse>: 
        <@sys.user id=content.checkUserId;user>${(user.nickname)!}@sys.user>
    
#if>
    
        #noparse><#if model.onlyUrl>${(model.fieldTextMap['url'])!}<#else><@t.page 'url'/>#if><#noparse>: 
        ${(content.url)!} 
     
<#if content.copied>
    
        #noparse>${(model.fieldTextMap['source'])!}<#noparse>: 
        ${(attribute.source)!}
    
    
#if>
#noparse><#if fieldList?seq_contains('author')><#noparse>
    
        #noparse>${(model.fieldTextMap['author'])!}<#noparse>: 
        ${(content.author)!}
    
#noparse>#if><#noparse>
#noparse><#if fieldList?seq_contains('editor')><#noparse>
    
        #noparse>${(model.fieldTextMap['editor'])!}<#noparse>: 
        ${(content.editor)!}
    
#noparse>#if><#noparse>
<#if (content.tagIds)?has_content>
    
        #noparse>${(model.fieldTextMap['tag'])!}<#noparse>: 
        <@cms.tag ids=content.tagIds>
            <#list map as k,tag>
                ${k}:${tag.name}<#sep>,
            #list>
        @cms.tag>
    
#if>
    
        #noparse><@t.page 'publish_date'/><#noparse>: 
        ${(content.publishDate)!}<#if content.expiryDate?has_content> - ${(content.expiryDate)!}#if>
    
#noparse>
<#if category?has_content&&category.extendId?has_content>
    <@sys.extendFieldList extendId=category.extendId>
        <#list list as extend>
<#noparse>
    
        #noparse>${extend.name}<#noparse>: 
        #noparse><@getExtendData extend/><#noparse>
    
#noparse>
        #list>
    @sys.extendFieldList>
#if>
<#if model.extendList?has_content>
    <#list model.extendList as extend>
<#noparse>
    
        #noparse>${extend.name}<#noparse>: 
        #noparse><@getExtendData extend/><#noparse>
    
#noparse>
    #list>
#if>
<#noparse>
    <#if content.hasImages>
        
            #noparse><@t.page 'image_list'/><#noparse>: 
    <@cms.contentFileList contentId=content.id fileTypes='image'>
        <#list page.list as file>
            
              ${(file.description)!} 
             
        #list>
    @cms.contentFileList>
        
 
    #if>
    <#if content.hasFiles>
        
            #noparse><@t.page 'attach_list'/><#noparse>: 
        <@cms.contentFileList contentId=content.id fileTypes='video,audio,document,other'>
            <#list page.list as file>
                
${(file.description)!} 
            #list>
        @cms.contentFileList>
        
 
    #if>
    <#if content.hasProducts>
        
            #noparse><@t.page 'product_list'/><#noparse>: 
        <@cms.contentProductList contentId=content.id>
            <#list page.list as product>
                <#if product.cover?has_content>
                    
                      ${product.title} 
                     
                #if>
                
#noparse><@t.page 'title'/><#noparse>: ${product.title}
                #noparse><@t.page 'product.price'/><#noparse>: ${product.price}
                #noparse><@t.page 'product.inventory'/><#noparse>: ${product.inventory}
                #noparse><@t.page 'product.sales'/><#noparse>: ${product.sales}
            #list>
        @cms.contentProductList>
        
 
    #if>
    <#if content.cover?has_content>
        
            #noparse>${(model.fieldTextMap['cover'])!}<#noparse>: 
             
    #if>
    <#if fieldList?seq_contains('description')>
        
            #noparse>${(model.fieldTextMap['description'])!}<#noparse>: 
            <#list (content.description!'')?split('\n') as line>${line}<#sep>
    #if>
    <#if fieldList?seq_contains('content')>
        
            #noparse>${(model.fieldTextMap['content'])!}<#noparse>(${(attribute.wordCount)!}): 
            ${(attribute.text?no_esc)!}
        
    #if>
    <#if page?has_content>
        
            <#if content.url?contains('?')><#assign pageParameter="pageIndex"/>#if>
            <#if !page.firstPage>
                
Previous page 
            <#else>
                
Previous page 
            #if>
            <#list 1..page.totalCount as n>
                <#if n=page.pageIndex>
                    ${n}
                <#else>
                    
${n} 
                #if>
            #list>
            <#if !page.lastPage>
                
Next page 
            <#else>
                
Next page 
            #if>
        
        <@cms.contentList categoryId=category.id endPublishDate=content.publishDate orderField='publishDate' pageIndex=2 pageSize=1><#if 2=page.pageIndex><#list page.list as a>
Previous:${a.title} #list>#if>@cms.contentList>
        <@cms.contentList categoryId=category.id startPublishDate=content.publishDate orderField='publishDate' orderType='asc' pageIndex=1 pageSize=1><#list page.list as a>
Next:${a.title} #list>@cms.contentList>
    
        #noparse><@t.page 'recommend_info'/><#noparse>: 
    <#list page.list as a>
        
${(a.title)!} 
    #list>
    
 
    #if>
@cms.contentRelatedList>
<#macro merge name value><#if !.vars[name]??><@"<#assign ${name}=''>"?interpret />#if><#if value?has_content><@"<#assign ${name}=${name}+'${value},'>"?interpret />#if>#macro>
<@cms.commentList contentId=content.id pageSize=10>
    <#list page.list as a>
        <@merge 'userIds' a.userId!/>
        <@merge 'userIds' a.replyUserId!/>
    #list>
    <@sys.user ids=userIds!><#assign userMap=map!/>@sys.user>
    <#list page.list as a>
        
            ${(userMap[a.userId?string].nickname)!}<#if a.replyUserId?has_content> reply ${(userMap[a.replyUserId?string].nickname)!}#if>: 
            
                ${a.text!}
             
         
    #list>
@cms.commentList>
#noparse>
#assign>
@cms.model>
    
        <@t.page 'model'/>: 
        
            ${(model.name)!}
         
     
<#if category?has_content>
    
        <@t.page 'category'/>: 
        
            ${(category.name)!}
         
     
#if>
    
        <@t.page 'source_code'/>: