浏览代码

Initial Commit of after-dark for Pelican

Steve Thielemann 6 年之前
当前提交
60854102ff
共有 51 个文件被更改,包括 1061 次插入0 次删除
  1. 1 0
      .gitignore
  2. 16 0
      README.md
  3. 39 0
      static/css/critical-custom.css
  4. 225 0
      static/css/critical-vendor.css
  5. 314 0
      static/css/main.css
  6. 205 0
      static/css/pygment.css
  7. 二进制
      static/images/icons/blogger-18px.png
  8. 二进制
      static/images/icons/blogger-32px.png
  9. 二进制
      static/images/icons/delicious-18px.png
  10. 二进制
      static/images/icons/delicious-32px.png
  11. 二进制
      static/images/icons/digg-18px.png
  12. 二进制
      static/images/icons/digg-32px.png
  13. 二进制
      static/images/icons/facebook-18px.png
  14. 二进制
      static/images/icons/facebook-32px.png
  15. 二进制
      static/images/icons/feed-18px.png
  16. 二进制
      static/images/icons/feed-32px.png
  17. 二进制
      static/images/icons/flicker-18px.png
  18. 二进制
      static/images/icons/flicker-32px.png
  19. 二进制
      static/images/icons/github-18px.png
  20. 二进制
      static/images/icons/github-32px.png
  21. 二进制
      static/images/icons/google-18px.png
  22. 二进制
      static/images/icons/google-32px.png
  23. 二进制
      static/images/icons/instagram-18px.png
  24. 二进制
      static/images/icons/instagram-32px.png
  25. 二进制
      static/images/icons/linkedin-18px.png
  26. 二进制
      static/images/icons/linkedin-32px.png
  27. 二进制
      static/images/icons/pinterest-18px.png
  28. 二进制
      static/images/icons/pinterest-32px.png
  29. 二进制
      static/images/icons/skype-18px.png
  30. 二进制
      static/images/icons/skype-32px.png
  31. 二进制
      static/images/icons/tumblr-18px.png
  32. 二进制
      static/images/icons/tumblr-32px.png
  33. 二进制
      static/images/icons/twitter-18px.png
  34. 二进制
      static/images/icons/twitter-32px.png
  35. 二进制
      static/images/icons/video-18px.png
  36. 二进制
      static/images/icons/video-32px.png
  37. 二进制
      static/images/icons/youtube-18px.png
  38. 二进制
      static/images/icons/youtube-32px.png
  39. 47 0
      templates/article.html
  40. 4 0
      templates/article_link.inc.html
  41. 9 0
      templates/article_summary.inc.html
  42. 14 0
      templates/author.html
  43. 67 0
      templates/base.html
  44. 14 0
      templates/category.html
  45. 3 0
      templates/header_common.html
  46. 36 0
      templates/index.html
  47. 9 0
      templates/metadata.inc.html
  48. 9 0
      templates/page.html
  49. 15 0
      templates/pagination.inc.html
  50. 14 0
      templates/tag.html
  51. 20 0
      templates/tags.html

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+*~

+ 16 - 0
README.md

