1. 程式人生 > >Java的新專案學成線上筆記-day4(三)

Java的新專案學成線上筆記-day4(三)

3.3 模板管理
3.3.1 模板管理業務流程
CMS提供模板管理功能,業務流程如下:

Java的新專案學成線上筆記-day4(三)
1、要增加新模板首先需要製作模板,模板的內容就是Freemarker ftl模板內容。 2、通過模板管理模組功能新增模板、修改模板、刪除模板。
3、模板資訊儲存在MongoDB資料庫,其中模板資訊儲存在cms_template集合中,模板檔案儲存在GridFS檔案系 統中。
cms_template集合:
下邊是一個模板的例子:

{  
   "_id" : ObjectId("5a962b52b00ffc514038faf7"),  
   "_class" : "com.xuecheng.framework.domain.cms.CmsTemplate",  
   "siteId" : "5a751fab6abb5044e0d19ea1",
     "templateName" : "首頁",  
   "templateParameter" : "",    
 "templateFileId" : "5a962b52b00ffc514038faf5" }

上邊模板資訊中templateFileId是模板檔案的ID,此ID對應GridFS檔案系統中檔案ID。
3.3.2 模板製作 3.3.2.1 編寫模板檔案
1、輪播圖頁面原型 在門戶的靜態工程目錄有輪播圖的靜態頁面,路徑是:/include/index_banner.html。

<!DOCTYPE html> <html lang="en"> <head> 
   <meta charset="UTF‐8">
    <title>Title</title> 
   <link rel="stylesheet" href="http://www.xuecheng.com/plugins/normalize‐css/normalize.css" />  
  <link rel="stylesheet"  href="http://www.xuecheng.com/plugins/bootstrap/dist/css/bootstrap.css" />     <link rel="stylesheet" href="http://www.xuecheng.com/css/page‐learing‐index.css" /> 
   <link rel="stylesheet" href="http://www.xuecheng.com/css/page‐header.css" />
</head> <body>
 <div class="banner‐roll">
    <div class="banner‐item">  
      <div class="item" style="background‐image: url(../img/widget‐bannerB.jpg);"></div> 
       <div class="item" style="background‐image: url(../img/widget‐bannerA.jpg);"></div> 
       <div class="item" style="background‐image: url(../img/widget‐banner3.png);"></div>   
     <div class="item" style="background‐image: url(../img/widget‐bannerB.jpg);"></div>  
      <div class="item" style="background‐image: url(../img/widget‐bannerA.jpg);"></div>    
    <div class="item" style="background‐image: url(../img/widget‐banner3.png);"></div> 
   </div>
    <div class="indicators">
</div> </div>
 <script type="text/javascript" src="http://www.xuecheng.com/plugins/jquery/dist/jquery.js">
 </script>
<script type="text/javascript"  src="http://www.xuecheng.com/plugins/bootstrap/dist/js/bootstrap.js">
</script>
<script type="text/javascript"> 
   var tg = $('.banner‐item .item');  
   var num = 0;   
  for (i = 0; i < tg.length; i++) { 
       $('.indicators').append('<span></span>');   
      $('.indicators').find('span').eq(num).addClass('active'); 
    }   
   function roll() {    
    tg.eq(num).animate({  
          'opacity': '1',     
      'z‐index': num   
      }, 1000).siblings().animate({   
         'opacity': '0',    
        'z‐index': 0  
      }, 1000);     
     $('.indicators').find('span').eq(num).addClass('active').siblings().removeClass('active');  
       if (num >= tg.length ‐ 1) {   
         num = 0;    
     } else {         
   num++;     
    }  
  }   [mw_shl_code=applescript,true] roll();  
   });   
  var timer = setInterval(roll, 3000); 
    $('.banner‐item').mouseover(function() {   
     clearInterval(timer)   
 });   
  $('.banner‐item').mouseout(function() {   
     timer = setInterval(roll, 3000)
    }); </script>
</body>
</html>
  $('.indicators').find('span').click(function() {    
     num = $(this).index();
[/mw_shl_code]

2、資料模型為:
通過http 獲取到資料模型如下:
下圖資料模型的圖片路徑改成可以瀏覽的正確路徑。

{  
  "id": "5a791725dd573c3574ee333f",   
 "name": "輪播圖", 
   "model": [  
     {  
      "key": "banner1",  
      "name": "輪播圖1地址",   
     "url": null,   
     "mapValue": null,
        "value": "http://www.xuecheng.com/img/widget‐bannerB.jpg"   
   },   
   {   
     "key": "banner2",   
     "name": "輪播圖2地址",  
      "url": null,  
      "mapValue": null,   
     "value": "http://www.xuecheng.com/img/widget‐bannerA.jpg" 
     }, 
     {   
     "key": "banner3",   
     "name": "輪播圖3地址",   
     "url": null,    
    "mapValue": null, 
       "value": "http://www.xuecheng.com/img/widget‐banner3.jpg" 
     }  
  ] }

3、編寫模板 在freemarker測試工程中新建模板index_banner.ftl。

<!DOCTYPE html>
 <html lang="en">
<head> 
   <meta charset="UTF‐8">    
<title>Title</title>   
 <link rel="stylesheet" href="http://www.xuecheng.com/plugins/normalize‐css/normalize.css" />
   <link rel="stylesheet"  href="http://www.xuecheng.com/plugins/bootstrap/dist/css/bootstrap.css" />     <link rel="stylesheet" href="http://www.xuecheng.com/css/page‐learing‐index.css" /> 
   <link rel="stylesheet" href="http://www.xuecheng.com/css/page‐header.css" />
</head>
<body>
<div class="banner‐roll"> 
   <div class="banner‐item">  
      <#if model??>      
       <#list model as item>     
            <div class="item" style="background‐image: url(${item.value});"></div>    
        </#list>       
  </#if> 
<#‐‐ <div class="item" style="background‐image: url(../img/widget‐bannerA.jpg);"></div>   
           <div class="item" style="background‐image: url(../img/widget‐banner3.png);"></div>   
     <div class="item" style="background‐image: url(../img/widget‐bannerB.jpg);"></div>  
      <div class="item" style="background‐image: url(../img/widget‐bannerA.jpg);"></div> 
       <div class="item" style="background‐image: url(../img/widget‐banner3.png);"></div>‐‐>
    </div>   
 <div class="indicators">
</div>
 </div>
<script type="text/javascript" src="http://www.xuecheng.com/plugins/jquery/dist/jquery.js">
</script>
<script type="text/javascript"  src="http://www.xuecheng.com/plugins/bootstrap/dist/js/bootstrap.js">
</script>
<script type="text/javascript">
    var tg = $('.banner‐item .item');  
   var num = 0;  
   for (i = 0; i < tg.length; i++) {  
      $('.indicators').append('<span></span>');  
       $('.indicators').find('span').eq(num).addClass('active');  
   } 
     function roll() {   
     tg.eq(num).animate({ 
           'opacity': '1',    
        'z‐index': num     
    }, 1000).siblings().animate({  
          'opacity': '0',  
         'z‐index': 0   
     }, 1000);  
        $('.indicators').find('span').eq(num).addClass('active').siblings().removeClass('active');     
    if (num >= tg.length ‐ 1) { 
           num = 0; 
        } else {    
        num++;
}   
 }  
  $('.indicators').find('span').click(function() {    
    num = $(this).index();   
      roll();
     });   
  var timer = setInterval(roll, 3000);  
   $('.banner‐item').mouseover(function() {  
      clearInterval(timer) 
   }); 
    $('.banner‐item').mouseout(function() {  
      timer = setInterval(roll, 3000)
     }); </script>
 </body>
 </html>