Procházet zdrojové kódy

add sitemap.lisp in plugins

Do Nhat Minh před 12 roky
rodič
revize
e28729b0de
2 změnil soubory, kde provedl 30 přidání a 1 odebrání
  1. 29 0
      plugins/sitemap.lisp
  2. 1 1
      src/indices.lisp

+ 29 - 0
plugins/sitemap.lisp

@@ -0,0 +1,29 @@
1
+(defpackage :coleslaw-sitemap 
2
+  (:use :cl)
3
+  (:import-from :coleslaw
4
+                #:*config*
5
+                #:deploy
6
+                #:domain
7
+                #:find-all
8
+                #:page-url
9
+                #:rel-path
10
+                #:staging-dir
11
+                #:theme-fn
12
+                #:write-page)
13
+  (:export #:enable))
14
+
15
+(in-package :coleslaw-sitemap) 
16
+
17
+(defmethod deploy :before (staging)
18
+  "Render sitemap.xml under document root"
19
+  (let* ((urls (append '("" "sitemap.xml") ; empty string is for root url
20
+                       (mapcar #'page-url (find-all 'coleslaw:post)))))
21
+    (write-page (rel-path (staging-dir *config*) "sitemap.xml")
22
+                (funcall (theme-fn :sitemap "feeds")
23
+                         (list :domain (domain *config*)
24
+                               :urls urls
25
+                               :pubdate (local-time:format-rfc3339-timestring
26
+                                          nil
27
+                                          (local-time:now))))))) 
28
+
29
+(defun enable ())

+ 1 - 1
src/indices.lisp

@@ -20,7 +20,7 @@
20 20
 (defmethod page-url ((object index))
21 21
   (index-id object))
22 22
 (defmethod page-url ((object tag-index))
23
-  (format nil "tags/~a" (index-id object)))
23
+  (format nil "tag/~a" (index-id object)))
24 24
 (defmethod page-url ((object date-index))
25 25
   (format nil "date/~a" (index-id object)))
26 26
 (defmethod page-url ((object int-index))