@@ -0,0 +1,16 @@
+# after-dark #
+
+
+
+## Screenshot ##
+
+![screenshot](screenshot.png)
+
+
+## Options ##
+
+
+## Credits ##
+
+* Theme freely inspired by [mattstratton](https://github.com/mattstratton/after-dark.git)
+

+ 39 - 0
static/css/critical-custom.css

@@ -0,0 +1,39 @@
+<style media="screen">
+  @keyframes intro {
+    0% {
+      opacity: 0;
+    }
+    100% {
+      opacity: 1;
+    }
+  }
+  .powered-by {
+    color: rgba(95, 95, 95, 0.78);
+  }
+  main, footer {
+    animation: intro 0.3s both;
+    animation-delay: 0.15s;
+  }
+  /* hack.css overrides and enhancements */
+  .main {
+    padding: 20px 10px;
+  }
+  nav a.active {
+    background-color: #ff2e88;
+    color: #fff;
+  }
+  html {
+    font-size: 13px;
+  }
+  @media screen and (min-width: 768px) {
+    html {
+      font-size: 1em;
+    }
+    .container {
+      max-width: 50rem;
+    }
+  }
+  img { 
+    max-width: 90%;
+  }
+</style>

文件差异内容过多而无法显示
+ 225 - 0
static/css/critical-vendor.css


+ 314 - 0
static/css/main.css

@@ -0,0 +1,314 @@
+/*
+Colors :
+- #40403F
+- #4D4D4C
+- #7F7F7E
+- #E5E5E3
+- #F0F0F0
+*/
+
+/* Imports */
+
+@import url("pygment.css");
+
+
+/* Latout */
+
+article,
+figcaption,
+figure,
+footer,
+header,
+nav,
+section,
+time {
+  display: block;
+}
+
+html {
+  font-size: 100%;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%;
+}
+body {
+  font-family: 'Source Sans Pro', sans-serif;
+  font-size: 16px;
+  line-height: 150%;
+  text-align: left;
+  color: #4D4D4C;
+  padding: 0;
+  min-width: 740px;
+}
+
+header {
+  background-color: #40403F;
+  height: 50px;
+  line-height: 50px;
+  padding: 0 1em;
+}
+
+.wrapper {
+  display: table;
+  width: 100%;
+}
+
+.content {
+  display: table-cell;
+  border-left: 1px solid #d6d6d6;
+  border-right: 1px dotted #D6D6D6;
+  padding: 0 20px 1em 20px;
+}
+
+.sidebar {
+  display: table-cell;
+  width: 25%;
+  border-right: 1px solid #d6d6d6;
+  padding: 0 20px 1em 20px;
+}
+
+footer {
+  border-top: 1px dotted #D6D6D6;
+  line-height: 30px;
+  padding: 0 1em;
+  font-size: 0.8em;
+}
+
+
+/* Header */
+
+header a {
+  color: #E5E5E3;
+  border-bottom: none;
+}
+
+header a.title {
+  font-size: 1.25em;
+}
+
+header .feeds {
+  float: right;
+  text-align: right;
+  width: 25%;
+  height: 41px;
+  padding-top: 9px;
+}
+
+header .feeds a {
+  display: block;
+  float: right;
+  padding-right: 5px;
+  width: 40px;
+}
+
+header .feeds a:hover,
+header .feeds a:active {
+  border-bottom: none;
+}
+
+header .pages {
+  float: right;
+}
+
+header .pages a {
+  font-size: 1.1em;
+}
+
+
+/* Sidebar */
+
+
+/* Titles */
+
+h1, h2, h3, h4, h5, h6 {
+    font-family: "Source Sans Pro",sans-serif;
+    font-weight: 400;
+    text-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+    line-height: 125%;
+}
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+  padding: 0.7em 0 0.3em;
+}
+
+h1 a {
+  color: inherit;
+  border-bottom: none;
+}
+
+
+/* Texts */
+
+p {
+  margin: 0.8em 0 0.5em;
+}
+
+a {
+  text-decoration: none;
+  border-bottom: 1px dotted #4D4D4C;
+  color: #4D4D4C;
+}
+
+a:hover, a:active {
+  text-decoration: none;
+  border-bottom: 1px dotted #4271AE;
+  color: #4271AE;
+}
+
+.literal {
+  font-size: 0.9em;
+  border: 1px solid #F0F0F0;
+  padding: 0px 5px;
+}
+
+pre {
+  font-family: 'Source Code Pro',monospace;
+  background: none repeat scroll 0 0 #F0F0F0;
+  border-radius: 2px;
+  font-size: 0.9em;
+  font-style: normal;
+  letter-spacing: 0.015em;
+  line-height: 130%;
+  padding: 0.7em;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+hr {
+  margin: 40px 5% 60px 5%;
+  color: #d6d6d6;
+  box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+  border-radius: 5px;
+}
+
+
+/* Article */
+
+article.summary {
+  margin-bottom: 40px;
+  clear: both;
+}
+
+article.summary > div {
+  margin-left: 28%;
+}
+
+article.full .metadata,
+article.summary .metadata {
+  padding: 1%;  
+  border: 1px dotted #EFEFEF;
+  box-shadow: 0.1em 0.1em 0.1em #EFEFEF;
+  font-style: italic;
+}
+
+article.full .metadata {
+  width: 25%;
+  float: right;
+  margin: 0 0 2% 1%;
+}
+
+article.summary .metadata {
+  width: 23%;
+  float: left;
+  margin: 0 1% 2% 0 ;
+}
+
+.metadata p {
+  margin: 0;
+}
+
+/* Listings */
+
+ol.archive li {
+  margin: 8px 0;
+}
+
+ol.archive li time,
+ol.archive li .tags
+ {
+  line-height: 140%;
+  font-size: 0.8em;
+  margin: 0;
+}
+
+
+/* Social */
+
+.social {
+  list-style-type: none;
+  padding-left: 20px;
+}
+
+.social li {
+  clear: both;
+}
+
+.social a {}
+
+.social i { 
+  float: left;
+  margin-right: 3px;
+  padding-top: 4px;
+}
+.social a[href*='twitter.com'] + i:before {content: url('../images/icons/twitter-18px.png'); }
+.social a[href*='linkedin.com'] + i:before {content: url('../images/icons/linkedin-18px.png'); }
+.social a[href*='github.com'] + i:before {content: url('../images/icons/github-18px.png'); }
+.social a[href*='google.com'] + i:before {content: url('../images/icons/google-18px.png'); }
+.social a[href*='delicious.com']:before {content: url('../images/icons/delicious-18px.png'); }
+.social a[href*='digg.com']:before {content: url('../images/icons/digg-18px.png'); }
+.social a[href*='facebook.com']:before {content: url('../images/icons/facebook-18px.png'); }
+.social a[href*='stackoverflow.com']:before {content: url('../images/icons/stackoverfow-18px.png'); }
+.social a[href*='rss.xml']:before {content: url('../images/icons/feed-18px.png'); }
+.social a[href*='atom.xml']:before {content: url('../images/icons/feed-18px.png'); }
+
+
+/* Tag cloud */
+
+ul.tagcloud {
+  list-style: none;
+  padding: 0;
+  width: 50%;
+  margin: 0 auto;
+  line-height: 200%;
+}
+
+ul.tagcloud li {
+    display: inline-block;
+}
+
+li.tag-1 { font-size: 175%; margin: 0 1em; }
+li.tag-2 { font-size: 150%; margin: 0 1em; }
+li.tag-3 { font-size: 125%; margin: 0 1em; }
+li.tag-4 { font-size: 110%; margin: 0 1em; }
+
+/* Pagination */
+
+.pagination {
+  width: 100px;
+  margin: 1em auto;
+}
+
+/* Responsive */
+
+@media (min-width: 1280px) {
+  body {
+    margin: 0 16%;
+  }
+}
+
+@media (max-width: 1280px) {
+  body {
+    margin: 0 12%;
+  }
+}
+
+@media (max-width: 979px) {
+  body {
+    margin: 0 4%;
+  }
+}
+
+img { 
+  width: 90%;
+}

+ 205 - 0
static/css/pygment.css

@@ -0,0 +1,205 @@
+.hll {
+background-color:#FFFFCC;
+}
+.c {
+color:#408090;
+font-style:italic;
+}
+.err {
+border:1px solid #FF0000;
+}
+.k {
+color:#007020;
+font-weight:bold;
+}
+.o {
+color:#666666;
+}
+.cm {
+color:#408090;
+font-style:italic;
+}
+.cp {
+color:#007020;
+}
+.c1 {
+color:#408090;
+font-style:italic;
+}
+.cs {
+background-color:#FFF0F0;
+color:#408090;
+}
+.gd {
+color:#A00000;
+}
+.ge {
+font-style:italic;
+}
+.gr {
+color:#FF0000;
+}
+.gh {
+color:#000080;
+font-weight:bold;
+}
+.gi {
+color:#00A000;
+}
+.go {
+color:#303030;
+}
+.gp {
+color:#C65D09;
+font-weight:bold;
+}
+.gs {
+font-weight:bold;
+}
+.gu {
+color:#800080;
+font-weight:bold;
+}
+.gt {
+color:#0040D0;
+}
+.kc {
+color:#007020;
+font-weight:bold;
+}
+.kd {
+color:#007020;
+font-weight:bold;
+}
+.kn {
+color:#007020;
+font-weight:bold;
+}
+.kp {
+color:#007020;
+}
+.kr {
+color:#007020;
+font-weight:bold;
+}
+.kt {
+color:#902000;
+}
+.m {
+color:#208050;
+}
+.s {
+color:#4070A0;
+}
+.na {
+color:#4070A0;
+}
+.nb {
+color:#007020;
+}
+.nc {
+color:#0E84B5;
+font-weight:bold;
+}
+.no {
+color:#60ADD5;
+}
+.nd {
+color:#555555;
+font-weight:bold;
+}
+.ni {
+color:#D55537;
+font-weight:bold;
+}
+.ne {
+color:#007020;
+}
+.nf {
+color:#06287E;
+}
+.nl {
+color:#002070;
+font-weight:bold;
+}
+.nn {
+color:#0E84B5;
+font-weight:bold;
+}
+.nt {
+color:#062873;
+font-weight:bold;
+}
+.nv {
+color:#BB60D5;
+}
+.ow {
+color:#007020;
+font-weight:bold;
+}
+.w {
+color:#BBBBBB;
+}
+.mf {
+color:#208050;
+}
+.mh {
+color:#208050;
+}
+.mi {
+color:#208050;
+}
+.mo {
+color:#208050;
+}
+.sb {
+color:#4070A0;
+}
+.sc {
+color:#4070A0;
+}
+.sd {
+color:#4070A0;
+font-style:italic;
+}
+.s2 {
+color:#4070A0;
+}
+.se {
+color:#4070A0;
+font-weight:bold;
+}
+.sh {
+color:#4070A0;
+}
+.si {
+color:#70A0D0;
+font-style:italic;
+}
+.sx {
+color:#C65D09;
+}
+.sr {
+color:#235388;
+}
+.s1 {
+color:#4070A0;
+}
+.ss {
+color:#517918;
+}
+.bp {
+color:#007020;
+}
+.vc {
+color:#BB60D5;
+}
+.vg {
+color:#BB60D5;
+}
+.vi {
+color:#BB60D5;
+}
+.il {
+color:#208050;
+}

二进制
static/images/icons/blogger-18px.png


二进制
static/images/icons/blogger-32px.png


二进制
static/images/icons/delicious-18px.png


二进制
static/images/icons/delicious-32px.png


二进制
static/images/icons/digg-18px.png


二进制
static/images/icons/digg-32px.png


二进制
static/images/icons/facebook-18px.png


二进制
static/images/icons/facebook-32px.png


二进制
static/images/icons/feed-18px.png


二进制
static/images/icons/feed-32px.png


二进制
static/images/icons/flicker-18px.png


二进制
static/images/icons/flicker-32px.png


二进制
static/images/icons/github-18px.png


二进制
static/images/icons/github-32px.png


二进制
static/images/icons/google-18px.png


二进制
static/images/icons/google-32px.png


二进制
static/images/icons/instagram-18px.png


二进制
static/images/icons/instagram-32px.png


二进制
static/images/icons/linkedin-18px.png


二进制
static/images/icons/linkedin-32px.png


二进制
static/images/icons/pinterest-18px.png


二进制
static/images/icons/pinterest-32px.png


二进制
static/images/icons/skype-18px.png


二进制
static/images/icons/skype-32px.png


二进制
static/images/icons/tumblr-18px.png


二进制
static/images/icons/tumblr-32px.png


二进制
static/images/icons/twitter-18px.png


二进制
static/images/icons/twitter-32px.png


二进制
static/images/icons/video-18px.png


二进制
static/images/icons/video-32px.png


二进制
static/images/icons/youtube-18px.png


二进制
static/images/icons/youtube-32px.png


+ 47 - 0
templates/article.html

@@ -0,0 +1,47 @@
+{% extends "base.html" %}
+{% block title %}{{ article.title }} - {{ SITENAME }}{% endblock %}
+
+{% block extra_meta %}
+
+	<meta name="description" content="{{ article.summary|striptags }}">
+
+{% if PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT %}
+	<meta name="twitter:card" content="summary">
+	<meta name="twitter:creator" content="@{{ PELICAN_SIMPLEGREY_TWITTER_CARD_ACCOUNT }}">
+	<meta name="twitter:title" content="{{ article.title }}">
+	<meta name="twitter:description" content="{{ article.summary|striptags }}">
+	<meta name="twitter:url" content="{{ SITEURL }}/{{ article.url }}">
+{% endif %}
+{% endblock %}
+
+
+{% block content %}
+	<article class="full">
+			
+		<h1>{{ article.title }}</h1>
+
+		{% if article.readtime %}
+		<div>(Read time is about <b>{{article.readtime.minutes}} minutes</b>)</div>
+		{% endif %}
+		{% include 'metadata.inc.html' %}
+		
+		{{ article.content }}	
+
+	</article>
+
+	{% if DISQUS_SITENAME %}
+	<div class="comments">
+	<h2>Comments !</h2>
+	    <div id="disqus_thread"></div>
+	    <script type="text/javascript">
+	       var disqus_identifier = "{{ article.url }}";
+	       (function() {
+	       var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+	       dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+	       (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+	      })();
+	    </script>
+	</div>
+	{% endif %}
+
+{% endblock %}

+ 4 - 0
templates/article_link.inc.html

@@ -0,0 +1,4 @@
+<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+  <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+  {% if article.tags %}<p class="tags">tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> {% endfor %}</p>{% endif %}
+</a>

+ 9 - 0
templates/article_summary.inc.html

@@ -0,0 +1,9 @@
+<article class="summary">
+  {% include 'metadata.inc.html' %}
+  <div>
+    <h2>
+      <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a>
+    </h2>
+    <p>{{ article.summary }}</p>
+  </div>
+</article>

+ 14 - 0
templates/author.html

@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ author }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts published by: {{ author }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}

+ 67 - 0
templates/base.html

@@ -0,0 +1,67 @@
+<!doctype html>
+<html lang="{{ HTML_LANG }}">	
+<head>
+  <meta charset="utf-8"/>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>{% block title %}{{ SITENAME }}{%endblock%}</title>	
+  <meta name="author" content="{{ AUTHOR }}">
+	
+  {%- block extra_meta %}
+  {% endblock %}
+
+  {% include 'header_common.html' %}
+  <link rel="top" href="#" />
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,300italic,400italic,600italic|Source+Code+Pro' rel='stylesheet' type='text/css'></link>
+		
+  {%- block scripts %}
+  {% endblock %}
+
+    {% if FEED_ALL_ATOM %}
+    <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
+    {% endif %}
+    {% if FEED_ALL_RSS %}
+    <link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
+    {% endif %}
+</head>
+	
+<body class="hack dark main container">
+  <header>
+{{ FEED_ATOM }}
+<div class="feeds">
+  {% if FEED_ALL_ATOM %}
+  <a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="atom feed"/></a>
+  {% endif %}
+  {% if FEED_ALL_RSS %}
+  <a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate"><img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/images/icons/feed-32px.png" alt="rss feed"/></a>
+  {% endif %}
+</div>
+<nav class="pages">
+<a href="{{ SITEURL }}/" class="title">{{ SITENAME }}</a>
+{% if DISPLAY_PAGES_ON_MENU %}
+{% for p in pages %}
+<a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
+{% if not loop.last %}-{% endif %}
+{% endfor %}
+{% endif %}
+<a href="{{ SITEURL }}/tags.html">Tags</a>
+<!-- <a href="{{ SITEURL }}/categories.html">Categories</a> -->
+<a href="{{ SITEURL }}/archives.html">Archives</a>
+</nav>
+  
+  </header>
+  <main>
+    {% block content %}{% endblock %}
+  </main>
+  <footer>
+    © 2018 {{ AUTHOR }} - Proudly powered by <a href="http://alexis.notmyidea.org/pelican/">pelican</a>. Theme <a href="#">after-dark</a>.
+  </footer>
+  {% if GOOGLE_ANALYTICS %}
+  <script>
+    var _gaq=[['_setAccount','{{ GOOGLE_ANALYTICS }}'],['_trackPageview']];
+    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
+    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
+    s.parentNode.insertBefore(g,s)}(document,'script'));
+  </script>
+  {% endif %}
+</body>
+</html>

