收集freemarker的實戰經驗
1、宏
<#--文章列表模板
MODULE:版塊
LIST:內容
wordLength:名字最大長度
contentNum:每塊的內容
clickUrl:點擊的鏈接
class:css類
subClass:css類
flag:預留判斷,用於擴展
-->
<#macro contentList MODULE LIST wordLength=10 contentNum=5 clickUrl="" class="" subClass="" flag=1>
<#if MODULE??>
<#if LIST??>
<#assign len=LIST?size />
<#if len gt 0>
<#if len lte contentNum>
<@listDiv MODULE=MODULE LIST=LIST start=0 end=len-1 wordLength=wordLength clickUrl=clickUrl class=class flag=flag/>
<#else>
<@listDiv MODULE=MODULE LIST=LIST start=0 end=contentNum-1 wordLength=wordLength clickUrl=clickUrl class=class flag=flag/>
<@listDiv MODULE=MODULE LIST=LIST start=contentNum end=len-1 wordLength=wordLength maxNum=contentNum clickUrl=clickUrl class=class subClass=subClass flag=flag/>
</#if>
</#if>
</#if>
</#if>
</#macro>
<#--
內部宏
start:起始位置
end:結束位置
maxNum:最大顯示條數
-->
<#macro listDiv MODULE LIST start=0 end=0 wordLength=5 maxNum=10 clickUrl="" class="" subClass="" flag=1>
<div class="${class} ${subClass}">
<ul>
<#if end gt 2*maxNum-1>
<#local end = 2*maxNum-1/>
</#if>
<#list LIST[start..end] as item>
<li>
<span>
<#if flag == 1>
<a href="javascript:void(0);" οnclick="${clickUrl}(this,'${item.path}','${webRoot}','${urlRoot}','${MODULE.id}','${item.id}','${MODULE.name}');">
<#if (item['name']?length>
wordLength)> ${item['name'][0..wordLength]}...
<#else>
${item['name']}
</#if>
</a>
<#else>
<a href="javascript:void(0);" οnclick="${clickUrl}(this,'${item.path}','${webRoot}','${urlRoot}','${item.parentId!}','${MODULE.name}');">
<#if (item['title']?length>
wordLength)> ${item['title'][0..wordLength]}...
<#else>
${item['title']}
</#if>
</a>
</#if>
</span>
</li>
</#list>
</ul>
</div>
</#macro>
使用:
<#import "include/content-list.ftl" as show/>
<@show.contentList MODULE=MODULE LIST=MODULE.contentList! wordLength=10 contentNum=3 clickUrl="javescript:openGuideContentWin" class="content-list-right" subClass="put-right" flag=2/>
2、待續