This commit is contained in:
Van 2017-04-09 04:31:52 +08:00
parent bf212920ad
commit b48eac788f
64 changed files with 1230 additions and 217 deletions

View File

@ -13,7 +13,7 @@
<div class="main-wrap"> <div class="main-wrap">
<main> <main>
<div class="title"> <div class="title">
<h2 style="border-bottom:0"> <h2 class="tip">
<i class="icon-inbox"></i> <i class="icon-inbox"></i>
&nbsp; &nbsp;
<#if "en" == localeString?substring(0, 2)> <#if "en" == localeString?substring(0, 2)>

View File

@ -0,0 +1,29 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
<#include "header.ftl">
<div class="wrapper">
<div class="main-wrap">
<main>
<div class="title">
<h2 class="tip"><i class="icon-category"></i>
&nbsp;${category.categoryTitle}
<small>${category.categoryDescription}</small>
</h2>
</div>
<#include "article-list.ftl">
</main>
<#include "side.ftl">
</div>
</div>
<#include "footer.ftl">
</body>
</html>

View File

@ -495,25 +495,6 @@ a[class*=" icon-"]:hover {
text-decoration: none; text-decoration: none;
color: #4285f4 color: #4285f4
} }
@font-face {
font-family: 'icomoon';
src: url("fonts/icomoon.eot?68j667");
src: url("fonts/icomoon.eot?68j667#iefix") format("embedded-opentype"), url("fonts/icomoon.ttf?68j667") format("truetype"), url("fonts/icomoon.woff?68j667") format("woff"), url("fonts/icomoon.svg?68j667#icomoon") format("svg");
font-weight: normal;
font-style: normal
}
[class^="icon-"],
[class*=" icon-"] {
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale
}
.em00, .em01, .em02, .em03, .em04, .em05, .em06, .em07, .em08, .em09, .em00, .em01, .em02, .em03, .em04, .em05, .em06, .em07, .em08, .em09,
.em10, .em11, .em12, .em13, .em14 { .em10, .em11, .em12, .em13, .em14 {
cursor: pointer; cursor: pointer;
@ -593,6 +574,32 @@ a[class*=" icon-"]:hover {
/* end common */ /* end common */
/* start reset common */ /* start reset common */
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?oyqnlj');
src: url('fonts/icomoon.eot?oyqnlj#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?oyqnlj') format('truetype'),
url('fonts/icomoon.woff?oyqnlj') format('woff'),
url('fonts/icomoon.svg?oyqnlj#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'icomoon' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-list:before { .icon-list:before {
content: "\f0ca"; content: "\f0ca";
} }
@ -623,6 +630,9 @@ a[class*=" icon-"]:hover {
.icon-refresh:before { .icon-refresh:before {
content: "\f021"; content: "\f021";
} }
.icon-category:before {
content: "\e9bc";
}
.icon-logout:before { .icon-logout:before {
content: "\ea14"; content: "\ea14";
} }
@ -641,6 +651,7 @@ a[class*=" icon-"]:hover {
.icon-rss:before { .icon-rss:before {
content: "\e901"; content: "\e901";
} }
*::selection { *::selection {
background: none repeat scroll 0% 0% #3D4450; background: none repeat scroll 0% 0% #3D4450;
color: #FFF; color: #FFF;
@ -1051,6 +1062,10 @@ aside.has-toc > section:last-child {
border-bottom: 1px solid #f1f1f1; border-bottom: 1px solid #f1f1f1;
margin-top: 20px; margin-top: 20px;
} }
.title > h2.tip {
border-bottom: 0
}
/* end article list */ /* end article list */
/* start comments */ /* start comments */

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -11,6 +11,7 @@
<glyph unicode="&#xe901;" glyph-name="rss" d="M136.294 209.070c-75.196 0-136.292-61.334-136.292-136.076 0-75.154 61.1-135.802 136.292-135.802 75.466 0 136.494 60.648 136.494 135.802-0.002 74.742-61.024 136.076-136.494 136.076zM0.156 612.070v-196.258c127.784 0 247.958-49.972 338.458-140.512 90.384-90.318 140.282-211.036 140.282-339.3h197.122c-0.002 372.82-303.282 676.070-675.862 676.070zM0.388 960v-196.356c455.782 0 826.756-371.334 826.756-827.644h196.856c0 564.47-459.254 1024-1023.612 1024z" /> <glyph unicode="&#xe901;" glyph-name="rss" d="M136.294 209.070c-75.196 0-136.292-61.334-136.292-136.076 0-75.154 61.1-135.802 136.292-135.802 75.466 0 136.494 60.648 136.494 135.802-0.002 74.742-61.024 136.076-136.494 136.076zM0.156 612.070v-196.258c127.784 0 247.958-49.972 338.458-140.512 90.384-90.318 140.282-211.036 140.282-339.3h197.122c-0.002 372.82-303.282 676.070-675.862 676.070zM0.388 960v-196.356c455.782 0 826.756-371.334 826.756-827.644h196.856c0 564.47-459.254 1024-1023.612 1024z" />
<glyph unicode="&#xe973;" glyph-name="register" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" /> <glyph unicode="&#xe973;" glyph-name="register" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" />
<glyph unicode="&#xe994;" glyph-name="setting" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" /> <glyph unicode="&#xe994;" glyph-name="setting" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" />
<glyph unicode="&#xe9bc;" glyph-name="category" d="M976 192h-16v208c0 61.756-50.242 112-112 112h-272v128h16c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-128h-272c-61.756 0-112-50.244-112-112v-208h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48zM192 0h-128v128h128v-128zM576 0h-128v128h128v-128zM448 704v128h128v-128h-128zM960 0h-128v128h128v-128z" />
<glyph unicode="&#xea13;" glyph-name="login" d="M384 448h-320v128h320v128l192-192-192-192zM1024 960v-832l-384-192v192h-384v256h64v-192h320v576l256 128h-576v-256h-64v320z" /> <glyph unicode="&#xea13;" glyph-name="login" d="M384 448h-320v128h320v128l192-192-192-192zM1024 960v-832l-384-192v192h-384v256h64v-192h320v576l256 128h-576v-256h-64v320z" />
<glyph unicode="&#xea14;" glyph-name="logout" d="M768 320v128h-320v128h320v128l192-192zM704 384v-256h-320v-192l-384 192v832h704v-320h-64v256h-512l256-128v-576h256v192z" /> <glyph unicode="&#xea14;" glyph-name="logout" d="M768 320v128h-320v128h320v128l192-192zM704 384v-256h-320v-192l-384 192v832h704v-320h-64v256h-512l256-128v-576h256v192z" />
<glyph unicode="&#xf002;" glyph-name="search" horiz-adv-x="951" d="M658.286 475.428c0 141.143-114.857 256-256 256s-256-114.857-256-256 114.857-256 256-256 256 114.857 256 256zM950.857 0c0-40-33.143-73.143-73.143-73.143-19.429 0-38.286 8-51.429 21.714l-196 195.429c-66.857-46.286-146.857-70.857-228-70.857-222.286 0-402.286 180-402.286 402.286s180 402.286 402.286 402.286 402.286-180 402.286-402.286c0-81.143-24.571-161.143-70.857-228l196-196c13.143-13.143 21.143-32 21.143-51.429z" /> <glyph unicode="&#xf002;" glyph-name="search" horiz-adv-x="951" d="M658.286 475.428c0 141.143-114.857 256-256 256s-256-114.857-256-256 114.857-256 256-256 256 114.857 256 256zM950.857 0c0-40-33.143-73.143-73.143-73.143-19.429 0-38.286 8-51.429 21.714l-196 195.429c-66.857-46.286-146.857-70.857-228-70.857-222.286 0-402.286 180-402.286 402.286s180 402.286 402.286 402.286 402.286-180 402.286-402.286c0-81.143-24.571-161.143-70.857-228l196-196c13.143-13.143 21.143-32 21.143-51.429z" />

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Binary file not shown.

View File

@ -19,13 +19,13 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "list", "name": "list",
"id": 290, "id": 6,
"order": 106, "order": 3,
"prevSize": 28, "prevSize": 28,
"code": 61642 "code": 61642
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 0 "iconIdx": 0
}, },
{ {
@ -46,13 +46,13 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "home", "name": "home",
"id": 289, "id": 7,
"order": 107, "order": 4,
"prevSize": 28, "prevSize": 28,
"code": 61461 "code": 61461
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 1 "iconIdx": 1
}, },
{ {
@ -73,14 +73,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "comments", "name": "comments",
"id": 286, "id": 8,
"order": 110, "order": 5,
"prevSize": 28, "prevSize": 28,
"code": 61670 "code": 61670
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 4 "iconIdx": 2
}, },
{ {
"icon": { "icon": {
@ -100,14 +100,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "date", "name": "date",
"id": 285, "id": 9,
"order": 111, "order": 6,
"prevSize": 28, "prevSize": 28,
"code": 61555 "code": 61555
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 5 "iconIdx": 3
}, },
{ {
"icon": { "icon": {
@ -127,14 +127,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "search", "name": "search",
"id": 284, "id": 10,
"order": 112, "order": 7,
"prevSize": 28, "prevSize": 28,
"code": 61442 "code": 61442
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 6 "iconIdx": 4
}, },
{ {
"icon": { "icon": {
@ -154,14 +154,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "up", "name": "up",
"id": 283, "id": 11,
"order": 113, "order": 8,
"prevSize": 28, "prevSize": 28,
"code": 61559 "code": 61559
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 7 "iconIdx": 5
}, },
{ {
"icon": { "icon": {
@ -181,14 +181,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "inbox", "name": "inbox",
"id": 280, "id": 12,
"order": 114, "order": 9,
"prevSize": 28, "prevSize": 28,
"code": 61468 "code": 61468
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 8 "iconIdx": 6
}, },
{ {
"icon": { "icon": {
@ -208,14 +208,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "tags", "name": "tags",
"id": 279, "id": 13,
"order": 115, "order": 10,
"prevSize": 28, "prevSize": 28,
"code": 61484 "code": 61484
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 9 "iconIdx": 7
}, },
{ {
"icon": { "icon": {
@ -236,14 +236,14 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "link", "name": "link",
"id": 278, "id": 14,
"order": 116, "order": 11,
"prevSize": 28, "prevSize": 28,
"code": 61633 "code": 61633
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 10 "iconIdx": 8
}, },
{ {
"icon": { "icon": {
@ -263,14 +263,41 @@
"attrs": [], "attrs": [],
"properties": { "properties": {
"name": "refresh", "name": "refresh",
"id": 277, "id": 15,
"order": 117, "order": 12,
"prevSize": 28, "prevSize": 28,
"code": 61473 "code": 61473
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 11 "iconIdx": 9
},
{
"icon": {
"paths": [
"M976 768h-16v-208c0-61.756-50.242-112-112-112h-272v-128h16c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h16v128h-272c-61.756 0-112 50.244-112 112v208h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48h-16v-192h256v192h-16c-26.4 0-48 21.6-48 48v160c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-160c0-26.4-21.6-48-48-48zM192 960h-128v-128h128v128zM576 960h-128v-128h128v128zM448 256v-128h128v128h-128zM960 960h-128v-128h128v128z"
],
"tags": [
"tree",
"branches",
"inheritance"
],
"defaultCode": 59836,
"grid": 16,
"attrs": []
},
"attrs": [],
"properties": {
"ligatures": "tree, branches",
"name": "category",
"order": 13,
"id": 16,
"prevSize": 32,
"code": 59836
},
"setIdx": 0,
"setId": 3,
"iconIdx": 10
}, },
{ {
"icon": { "icon": {
@ -294,14 +321,14 @@
"properties": { "properties": {
"ligatures": "exit, signout", "ligatures": "exit, signout",
"name": "logout", "name": "logout",
"id": 288, "id": 0,
"order": 108, "order": 14,
"prevSize": 32, "prevSize": 32,
"code": 59924 "code": 59924
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 2 "iconIdx": 11
}, },
{ {
"icon": { "icon": {
@ -323,15 +350,15 @@
{} {}
], ],
"properties": { "properties": {
"order": 109, "order": 15,
"id": 287, "id": 1,
"name": "views", "name": "views",
"prevSize": 32, "prevSize": 32,
"code": 59648 "code": 59648
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 3 "iconIdx": 12
}, },
{ {
"icon": { "icon": {
@ -359,14 +386,14 @@
"properties": { "properties": {
"ligatures": "user-plus, user2", "ligatures": "user-plus, user2",
"name": "register", "name": "register",
"id": 115, "id": 2,
"order": 118, "order": 16,
"prevSize": 32, "prevSize": 32,
"code": 59763 "code": 59763
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 12 "iconIdx": 13
}, },
{ {
"icon": { "icon": {
@ -392,14 +419,14 @@
"properties": { "properties": {
"ligatures": "cog, gear", "ligatures": "cog, gear",
"name": "setting", "name": "setting",
"id": 148, "id": 3,
"order": 119, "order": 17,
"prevSize": 32, "prevSize": 32,
"code": 59796 "code": 59796
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 13 "iconIdx": 14
}, },
{ {
"icon": { "icon": {
@ -421,14 +448,14 @@
"properties": { "properties": {
"ligatures": "enter, signin", "ligatures": "enter, signin",
"name": "login", "name": "login",
"id": 275, "id": 4,
"order": 120, "order": 18,
"prevSize": 32, "prevSize": 32,
"code": 59923 "code": 59923
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 14 "iconIdx": 15
}, },
{ {
"icon": { "icon": {
@ -451,15 +478,15 @@
{} {}
], ],
"properties": { "properties": {
"order": 121, "order": 19,
"id": 0, "id": 5,
"prevSize": 32, "prevSize": 32,
"code": 59649, "code": 59649,
"name": "rss" "name": "rss"
}, },
"setIdx": 1, "setIdx": 0,
"setId": 1, "setId": 3,
"iconIdx": 15 "iconIdx": 16
} }
], ],
"height": 1024, "height": 1024,

View File

@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var Skin={_initCommon:function(i){$("body").on("click",".content-reset img",function(){window.open(this.src)});var t=$("header .banner"),n=$("header .navbar");$(window).scroll(function(){if($(window).scrollTop()>125?i.show():i.hide(),$(window).width()<701)return!1;$(window).scrollTop()>t.height()?(n.addClass("pin"),$(".main-wrap").parent().css("margin-top","86px")):(n.removeClass("pin"),$(".main-wrap").parent().css("margin-top","0"))})},init:function(){this._initCommon($(".icon-up")),$(".navbar nav a").each(function(){this.href===location.href&&(this.className="current")}),$(".responsive .list a").each(function(){this.href===location.href&&$(this).parent().addClass("current")}),$(".responsive .icon-list").click(function(){$(".responsive .list").slideToggle()})},_initArticleCommon:function(i,t){if($(".b3-solo-list li").length>0&&$(window).width()>1e3){$("aside").addClass("has-toc");var n='<ul class="fn-clear"><li class="current" data-tab="toc">'+i+'</li><li data-tab="site">'+t+"</li></ul><section></section>";$("aside").prepend(n);var o=$("aside section:first").html($(".b3-solo-list")),s=$("aside section:last");o.height($(window).height()-154).css({overflow:"auto",width:$("aside").width()+"px"}),s.hide(),$("aside > ul > li").click(function(){"toc"===$(this).data("tab")?s.animate({opacity:"0",top:"-50px"},300,function(){o.show().css("top","-50px"),o.animate({opacity:"1",top:"0"},300).show()}):o.animate({opacity:"0",top:"-50px"},300,function(){o.hide().css("top","-50px"),s.animate({opacity:"1",top:"0"},300).show()}).hide(),$("aside > ul > li").removeClass("current"),$(this).addClass("current")}),$(window).scroll(function(){$(window).scrollTop()>125?$("aside section:eq(0)").css({position:"fixed",top:"51px",backgroundColor:"#fff"}):$("aside section:eq(0)").css({position:"inherit",borderLeft:0})})}},initArticle:function(i,t){this._initArticleCommon(i,t)}};Skin.init(); var Skin={_initCommon:function(i){$("body").on("click",".content-reset img",function(){window.open(this.src)});var t=$("header .banner"),n=$("header .navbar");$(window).scroll(function(){return $(window).scrollTop()>125?i.show():i.hide(),!($(window).width()<701)&&void($(window).scrollTop()>t.height()?(n.addClass("pin"),$(".main-wrap").parent().css("margin-top","86px")):(n.removeClass("pin"),$(".main-wrap").parent().css("margin-top","0")))})},init:function(){this._initCommon($(".icon-up")),$(".navbar nav a").each(function(){this.href===location.href&&(this.className="current")}),$(".responsive .list a").each(function(){this.href===location.href&&$(this).parent().addClass("current")}),$(".responsive .icon-list").click(function(){$(".responsive .list").slideToggle()})},_initArticleCommon:function(i,t){if($(".b3-solo-list li").length>0&&$(window).width()>1e3){$("aside").addClass("has-toc");var n='<ul class="fn-clear"><li class="current" data-tab="toc">'+i+'</li><li data-tab="site">'+t+"</li></ul><section></section>";$("aside").prepend(n);var o=$("aside section:first").html($(".b3-solo-list")),s=$("aside section:last");o.height($(window).height()-154).css({overflow:"auto",width:$("aside").width()+"px"}),s.hide(),$("aside > ul > li").click(function(){"toc"===$(this).data("tab")?s.animate({opacity:"0",top:"-50px"},300,function(){o.show().css("top","-50px"),o.animate({opacity:"1",top:"0"},300).show()}):o.animate({opacity:"0",top:"-50px"},300,function(){o.hide().css("top","-50px"),s.animate({opacity:"1",top:"0"},300).show()}).hide(),$("aside > ul > li").removeClass("current"),$(this).addClass("current")}),$(window).scroll(function(){$(window).scrollTop()>125?$("aside section:eq(0)").css({position:"fixed",top:"51px",backgroundColor:"#fff"}):$("aside section:eq(0)").css({position:"inherit",borderLeft:0})})}},initArticle:function(i,t){this._initArticleCommon(i,t)}};Skin.init();

View File

@ -16,7 +16,7 @@
# #
# Description: B3log Solo language configurations(en_US). # Description: B3log Solo language configurations(en_US).
# Version: 1.1.0.0, Mar 14, 2017 # Version: 1.2.0.0, Apr 8, 2017
# Author: Liyuan Li # Author: Liyuan Li
# #
@ -27,4 +27,5 @@ readLabel=Read More
nextArticleLabel=Next nextArticleLabel=Next
previousArticleLabel=Previous previousArticleLabel=Previous
articleCP1Label=Please indicate the source: articleCP1Label=Please indicate the source:
viewCountLabel=View Count viewCountLabel=View Count
cntLabel=

View File

@ -16,7 +16,7 @@
# #
# Description: B3log Solo default language configurations(zh_CN). # Description: B3log Solo default language configurations(zh_CN).
# Version: 1.1.0.0, Mar 14, 2017 # Version: 1.2.0.0, Apr 8, 2017
# Author: Liyuan Li # Author: Liyuan Li
# #
@ -27,4 +27,5 @@ readLabel=\u9605\u8BFB\u5168\u6587
nextArticleLabel=\u65B0\u4E00\u7BC7 nextArticleLabel=\u65B0\u4E00\u7BC7
previousArticleLabel=\u65E7\u4E00\u7BC7 previousArticleLabel=\u65E7\u4E00\u7BC7
articleCP1Label=\u8F6C\u8F7D\u8BF7\u6CE8\u660E\u6765\u6E90\uFF1A articleCP1Label=\u8F6C\u8F7D\u8BF7\u6CE8\u660E\u6765\u6E90\uFF1A
viewCountLabel=\u6D4F\u89C8\u6570 viewCountLabel=\u6D4F\u89C8\u6570
cntLabel=\u4E2A

View File

@ -6,14 +6,29 @@
</div> </div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="module">
<header><h2>${categoryLabel}</h2></header>
<main>
<#list mostUsedCategories as category>
<a href="${servePath}/category/${category.categoryURI}"
aria-label="${category.categoryTagCnt} ${cntLabel}${tagsLabel}"
class="tag tooltipped tooltipped-n">
${category.categoryTitle}</a>
</#list>
</main>
</div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="module"> <div class="module">
<header><h2>${popTagsLabel}</h2></header> <header><h2>${tagsLabel}</h2></header>
<main> <main>
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" <a rel="tag"
href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}"
class="tag tooltipped tooltipped-n" aria-label="${tag.tagPublishedRefCount} ${countLabel}${articleLabel}"> class="tag tooltipped tooltipped-n"
aria-label="${tag.tagPublishedRefCount} ${countLabel}${articleLabel}">
${tag.tagTitle}</a> ${tag.tagTitle}</a>
</#list> </#list>
</main> </main>

View File

@ -11,56 +11,13 @@
<#include "header.ftl"> <#include "header.ftl">
<div class="wrapper"> <div class="wrapper">
<div class="main-wrap"> <div class="main-wrap">
<main class="other"> <main>
<div class="title"> <div class="title">
<h2><i class="icon-tags"></i> <h2 class="tip"><i class="icon-tags"></i>
&nbsp;${tag.tagTitle} &nbsp;${tag.tagTitle}
<small>${tagLabel}</small> <small>${tagLabel}</small>
</div> </div>
<ul class="list"> <#include "article-list.ftl">
<#list articles as article>
<li>
<a class="post-title" href="${servePath}${article.articlePermalink}">
<span>${article.articleTitle}</span>
<#if article.articlePutTop>
<sup>
${topArticleLabel}
</sup>
</#if>
<#if article.hasUpdated>
<sup>
${updatedLabel}
</sup>
</#if>
<time class="fn-right">
<i class="icon-date"></i> ${article.articleCreateDate?string("yyyy-MM-dd")}
</time>
</a>
</li>
</#list>
</ul>
<#if 0 != paginationPageCount>
<div class="fn-clear">
<nav class="pagination fn-right">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}/${paginationPreviousPageNum}" class="page-number">&laquo;</a>
<a class="page-number" href="${servePath}${path}/1">1</a> <span class="page-number">...</span>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="page-number current">${paginationPageNum}</span>
<#else>
<a class="page-number" href="${servePath}${path}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> <span class="page-number">...</span>
<a href="${servePath}${path}/${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}/${paginationNextPageNum}" class="page-number">&raquo;</a>
</#if>
</nav>
</div>
</#if>
</main> </main>
<#include "side.ftl"> <#include "side.ftl">
</div> </div>

View File

@ -0,0 +1,41 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<#include "side-tool.ftl">
<div class="wrapper">
<#include "header.ftl">
<div>
<div class="main">
<div class="main-content">
<h2>
${categoryLabel}
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</div>
<div class="main-footer"></div>
</div>
<div class="side-navi">
<#include "side.ftl">
</div>
<div class="clear"></div>
<div class="brush">
<div class="brush-icon"></div>
<div id="brush"></div>
</div>
<div class="footer">
<#include "footer.ftl">
</div>
</div>
</div>
</body>
</html>

View File

@ -60,25 +60,42 @@
</dl> </dl>
</div> </div>
</#if> </#if>
<#if 0 != mostUsedTags?size>
<div class="item"> <#if 0 != mostUsedCategories?size || 0 != mostUsedTags?size>
<dl> <div class="item">
<dd> <dl>
<h4>${popTagsLabel}</h4> <#if 0 != mostUsedCategories?size>
<ul class="navi-tags"> <dd>
<#list mostUsedTags as tag> <h4>${categoryLabel}</h4>
<li> <ul>
<a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}"> <#list mostUsedCategories as category>
${tag.tagTitle}(${tag.tagPublishedRefCount})</a> <li>
<img onclick="window.location='${servePath}/tag-articles-feed.do?oId=${tag.oId}'" <a href="${servePath}/category/${category.categoryURI}">
alt="${tag.tagTitle}" src="${staticServePath}/images/feed.png"/> ${category.categoryTitle} (${category.categoryTagCnt})</a>
</li> </li>
</#list> </#list>
</ul> </ul>
</dd> </dd>
</dl> </#if>
</div> <#if 0 != mostUsedTags?size>
<dd>
<h4>${tagsLabel}</h4>
<ul class="navi-tags">
<#list mostUsedTags as tag>
<li>
<a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">
${tag.tagTitle} (${tag.tagPublishedRefCount})</a>
<img onclick="window.location='${servePath}/tag-articles-feed.do?oId=${tag.oId}'"
alt="${tag.tagTitle}" src="${staticServePath}/images/feed.png"/>
</li>
</#list>
</ul>
</dd>
</#if>
</dl>
</div>
</#if> </#if>
<#if 0 != links?size> <#if 0 != links?size>
<div class="item"> <div class="item">
<dl> <dl>
@ -110,11 +127,11 @@
<#if "en" == localeString?substring(0, 2)> <#if "en" == localeString?substring(0, 2)>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}" <a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
title="${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})"> title="${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})">
${archiveDate.monthName} ${archiveDate.archiveDateYear}(${archiveDate.archiveDatePublishedArticleCount})</a> ${archiveDate.monthName} ${archiveDate.archiveDateYear} (${archiveDate.archiveDatePublishedArticleCount})</a>
<#else> <#else>
<a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}" <a href="${servePath}/archives/${archiveDate.archiveDateYear}/${archiveDate.archiveDateMonth}"
title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})"> title="${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})">
${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel}(${archiveDate.archiveDatePublishedArticleCount})</a> ${archiveDate.archiveDateYear} ${yearLabel} ${archiveDate.archiveDateMonth} ${monthLabel} (${archiveDate.archiveDatePublishedArticleCount})</a>
</#if> </#if>
</li> </li>
</#list> </#list>

View File

@ -0,0 +1,29 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
<#include "header.ftl">
<div class="container">
<div class="row">
<div class="col-sm-2"></div>
<div class="col-sm-8 site article-list">
<h2>
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</div>
<div class="col-sm-2"></div>
</div>
</div>
<#include "footer.ftl">
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -15,6 +15,19 @@
<div class="col-sm-2"></div> <div class="col-sm-2"></div>
<div class="col-sm-8 site"> <div class="col-sm-8 site">
<h2>${categoryLabel}</h2>
<ul>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
<span>${category.categoryTitle}</span>
(<b>${category.categoryTagCnt}</b>)</a>
</a>
</li>
</#list>
</ul>
<h2>${tagsLabel}</h2>
<ul> <ul>
<#list tags as tag> <#list tags as tag>
<li> <li>

View File

@ -0,0 +1,37 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div class="content">
<div class="header">
<#include "header.ftl">
</div>
<div class="body">
<div class="left main">
<div>
<h2 class="marginLeft12 marginBottom12">
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
</div>
<#include "article-list.ftl">
</div>
<div class="right side">
<#include "side.ftl">
</div>
<div class="clear"></div>
</div>
<div class="footer">
<#include "footer.ftl">
</div>
</div>
</body>
</html>

View File

@ -65,10 +65,31 @@
</ul> </ul>
<div class="line"></div> <div class="line"></div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<ul>
<li>
<h4>${categoryLabel}</h4>
</li>
<li>
<ul>
<#list mostUsedCategories as category>
<li>
<a class="tag" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}</a> (${category.categoryTagCnt})
</li>
</#list>
</ul>
</li>
</ul>
<div class="line"></div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<ul> <ul>
<li> <li>
<h4>${popTagsLabel}</h4> <h4>${tagsLabel}</h4>
</li> </li>
<li> <li>
<ul> <ul>

View File

@ -0,0 +1,29 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div class="header">
<#include "header.ftl">
</div>
<div class="content">
<h2>${categoryLabel}
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</div>
<div>
<#include "side.ftl">
</div>
<div class="footer">
<#include "footer.ftl">
</div>
</body>
</html>

View File

@ -68,9 +68,26 @@
</ul> </ul>
</div> </div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="left footer-block">
<h4><span class="left">${categoryLabel}</span></h4>
<span class="clear"></span>
<ul>
<#list mostUsedCategories as category>
<li class="mostUsedTags">
<a href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}(${category.categoryTagCnt})</a>
</li>
</#list>
</ul>
</div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="left footer-block"> <div class="left footer-block">
<h4><span class="left">${popTagsLabel}</span></h4> <h4><span class="left">${tagsLabel}</span></h4>
<span class="clear"></span> <span class="clear"></span>
<ul> <ul>
<#list mostUsedTags as tag> <#list mostUsedTags as tag>

View File

@ -0,0 +1,26 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<#include "header.ftl">
<div class="main">
<div class="wrapper">
<h2>
${categoryLabel}
${category.categoryTitle}
(${category.categoryTagCnt})
</h2>
${category.categoryDescription}
<#include "article-list.ftl">
</div>
</div>
<#include "footer.ftl">
</body>
</html>

View File

@ -47,7 +47,7 @@
</#if> </#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="module side-tags"> <div class="module side-tags">
<h3 class="ft-gray">${popTagsLabel}</h3> <h3 class="ft-gray">${tagsLabel}</h3>
<ul> <ul>
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<li> <li>
@ -61,6 +61,23 @@
<div class="clear"></div> <div class="clear"></div>
</div> </div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="module side-tags">
<h3 class="ft-gray">${categoryLabel}</h3>
<ul>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
title="${category.categoryTitle} (${category.categoryTagCnt})">
${category.categoryTitle}</a>
</li>
</#list>
</ul>
<div class="clear"></div>
</div>
</#if>
<div class="clear"></div> <div class="clear"></div>
<#if 0 != mostCommentArticles?size> <#if 0 != mostCommentArticles?size>
<div class="module side-most-comment"> <div class="module side-most-comment">

2
ease/js/ease.min.js vendored
View File

@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)},getNextPage=function(){var e=$(".article-next");currentPage+=1;var t="/articles/";if(1===$("#tag").length){var a=location.pathname.split("/");t="/articles/tags/"+a[a.length-1]+"/"}else if(1===$("#archive").length){var a=location.pathname.split("/");t="/articles/archives/"+a[a.length-2]+"/"+a[a.length-1]+"/"}else if(1===$("#author").length){var a=location.pathname.split("/");t="/articles/authors/"+a[a.length-1]+"/"}$.ajax({url:latkeConfig.servePath+t+currentPage,type:"GET",beforeSend:function(){e.css("background","url("+latkeConfig.staticServePath+"/skins/ease/images/ajax-loader.gif) no-repeat scroll center center #fefefe")},success:function(t,a){if(t.sc){for(var i="",r=t.rslts.pagination,n=0;n<t.rslts.articles.length;n++){var l=t.rslts.articles[n],s="";t.rslts.articles.length-1===n&&(s=" article-last"),i+='<li class="article'+s+'"><div class="article-title"><h2><a rel="bookmark" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'">'+l.articleTitle+"</a>",l.hasUpdated&&(i+="<sup>"+Label.updatedLabel+"</sup>"),l.articlePutTop&&(i+="<sup>"+Label.topArticleLabel+"</sup>"),i+='</h2><div class="right"><a rel="nofollow" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'#comments">'+ +l.articleCommentCount+"&nbsp;&nbsp;"+Label.commentLabel+'</a>&nbsp;&nbsp;<a rel="nofollow" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'">'+l.articleViewCount+"&nbsp;&nbsp;"+Label.viewLabel+'</a></div><div class="clear"></div></div><div class="article-body"><div id="abstract'+l.oId+'">'+l.articleAbstract+'</div><div id="content'+l.oId+'" class="none"></div></div><div class="right ft-gray">',l.hasUpdated?i+=Util.toDate(l.articleUpdateTime,"yy-MM-dd HH:mm"):i+=Util.toDate(l.articleCreateTime,"yy-MM-dd HH:mm"),i+=' <a href="'+latkeConfig.servePath+"/authors/"+l.authorId+'">'+l.authorName+'</a></div><div class="left ft-gray">'+Label.tag1Label+" ";for(var o=l.articleTags.split(","),c=0;c<o.length;c++)i+='<a rel="tag" href="'+latkeConfig.servePath+"/tags/"+encodeURIComponent(o[c])+'">'+o[c]+"</a>",c<o.length-1&&(i+=", ");i+='</div><div class="clear"></div></li>'}$(".article-last").removeClass("article-last"),$(".main>.wrapper>ul").append(i),r.paginationPageCount===currentPage?e.remove():e.css("background","none")}}})},ease={$header:$(".header"),headerH:103,$body:$(".main > .wrapper"),$nav:$(".nav"),getCurrentPage:function(){var e=$(".article-next");e.length>0&&(window.currentPage=e.data("page"))},setNavCurrent:function(){$(".nav ul a").each(function(){var e=$(this);e.attr("href")===location.href?e.addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")})},initCommon:function(){Util.init(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide")},initArchives:function(){var e=$(".archives");if(!(e.length<1)){$(".footer").css("marginTop","30px");for(var t=[],a=e.find("span").each(function(){for(var e=$(this).data("year"),a=!0,i=0;i<t.length;i++)if(e===t[i]){a=!1;break}a&&t.push(e)}),i="",r=0;r<t.length;r++){for(var n="",l=0;l<a.length;l++){var s=$(a[l]);s.data("year")===t[r]&&(n+=s.html())}i+="<div><h3 class='ft-gray'>"+t[r]+"</h3>"+n+"</div>"}e.html(i);for(var o=$(".archives>div"),c=0,h=0,g=[],d=0;d<o.length;d++){for(var f=0;f<3&&!(d>=o.length);f++)o[d].style.left=310*f+"px",c>0?(""!==o[d-3].style.top&&(h=parseInt(o[d-3].style.top)),o[d].style.top=$(o[d-3]).height()+60+h+"px",g[f]=parseInt(o[d].style.top)+$(o[d]).height()+60):g[f]=$(o[d]).height()+60,f<2&&(d+=1);c+=1}e.height(g.sort()[g.length-1])}},scrollEvent:function(){var e=this;$(window).scroll(function(){var t=$(window).scrollTop();if(t>e.headerH){var a=$(window).height(),i=t+a-21;$("body").height()-58<=t+a&&(i=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",i)}else $("#goTop").hide()})},setDynamic:function(){var e=$(".dynamic");if(!($(".dynamic").length<1)){var t=e.find(".side-comments"),a=e.find(".side-tags"),i=e.find(".side-most-comment"),r=e.find(".side-most-view");t.height()>a.height()?a.height(t.height()):t.height(a.height()),i.height()>r.height()?r.height(i.height()):i.height(r.height()),$(".article-body").each(function(){this.innerHTML=Util.replaceEmString($(this).html())})}}};!function(){ease.getCurrentPage(),ease.initCommon(),ease.scrollEvent(),ease.setNavCurrent(),ease.initArchives(),ease.setDynamic()}(); var goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)},getNextPage=function(){var e=$(".article-next");currentPage+=1;var t="/articles/";if(1===$("#tag").length){var a=location.pathname.split("/");t="/articles/tags/"+a[a.length-1]+"/"}else if(1===$("#archive").length){var a=location.pathname.split("/");t="/articles/archives/"+a[a.length-2]+"/"+a[a.length-1]+"/"}else if(1===$("#author").length){var a=location.pathname.split("/");t="/articles/authors/"+a[a.length-1]+"/"}$.ajax({url:latkeConfig.servePath+t+currentPage,type:"GET",beforeSend:function(){e.css("background","url("+latkeConfig.staticServePath+"/skins/ease/images/ajax-loader.gif) no-repeat scroll center center #fefefe")},success:function(t,a){if(t.sc){for(var i="",r=t.rslts.pagination,n=0;n<t.rslts.articles.length;n++){var l=t.rslts.articles[n],s="";t.rslts.articles.length-1===n&&(s=" article-last"),i+='<li class="article'+s+'"><div class="article-title"><h2><a rel="bookmark" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'">'+l.articleTitle+"</a>",l.hasUpdated&&(i+="<sup>"+Label.updatedLabel+"</sup>"),l.articlePutTop&&(i+="<sup>"+Label.topArticleLabel+"</sup>"),i+='</h2><div class="right"><a rel="nofollow" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'#comments">'+ +l.articleCommentCount+"&nbsp;&nbsp;"+Label.commentLabel+'</a>&nbsp;&nbsp;<a rel="nofollow" class="ft-gray" href="'+latkeConfig.servePath+l.articlePermalink+'">'+l.articleViewCount+"&nbsp;&nbsp;"+Label.viewLabel+'</a></div><div class="clear"></div></div><div class="article-body"><div id="abstract'+l.oId+'">'+l.articleAbstract+'</div><div id="content'+l.oId+'" class="none"></div></div><div class="right ft-gray">',i+=l.hasUpdated?Util.toDate(l.articleUpdateTime,"yy-MM-dd HH:mm"):Util.toDate(l.articleCreateTime,"yy-MM-dd HH:mm"),i+=' <a href="'+latkeConfig.servePath+"/authors/"+l.authorId+'">'+l.authorName+'</a></div><div class="left ft-gray">'+Label.tag1Label+" ";for(var o=l.articleTags.split(","),c=0;c<o.length;c++)i+='<a rel="tag" href="'+latkeConfig.servePath+"/tags/"+encodeURIComponent(o[c])+'">'+o[c]+"</a>",c<o.length-1&&(i+=", ");i+='</div><div class="clear"></div></li>'}$(".article-last").removeClass("article-last"),$(".main>.wrapper>ul").append(i),r.paginationPageCount===currentPage?e.remove():e.css("background","none")}}})},ease={$header:$(".header"),headerH:103,$body:$(".main > .wrapper"),$nav:$(".nav"),getCurrentPage:function(){var e=$(".article-next");e.length>0&&(window.currentPage=e.data("page"))},setNavCurrent:function(){$(".nav ul a").each(function(){var e=$(this);e.attr("href")===location.href?e.addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")})},initCommon:function(){Util.init(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide")},initArchives:function(){var e=$(".archives");if(!(e.length<1)){$(".footer").css("marginTop","30px");for(var t=[],a=e.find("span").each(function(){for(var e=$(this).data("year"),a=!0,i=0;i<t.length;i++)if(e===t[i]){a=!1;break}a&&t.push(e)}),i="",r=0;r<t.length;r++){for(var n="",l=0;l<a.length;l++){var s=$(a[l]);s.data("year")===t[r]&&(n+=s.html())}i+="<div><h3 class='ft-gray'>"+t[r]+"</h3>"+n+"</div>"}e.html(i);for(var o=$(".archives>div"),c=0,h=0,g=[],d=0;d<o.length;d++){for(var f=0;f<3&&!(d>=o.length);f++)o[d].style.left=310*f+"px",c>0?(""!==o[d-3].style.top&&(h=parseInt(o[d-3].style.top)),o[d].style.top=$(o[d-3]).height()+60+h+"px",g[f]=parseInt(o[d].style.top)+$(o[d]).height()+60):g[f]=$(o[d]).height()+60,f<2&&(d+=1);c+=1}e.height(g.sort()[g.length-1])}},scrollEvent:function(){var e=this;$(window).scroll(function(){var t=$(window).scrollTop();if(t>e.headerH){var a=$(window).height(),i=t+a-21;$("body").height()-58<=t+a&&(i=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",i)}else $("#goTop").hide()})},setDynamic:function(){var e=$(".dynamic");if(!($(".dynamic").length<1)){var t=e.find(".side-comments"),a=e.find(".side-tags"),i=e.find(".side-most-comment"),r=e.find(".side-most-view");t.height()>a.height()?a.height(t.height()):t.height(a.height()),i.height()>r.height()?r.height(i.height()):i.height(r.height()),$(".article-body").each(function(){this.innerHTML=Util.replaceEmString($(this).html())})}}};!function(){ease.getCurrentPage(),ease.initCommon(),ease.scrollEvent(),ease.setNavCurrent(),ease.initArchives(),ease.setDynamic()}();

View File

@ -0,0 +1,41 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<#include "nav.ftl">
<div class="wrapper">
<div class="content">
<#include "header.ftl">
<div class="roundtop"></div>
<div class="body">
<div class="left main">
<div class="kind-title">
${categoryLabel}
</div>
<div class="kind-panel">
${category.categoryTitle}
(${category.categoryTagCnt}) ${category.categoryDescription}
</div>
<#include "article-list.ftl">
</div>
<div class="right">
<#include "side.ftl">
</div>
<div class="clear"></div>
</div>
<div class="roundbottom"></div>
</div>
</div>
<div class="footer">
<div class="footer-icon"><#include "statistic.ftl"></div>
<#include "footer.ftl">
</div>
</body>
</html>

View File

@ -18,7 +18,7 @@
* skin favoutite style * skin favoutite style
* *
* @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a> * @author <a href="mailto:LLY219@gmail.com">Liyuan Li</a>
* @version 1.0.0.8, Jun 6, 2012 * @version 1.1.0.8, Apr 9, 2017
*/ */
body { body {
background: url("../images/bg.jpg") repeat scroll left top transparent; background: url("../images/bg.jpg") repeat scroll left top transparent;
@ -581,6 +581,11 @@ h5 {
background: url("../images/categorie.png") no-repeat scroll left top transparent; background: url("../images/categorie.png") no-repeat scroll left top transparent;
height: 64px; height: 64px;
} }
#sideNavi .tags {
background: url(../images/tagsIcon.png) no-repeat scroll left top transparent;
height: 52px;
background-size: contain;
}
.archivio { .archivio {
background: url("../images/archivio.png") no-repeat scroll left top transparent; background: url("../images/archivio.png") no-repeat scroll left top transparent;
height: 64px; height: 64px;

File diff suppressed because one or more lines are too long

View File

@ -76,10 +76,29 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="item">
<div class="categorie">
<h4>${categoryLabel}</h4>
</div>
<ul id="mostViewCountArticles">
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
title="${category.categoryTitle} (${category.categoryTagCnt})">
${category.categoryTitle}</a>(${category.categoryTitle})
</li>
</#list>
</ul>
</div>
<div class="line"></div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="item"> <div class="item">
<div class="categorie"> <div class="tags">
<h4>${popTagsLabel}</h4> <h4>${tagsLabel}</h4>
</div> </div>
<ul class="navi-tags"> <ul class="navi-tags">
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
@ -96,6 +115,8 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
</#if> </#if>
<#if 0 != links?size> <#if 0 != links?size>
<div class="item"> <div class="item">
<div class="blog"> <div class="blog">

View File

@ -0,0 +1,27 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="nav-closed">
<div class="nav">
<#include "side.ftl">
</div>
<div class="site-wrapper">
<#include "header.ftl">
<main id="content">
<h2 class="fn-wrap">
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</main>
<#include "footer.ftl">
</div>
</body>
</html>

35
finding/category.ftl Normal file
View File

@ -0,0 +1,35 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${categoryLabel} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${categoryLabel}"/>
<meta name="description" content="<#list mostUsedCategories as category>${category.categoryTitle}<#if category_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="nav-closed">
<div class="nav">
<#include "side.ftl">
</div>
<div class="site-wrapper">
<#include "header.ftl">
<main id="content">
<ul id="tags" class="fn-clear fn-wrap">
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
title="${category.categoryTitle} (${category.categoryTagCnt})">
${category.categoryTitle} (<b>${category.categoryTagCnt}</b>)
</a>
</li>
</#list>
</ul>
</main>
<#include "footer.ftl">
</div>
<script type="text/javascript">
Util.buildTags();
</script>
</body>
</body>
</html>

View File

@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var Finding={init:function(){Util.killIE(),this._initToc(),$(".scroll-down").click(function(t){t.preventDefault();var o=$(this),n=$("html, body"),a=!!o.attr("data-offset")&&o.attr("data-offset"),i=parseInt(a);n.stop(!0,!1).animate({scrollTop:$(this.hash).offset().top+i},500)}),$("body").click(function(t){0===$(t.target).closest(".nav").length&&$("body").hasClass("nav-opened")&&!$(t.target).hasClass("icon-gotop")&&$("body").removeClass("nav-opened").addClass("nav-closed")}),$(".menu-button").click(function(t){t.stopPropagation(),$("body").toggleClass("nav-opened nav-closed")}),$("body").append('<a class="icon-gotop fn-none" href="javascript:Util.goTop()"></a>'),$(window).scroll(function(){$(window).scrollTop()>$(window).height()?$(".icon-gotop").show():$(".icon-gotop").hide()})},_initToc:function(){if(0===$(".b3-solo-list").length)return $(".nav .icon-sitemap, .nav .icon-list").show(),!1;$(".nav .icon-sitemap, .nav .icon-list").show(),$(".nav ul:first").hide(),$(".nav ul:first").after($(".b3-solo-list")),$("body").toggleClass("nav-opened nav-closed")},tabNav:function(t){$(".nav .current").removeClass("current"),"toc"===t?($(".nav ul:first").hide(),$(".nav ul:last").show(),$(".icon-list").addClass("current")):($(".nav ul:first").show(),$(".nav ul:last").hide(),$(".icon-sitemap").addClass("current"))},share:function(){$(".share span").click(function(){var t=$(this).data("type"),o=encodeURIComponent($("title").text()),n=$(".post-title a").attr("href")?$(".post-title a").attr("href"):location,a=$(".post-content img:eq(0)").attr("src"),i={};i.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+o+"&url="+n+"&pic="+a,i.weibo="http://v.t.sina.com.cn/share/share.php?title="+o+"&url="+n+"&pic="+a,i.google="https://plus.google.com/share?url="+n,i.twitter="https://twitter.com/intent/tweet?status="+o+" "+n,window.open(i[t],"_blank","top=100,left=200,width=648,height=618")})}};Finding.init(); var Finding={init:function(){Util.killIE(),this._initToc(),$(".scroll-down").click(function(t){t.preventDefault();var o=$(this),n=$("html, body"),a=!!o.attr("data-offset")&&o.attr("data-offset"),i=parseInt(a);n.stop(!0,!1).animate({scrollTop:$(this.hash).offset().top+i},500)}),$("body").click(function(t){0===$(t.target).closest(".nav").length&&$("body").hasClass("nav-opened")&&!$(t.target).hasClass("icon-gotop")&&$("body").removeClass("nav-opened").addClass("nav-closed")}),$(".menu-button").click(function(t){t.stopPropagation(),$("body").toggleClass("nav-opened nav-closed")}),$("body").append('<a class="icon-gotop fn-none" href="javascript:Util.goTop()"></a>'),$(window).scroll(function(){$(window).scrollTop()>$(window).height()?$(".icon-gotop").show():$(".icon-gotop").hide()})},_initToc:function(){return 0===$(".b3-solo-list").length?($(".nav .icon-sitemap, .nav .icon-list").show(),!1):($(".nav .icon-sitemap, .nav .icon-list").show(),$(".nav ul:first").hide(),$(".nav ul:first").after($(".b3-solo-list")),void $("body").toggleClass("nav-opened nav-closed"))},tabNav:function(t){$(".nav .current").removeClass("current"),"toc"===t?($(".nav ul:first").hide(),$(".nav ul:last").show(),$(".icon-list").addClass("current")):($(".nav ul:first").show(),$(".nav ul:last").hide(),$(".icon-sitemap").addClass("current"))},share:function(){$(".share span").click(function(){var t=$(this).data("type"),o=encodeURIComponent($("title").text()),n=$(".post-title a").attr("href")?$(".post-title a").attr("href"):location,a=$(".post-content img:eq(0)").attr("src"),i={};i.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+o+"&url="+n+"&pic="+a,i.weibo="http://v.t.sina.com.cn/share/share.php?title="+o+"&url="+n+"&pic="+a,i.google="https://plus.google.com/share?url="+n,i.twitter="https://twitter.com/intent/tweet?status="+o+" "+n,window.open(i[t],"_blank","top=100,left=200,width=648,height=618")})}};Finding.init();

View File

@ -24,6 +24,9 @@
<li> <li>
<a href="${servePath}/dynamic.html">${dynamicLabel}</a> <a href="${servePath}/dynamic.html">${dynamicLabel}</a>
</li> </li>
<li>
<a href="${servePath}/category.html">${categoryLabel}</a>
</li>
<li> <li>
<a href="${servePath}/tags.html">${allTagsLabel}</a> <a href="${servePath}/tags.html">${allTagsLabel}</a>
</li> </li>

View File

@ -0,0 +1,39 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div class="bg">
<div class="wrapper">
<div class="content">
<#include "header.ftl">
<div class="body">
<div class="left main">
<div class="kind-title">
${categoryLabel}
</div>
<div class="kind-panel">
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</div>
<#include "article-list.ftl">
</div>
<div class="right">
<#include "side.ftl">
</div>
<div class="clear"></div>
</div>
<div class="footer">
<#include "footer.ftl">
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -69,9 +69,26 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="item">
<h4>${categoryLabel}</h4>
<ul class="navi-tags">
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}</a> (${category.categoryTagCnt})
</li>
</#list>
</ul>
</div>
<div class="line"></div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="item"> <div class="item">
<h4>${popTagsLabel}</h4> <h4>${tagsLabel}</h4>
<ul class="navi-tags"> <ul class="navi-tags">
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<li> <li>
@ -79,7 +96,7 @@
<img alt="${tag.tagTitle}" src="${staticServePath}/images/feed.png"/> <img alt="${tag.tagTitle}" src="${staticServePath}/images/feed.png"/>
</a> </a>
<a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}"> <a rel="tag" title="${tag.tagTitle}(${tag.tagPublishedRefCount})" href="${servePath}/tags/${tag.tagTitle?url('UTF-8')}">
${tag.tagTitle}</a>(${tag.tagPublishedRefCount}) ${tag.tagTitle}</a> (${tag.tagPublishedRefCount})
</li> </li>
</#list> </#list>
</ul> </ul>

View File

@ -0,0 +1,53 @@
<#include "macro-head.ftl">
<#include "macro-side.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div class="wrapper">
<div id="header">
<#include "header.ftl" />
<div class="sub-nav fn-clear">
<h2>
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#if 0 != paginationPageCount>
<div class="pagination">
<#if 1 != paginationPageNums?first>
<a id="previousPage" href="${servePath}${path}/${paginationPreviousPageNum}"
title="${previousPageLabel}"><</a>
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span>${paginationPageNum}</span>
<#else>
<a href="${servePath}${path}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount>
<a id="nextPage" href="${servePath}${path}/${paginationNextPageNum}" title="${nextPagePabel}">></a>
</#if>
</div>
</#if>
</div>
</div>
<div class="fn-clear">
<div class="main">
<#include "article-list.ftl"/>
<#include "copyright.ftl"/>
</div>
<@side isArticle=false />
</div>
</div>
<span id="goTop" onclick="Util.goTop()" data-ico="&#xe042;" class="side-tile"></span>
<#include "footer.ftl"/>
</body>
</html>

40
metro-hot/category.ftl Normal file
View File

@ -0,0 +1,40 @@
<#include "macro-head.ftl">
<#include "macro-side.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${categoryLabel} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${categoryLabel}"/>
<meta name="description" content="<#list mostUsedCategories as category>${category.categoryTitle}<#if category_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div class="wrapper">
<div id="header">
<#include "header.ftl" />
<div class="sub-nav fn-clear">
<h2>${categoryLabel}</h2>
</div>
</div>
<div class="fn-clear">
<div class="main">
<ul id="tags" class="archives fn-clear">
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
<span>${category.categoryTitle}</span>
(<b>${category.categoryTagCnt}</b>)</a>
</a>
</li>
</#list>
</ul>
<#include "copyright.ftl"/>
</div>
<@side isArticle=false />
</div>
</div>
<span id="goTop" onclick="Util.goTop()" data-ico="&#xe042;" class="side-tile"></span>
<#include "footer.ftl"/>
</body>
</html>

View File

@ -17,6 +17,9 @@
<li> <li>
<a href="${servePath}/dynamic.html">${dynamicLabel}</a> <a href="${servePath}/dynamic.html">${dynamicLabel}</a>
</li> </li>
<li>
<a href="${servePath}/category.html">${categoryLabel}</a>
</li>
<li> <li>
<a href="${servePath}/tags.html">${allTagsLabel}</a> <a href="${servePath}/tags.html">${allTagsLabel}</a>
</li> </li>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,24 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body class="classic-wptouch-bg ">
<#include "header.ftl">
<div class="content single">
<div class="post">
<h2 >${categoryLabel}
<a rel="alternate" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}
(${category.categoryTagCnt})</a>
</h2>
</div>
</div>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>

View File

@ -6,8 +6,7 @@
</center> </center>
<p><span style="color: gray;">&copy; ${year}</span> - <a href="${servePath}">${blogTitle}</a>${footerContent}</p> <p><span style="color: gray;">&copy; ${year}</span> - <a href="${servePath}">${blogTitle}</a>${footerContent}</p>
<p>Powered by <a href="http://b3log.org" target="_blank">B3log 开源</a> • <a href="http://b3log.org/services/#solo" target="_blank">Solo</a> ${version}, <p>Powered by <a href="http://b3log.org" target="_blank">B3log 开源</a> • <a href="http://b3log.org/services/#solo" target="_blank">Solo</a> ${version},
Theme by <a rel="friend" href="http://dx.b3log.org" target="_blank">dx</a> &lt Theme by <a rel="friend" href="http://vanessa.b3log.org" target="_blank">Vanessa</a></p>
<a rel="friend" href="http://www.bravenewcode.com/products/wptouch-pro">WPtouch</a>.</p>
</div> </div>
<script type="text/javascript" src="${staticServePath}/js/lib/jquery/jquery.min.js" charset="utf-8"></script> <script type="text/javascript" src="${staticServePath}/js/lib/jquery/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript" src="${staticServePath}/js/common${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script> <script type="text/javascript" src="${staticServePath}/js/common${miniPostfix}.js?${staticResourceVersion}" charset="utf-8"></script>

View File

@ -28,6 +28,7 @@
<a href="#head-pages"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Pages.png" alt=""/></a> <a href="#head-pages"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Pages.png" alt=""/></a>
<a href="#head-tags"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Tags.png" alt=""/></a> <a href="#head-tags"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Tags.png" alt=""/></a>
<a href="#head-cats"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Archives.png" alt=""/></a> <a href="#head-cats"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/Archives.png" alt=""/></a>
<a href="#head-category"><img src="${staticServePath}/skins/${skinDirName}/images/icon-pool/category.png" alt=""/></a>
</div> </div>
<ul id="head-pages"> <ul id="head-pages">
@ -60,6 +61,17 @@
</#if> </#if>
</ul> </ul>
<ul id="head-category">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}</a>
</li>
</#list>
</#if>
</ul>
</div> </div>
</div> </div>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -135,3 +135,15 @@
</ul> </ul>
</#if> </#if>
</div> </div>
<ul id="head-category">
<#if 0 != mostUsedCategories?size>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
aria-label="${category.categoryTagCnt} ${tagsLabel}"
class="tag tooltipped tooltipped-n">
${category.categoryTitle}</a>
</li>
</#list>
</#if>
</ul>

View File

@ -322,7 +322,12 @@ blockquote {
padding: 0; padding: 0;
} }
.dropper ul#head-pages li, .dropper ul#head-cats li, .dropper ul#head-tags li li, .dropper ul#head-account li, ul#tweets li { .dropper ul#head-pages li,
.dropper ul#head-cats li,
.dropper ul#head-tags li,
.dropper ul#head-account li,
.dropper ul#head-category li,
ul#tweets li {
border-bottom: 1px solid #1d1d1d; border-bottom: 1px solid #1d1d1d;
background: url(../core/core-images/arrow.png) no-repeat right center; background: url(../core/core-images/arrow.png) no-repeat right center;
border-top: 1px solid #363636; border-top: 1px solid #363636;
@ -348,7 +353,10 @@ blockquote {
text-decoration: underline; text-decoration: underline;
} }
.dropper ul#head-cats li:hover, .dropper ul#head-tags li li:hover, .dropper ul#head-pages li:hover { .dropper ul#head-cats li:hover,
.dropper ul#head-tags li li:hover,
.dropper ul#head-category li li:hover,
.dropper ul#head-pages li:hover {
background-color: #222; background-color: #222;
border-top: 1px solid #222; border-top: 1px solid #222;
position: relative; position: relative;
@ -761,7 +769,7 @@ input#search-submit {
img.head-close { img.head-close {
display: inline; display: inline;
position: relative; position: relative;
top: 6px; top: 0px;
left: 5px; left: 5px;
} }

View File

@ -0,0 +1,29 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<#include "header.ftl">
<div class="body">
<div class="wrapper">
<div class="main">
<h2>
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</div>
<#include "side.ftl">
<div class="clear"></div>
</div>
</div>
<#include "footer.ftl">
</body>
</html>

View File

@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var goTop=function(e){e=e||.1;var a=$(window).scrollTop(),t=1+e;if(window.scrollTo(0,Math.floor(a/t)),a>0){var n="goTop("+e+")";window.setTimeout(n,16)}},collapseArchive=function(e,a){var t=!0;"collapse-ico"===e.className?(e.className="expand-ico",t=!1):e.className="collapse-ico",$("#archiveSide li").each(function(){$(this).data("year")===a&&(t?$(this).show():$(this).hide())})},getArticle=function(e,a){var t=$("#abstract"+a),n=$("#content"+a);return""===n.html()?$.ajax({url:"/get-article-content?id="+a,type:"GET",dataType:"html",beforeSend:function(){t.css("background","url(/skins/neoease/images/ajax-loader.gif) no-repeat scroll center center transparent")},success:function(a,i){e.className="collapse-ico",n.html(a),t.hide().css("background","none"),n.fadeIn("slow")}}):"expand-ico"===e.className?(t.hide(),n.fadeIn(),e.className="collapse-ico"):(n.hide(),t.fadeIn(),e.className="expand-ico"),!1},goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)};!function(){$(window).scroll(function(){var e=$(window).scrollTop();if(e>182){var a=$(window).height(),t=e+a-21;$("body").height()-58<=e+a&&(t=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",t)}else $("#goTop").hide()});var e=(new Date).getFullYear(),a=e;$("#archiveSide li").each(function(t){var n=$(this);n.data("year")!==e&&$(this).hide(),a!==n.data("year")&&(a=n.data("year"),n.before("<li class='archive-year'><div onclick='collapseArchive(this, "+a+")' class='expand-ico'>"+a+"&nbsp;年</div></li>"))}),$(".recent-comments .expand-ico").click(function(){"expand-ico"===this.className?($(this).parent().next().css({height:"auto","white-space":"normal"}),this.className="collapse-ico"):($(this).parent().next().animate({height:"18px"},function(){$(this).css("white-space","nowrap")}),this.className="expand-ico")}),$(".nav ul li").each(function(){$(this).find("a").attr("href")===latkeConfig.servePath+location.pathname?$(this).addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")}),Util.init(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide"),$(".recent-comments .recent-comments-main").each(function(){$(this).find(".recent-comments-content>a").height()<30?$(this).find(".expand-ico").remove():$(this).find(".expand-ico").parent().next().css({"white-space":"nowrap"})})}(); var goTop=function(e){e=e||.1;var a=$(window).scrollTop(),t=1+e;if(window.scrollTo(0,Math.floor(a/t)),a>0){var n="goTop("+e+")";window.setTimeout(n,16)}},collapseArchive=function(e,a){var t=!0;"collapse-ico"===e.className?(e.className="expand-ico",t=!1):e.className="collapse-ico",$("#archiveSide li").each(function(){var e=$(this);e.data("year")===a&&(t?$(this).show():$(this).hide())})},getArticle=function(e,a){var t=$("#abstract"+a),n=$("#content"+a);return""===n.html()?$.ajax({url:"/get-article-content?id="+a,type:"GET",dataType:"html",beforeSend:function(){t.css("background","url(/skins/neoease/images/ajax-loader.gif) no-repeat scroll center center transparent")},success:function(a,i){e.className="collapse-ico",n.html(a),t.hide().css("background","none"),n.fadeIn("slow")}}):"expand-ico"===e.className?(t.hide(),n.fadeIn(),e.className="collapse-ico"):(n.hide(),t.fadeIn(),e.className="expand-ico"),!1},goTranslate=function(){window.open("http://translate.google.com/translate?sl=auto&tl=auto&u="+location.href)};!function(){$(window).scroll(function(){var e=$(window).scrollTop();if(e>182){var a=$(window).height(),t=e+a-21;$("body").height()-58<=e+a&&(t=$(".footer").offset().top-21),$("#goTop").fadeIn("slow").css("top",t)}else $("#goTop").hide()});var e=(new Date).getFullYear(),a=e;$("#archiveSide li").each(function(t){var n=$(this);n.data("year")!==e&&$(this).hide(),a!==n.data("year")&&(a=n.data("year"),n.before("<li class='archive-year'><div onclick='collapseArchive(this, "+a+")' class='expand-ico'>"+a+"&nbsp;年</div></li>"))}),$(".recent-comments .expand-ico").click(function(){"expand-ico"===this.className?($(this).parent().next().css({height:"auto","white-space":"normal"}),this.className="collapse-ico"):($(this).parent().next().animate({height:"18px"},function(){$(this).css("white-space","nowrap")}),this.className="expand-ico")}),$(".nav ul li").each(function(){var e=$(this).find("a");e.attr("href")===latkeConfig.servePath+location.pathname?$(this).addClass("current"):/\/[0-9]+$/.test(location.pathname)&&($(".nav ul li")[0].className="current")}),Util.init(),Util.replaceSideEm($(".recent-comments-content")),Util.buildTags("tagsSide"),$(".recent-comments .recent-comments-main").each(function(){$(this).find(".recent-comments-content>a").height()<30?$(this).find(".expand-ico").remove():$(this).find(".expand-ico").parent().next().css({"white-space":"nowrap"})})}();

View File

@ -68,9 +68,26 @@
</ul> </ul>
</div> </div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div>
<h4>${categoryLabel}</h4>
<ul class="tags">
<#list mostUsedCategories as category>
<li>
<sup>[${category.categoryTagCnt}]</sup>
<a class="tag" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle}</a>
</li>
</#list>
</ul>
<div class="clear"></div>
</div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div> <div>
<h4>${popTagsLabel}</h4> <h4>${tagsLabel}</h4>
<ul id="tagsSide" class="tags"> <ul id="tagsSide" class="tags">
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<li> <li>

View File

@ -0,0 +1,69 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
<#include "header.ftl">
<main class="main wrapper">
<div class="content posts-collapse">
<div class="collection-title">
<h2>
${category.categoryTitle}
<small>${categoryLabel}</small>
</h2>
</div>
<#list articles as article>
<article>
<header class="post-header">
<h1>
<a class="post-title" href="${servePath}${article.articlePermalink}">
<span>${article.articleTitle}</span>
<#if article.articlePutTop>
<sup>
${topArticleLabel}
</sup>
</#if>
<#if article.hasUpdated>
<sup>
${updatedLabel}
</sup>
</#if>
</a>
</h1>
<time class="post-time">
${article.articleCreateDate?string("MM-dd")}
</time>
</header>
</article>
</#list>
<#if 0 != paginationPageCount>
<nav class="pagination">
<#if 1 != paginationPageNums?first>
<a href="${servePath}${path}/${paginationPreviousPageNum}" class="extend next"><<</a>
<a class="page-number" href="${servePath}${path}/1">1</a> ...
</#if>
<#list paginationPageNums as paginationPageNum>
<#if paginationPageNum == paginationCurrentPageNum>
<span class="page-number current">${paginationPageNum}</span>
<#else>
<a class="page-number" href="${servePath}${path}/${paginationPageNum}">${paginationPageNum}</a>
</#if>
</#list>
<#if paginationPageNums?last != paginationPageCount> ...
<a href="${servePath}${path}/${paginationPageCount}" class="page-number">${paginationPageCount}</a>
<a href="${servePath}${path}/${paginationNextPageNum}" class="extend next">>></a>
</#if>
</nav>
</#if>
</div>
<#include "side.ftl">
</main>
<#include "footer.ftl">
</body>
</html>

View File

@ -10,6 +10,29 @@
<body> <body>
<#include "header.ftl"> <#include "header.ftl">
<main class="main wrapper"> <main class="main wrapper">
<#if mostUsedCategories?size != 0>
<div class="content page-archive">
<section class="posts-collapse">
<div class="tag-cloud">
${sumLabel} ${mostUsedCategories?size} ${categoryLabel}
</div>
<#list mostUsedCategories as category>
<article>
<header class="post-header">
<h1>
<a class="post-title" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle} (${category.categoryTagCnt})</a>
<small>${category.categoryDescription}</small>
</h1>
</header>
</article>
</#list>
</section>
</div>
<br>
<br>
<br>
</#if>
<div class="content"> <div class="content">
<div class="tag-cloud"> <div class="tag-cloud">
${sumLabel} ${tags?size} ${tagLabel} ${sumLabel} ${tags?size} ${tagLabel}

View File

@ -0,0 +1,29 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<div id="a">
<#include "header.ftl">
<div id="b">
<article>
<cite>${categoryLabel}</cite>
<blockquote>
${category.categoryTitle}
(${category.categoryTagCnt}) ${category.categoryDescription}
</blockquote>
<#include "article-list.ftl">
</article>
<#include "side.ftl">
<div class="clear"></div>
</div>
<#include "footer.ftl">
</div>
</body>
</html>

View File

@ -1,16 +1,4 @@
<aside> <aside>
<!--
<h4>Search</h4>
<form action="http://www.google.com/cse" id="cse-search-box" class="s" target="_blank">
<div>
<input type="hidden" name="cx" value="014052262704486520429:eeg5ule8tro" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="hidden" name="oe" value="UTF-8">
<input type="hidden" name="hl" value="zh-CN">
<input type="text" name="q" size="15" value="&#x7AD9;&#x5185;&#x641C;&#x7D22;" onclick="this.value=''"/>
<input type="hidden" name="sa" value="site-search"/>
</div>
</form>-->
<nav> <nav>
<h4>Navigation</h4> <h4>Navigation</h4>
<ul> <ul>
@ -99,8 +87,22 @@
</#list> </#list>
</ul> </ul>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<h4>${categoryLabel}</h4>
<ul>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}"
title="${category.categoryTitle} (${category.categoryTagCnt})">
${category.categoryTitle}</a>(${category.categoryTagCnt})
</li>
</#list>
</ul>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<h4>${popTagsLabel}</h4> <h4>${tagsLabel}</h4>
<ul class="navi-tags"> <ul class="navi-tags">
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<li> <li>

View File

@ -0,0 +1,21 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
${topBarReplacement}
<#include "header.ftl">
<h3 id="category" class="nav-abs">
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h3>
<#include "article-list.ftl">
<#include "footer.ftl">
</body>
</html>

View File

@ -172,17 +172,17 @@ img {
background-position: -96px -48px; background-position: -96px -48px;
} }
#tags { .tags {
margin: 0; margin: 0;
} }
#tags li { .tags li {
float: left; float: left;
list-style-type: none; list-style-type: none;
height: 45px; height: 45px;
} }
#tags a { .tags a {
background-color: #FCFCFC; background-color: #FCFCFC;
box-shadow: 0 0 2px #D5D5D5; box-shadow: 0 0 2px #D5D5D5;
display: block; display: block;
@ -190,13 +190,13 @@ img {
padding: 5px 10px; padding: 5px 10px;
} }
#tags a:hover { .tags a:hover {
text-shadow: 0 0 2px; text-shadow: 0 0 2px;
text-decoration: none; text-decoration: none;
box-shadow: 0 0 4px #D5D5D5; box-shadow: 0 0 4px #D5D5D5;
} }
#tags b { .tags b {
font-size: 70%; font-size: 70%;
opacity: 0.6; opacity: 0.6;
filter: alpha(opacity=60); filter: alpha(opacity=60);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,22 @@
<#include "header.ftl"> <#include "header.ftl">
<div class="wrapper"> <div class="wrapper">
<div class="container"> <div class="container">
<ul id="tags" class="module fn-clear"> <#if 0 != mostUsedCategories?size>
<h2>${categoryLabel}</h2>
<ul class="module fn-clear tags">
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
<span>${category.categoryTitle}</span>
(<b>${category.categoryTagCnt}</b>)
</a>
</li>
</#list>
</ul>
</#if>
<h2>${tagsLabel}</h2>
<ul id="tags" class="tags module fn-clear">
<#list tags as tag> <#list tags as tag>
<li> <li>
<a rel="tag" data-count="${tag.tagPublishedRefCount}" <a rel="tag" data-count="${tag.tagPublishedRefCount}"

View File

@ -0,0 +1,39 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
<div class="wrapper">
<div class="bg-bottom">
${topBarReplacement}
<div class="content">
<div class="header">
<#include "header.ftl">
</div>
<div class="body">
<div class="left main">
<h2 class="title">
${categoryLabel}:
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
</div>
<div class="left side">
<#include "side.ftl">
</div>
<div class="clear"></div>
</div>
<div class="footer">
<#include "footer.ftl">
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -74,9 +74,26 @@
</div> </div>
<div class="line"></div> <div class="line"></div>
</#if> </#if>
<#if 0 != mostUsedCategories?size>
<div class="block">
<h3>${categoryLabel}</h3>
<ul>
<#list mostUsedCategories as category>
<li>
<a href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle} (${category.categoryTagCnt})</a>
</li>
</#list>
</ul>
<div class='clear'></div>
</div>
<div class="line"></div>
</#if>
<#if 0 != mostUsedTags?size> <#if 0 != mostUsedTags?size>
<div class="block popTags"> <div class="block popTags">
<h3>${popTagsLabel}</h3> <h3>${tagsLabel}</h3>
<ul> <ul>
<#list mostUsedTags as tag> <#list mostUsedTags as tag>
<li> <li>

View File

@ -0,0 +1,22 @@
<#include "macro-head.ftl">
<!DOCTYPE html>
<html>
<head>
<@head title="${category.categoryTitle} - ${blogTitle}">
<meta name="keywords" content="${metaKeywords},${category.categoryTitle}"/>
<meta name="description" content="<#list articles as article>${article.articleTitle}<#if article_has_next>,</#if></#list>"/>
</@head>
</head>
<body>
<#include "side.ftl">
<main>
<h2 class="classify-name">
${categoryLabel}
${category.categoryTitle}
(${category.categoryTagCnt})<small> ${category.categoryDescription}</small>
</h2>
<#include "article-list.ftl">
<#include "footer.ftl">
</main>
</body>
</html>

View File

@ -13,4 +13,4 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var Yilia={init:function(){Util.killIE(),this._initToc(),this.resetTags(),$(window).scroll(function(){$("article").length>0&&0===$("article.post").length&&$("article:not(.show)").each(function(){$(this).offset().top<=$(window).scrollTop()+$(window).height()-$(this).height()/7&&$(this).addClass("show")}),$(window).scrollTop()>$(window).height()?$(".icon-goup").show():$(".icon-goup").hide(),1===$("article.post").length&&$("article.post").addClass("show")}),$(window).scroll()},_initToc:function(){if(0===$(".b3-solo-list li").length)return!1;$(".side footer").after('<div class="toc"><a href="javascript:$(\'.side .toc\').hide()" class="close">X</a></div>'),$(".side .toc a").after($(".b3-solo-list")),$(".side .toc-btn").show()},resetTags:function(){$("a.tag").each(function(t){$(this).addClass("color"+Math.ceil(4*Math.random()))})},share:function(){$(".share span").click(function(){var t=$(this).data("type"),i=encodeURIComponent($("title").text()),o=$(".post-title a").attr("href")?$(".post-title a").attr("href"):location,e=$(".post-content img:eq(0)").attr("src"),s={};s.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+i+"&url="+o+"&pic="+e,s.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+o+"&pic="+e,s.google="https://plus.google.com/share?url="+o,s.twitter="https://twitter.com/intent/tweet?status="+i+" "+o,window.open(s[t],"_blank","top=100,left=200,width=648,height=618")})}};Yilia.init(); var Yilia={init:function(){Util.killIE(),this._initToc(),this.resetTags(),$(window).scroll(function(){$("article").length>0&&0===$("article.post").length&&$("article:not(.show)").each(function(){$(this).offset().top<=$(window).scrollTop()+$(window).height()-$(this).height()/7&&$(this).addClass("show")}),$(window).scrollTop()>$(window).height()?$(".icon-goup").show():$(".icon-goup").hide(),1===$("article.post").length&&$("article.post").addClass("show")}),$(window).scroll()},_initToc:function(){return 0!==$(".b3-solo-list li").length&&($(".side footer").after('<div class="toc"><a href="javascript:$(\'.side .toc\').hide()" class="close">X</a></div>'),$(".side .toc a").after($(".b3-solo-list")),void $(".side .toc-btn").show())},resetTags:function(){$("a.tag").each(function(t){$(this).addClass("color"+Math.ceil(4*Math.random()))})},share:function(){$(".share span").click(function(){var t=$(this).data("type"),i=encodeURIComponent($("title").text()),o=$(".post-title a").attr("href")?$(".post-title a").attr("href"):location,e=$(".post-content img:eq(0)").attr("src"),s={};s.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+i+"&url="+o+"&pic="+e,s.weibo="http://v.t.sina.com.cn/share/share.php?title="+i+"&url="+o+"&pic="+e,s.google="https://plus.google.com/share?url="+o,s.twitter="https://twitter.com/intent/tweet?status="+i+" "+o,window.open(s[t],"_blank","top=100,left=200,width=648,height=618")})}};Yilia.init();

View File

@ -10,6 +10,26 @@
<body> <body>
<#include "side.ftl"> <#include "side.ftl">
<main class="classify"> <main class="classify">
<#if 0 != mostUsedCategories?size>
<article>
<header>
<h2>
<a rel="archive" href="${servePath}/tags.html">
${categoryLabel}
</a>
</h2>
</header>
<ul class="tags fn-clear">
<#list mostUsedCategories as category>
<li>
<a class="tag" href="${servePath}/category/${category.categoryURI}">
${category.categoryTitle} (${category.categoryTagCnt})</a>
</li>
</#list>
</ul>
</article>
</#if>
<article> <article>
<header> <header>
<h2> <h2>