+ 14 - 0
templates/category.html

@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ category }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Posts categorized under: {{ category }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}

+ 3 - 0
templates/header_common.html

@@ -0,0 +1,3 @@
+  <link rel="shortcut icon" type="image/png" href="{{ SITEURL }}/theme/shortcut.png">
+  <link rel="stylesheet" href="{{ SITEURL }}/theme/css/critical-vendor.css" type="text/css" />
+  <link rel="stylesheet" href="{{ SITEURL }}/theme/css/critical-custom.css" type="text/css" />

+ 36 - 0
templates/index.html

@@ -0,0 +1,36 @@
+{% extends "base.html" %}
+{% block content_title %}{% endblock %}
+
+{% block content %}
+
+{% for article in articles %}
+
+    {% if loop.index == 1 %}
+
+      <article>
+        <h1><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1>
+        {{ article.content }}
+      </article>
+
+      <hr />
+
+      {% if loop.length  > 1 %}
+        <div>
+          <h3>Last posts</h3>
+          <ol class="archive">
+      {% endif %}
+    
+    {% elif loop.index < 7 %}
+      <li>
+        {% include 'article_link.inc.html' %}
+      </li>
+    {% endif %}
+
+{% endfor %}
+
+{% if articles|length > 1 %}
+          </ol>
+        </div>
+{% endif %}
+
+{% endblock content %}

