|
@@ -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 ())
|