+ 9 - 0
templates/metadata.inc.html

@@ -0,0 +1,9 @@
+<div class="metadata">
+  <time datetime="{{ article.date.isoformat() }}" pubdate>{{ article.locale_date }}</time>
+  {%- if article.author %}
+  by <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+  {% endif -%}
+  in <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>
+  {% if article.tags %}<p class="tags">tagged {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% if not loop.last%}, {% endif %}{% endfor %}</p>{% endif %}
+  {% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">Download the .pdf</a></p>{% endif %}
+</div>

+ 9 - 0
templates/page.html

@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% block title %}{{ page.title }}- {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>{{ page.title }}</h1>
+{{ page.content }}		
+
+{% endblock %}

+ 15 - 0
templates/pagination.inc.html

@@ -0,0 +1,15 @@
+{% if DEFAULT_PAGINATION %}
+<div class="pagination">
+    {% if articles_page.has_previous() %}
+        {% if articles_page.previous_page_number() == 1 %}
+            <a href="{{ SITEURL }}/{{ page_name }}.html">&laquo;</a>
+        {% else %}
+            <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">&laquo;</a>
+        {% endif %}
+    {% endif %}
+    Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
+    {% if articles_page.has_next() %}
+        <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">&raquo;</a>
+    {% endif %}
+</div>
+{% endif %}

+ 14 - 0
templates/tag.html

@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+{% block title %}{{ tag }} - {{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Post tagged: {{ tag }}</h1>
+
+{% for article in articles_page.object_list %}
+  {% include 'article_summary.inc.html' %}
+{% endfor %}
+
+{% include 'pagination.inc.html' %}
+
+{% endblock %}

+ 20 - 0
templates/tags.html

@@ -0,0 +1,20 @@
+{% extends "base.html" %}
+{% block title %}{{ SITENAME }}{% endblock %}
+
+{% block content %}
+
+<h1>Tags</h1>
+	
+<ul class="tagcloud">
+  {% for tag in tag_cloud %}
+    <li class="tag-{{ tag.1 }}"><a href="{{ SITEURL }}/{{ tag.0.url }}">{{ tag.0 }}</a></li>
+  {% endfor %}
+</ul>
+
+<ul>
+  {% for tag, articles in tags|sort %}
+    <li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
+  {% endfor %}
+</ul>
+
+{% endblock %}

部分文件因为文件数量过多而无法显示