2013-04-28 10:11:38 -04:00
|
|
|
(defpackage :coleslaw-sitemap
|
2013-04-27 02:16:22 +08:00
|
|
|
(:use :cl)
|
|
|
|
(:import-from :coleslaw
|
|
|
|
#:*config*
|
|
|
|
#:deploy
|
|
|
|
#:find-all
|
2013-04-28 10:11:38 -04:00
|
|
|
#:make-pubdate
|
2013-04-27 02:16:22 +08:00
|
|
|
#:page-url
|
|
|
|
#:rel-path
|
|
|
|
#:staging-dir
|
|
|
|
#:theme-fn
|
|
|
|
#:write-page)
|
|
|
|
(:export #:enable))
|
|
|
|
|
2013-04-28 10:11:38 -04:00
|
|
|
(in-package :coleslaw-sitemap)
|
2013-04-27 02:16:22 +08:00
|
|
|
|
|
|
|
(defmethod deploy :before (staging)
|
|
|
|
"Render sitemap.xml under document root"
|
2013-04-28 10:11:38 -04:00
|
|
|
(let ((urls (append '("" "sitemap.xml") ; empty string is for root url
|
|
|
|
(mapcar #'page-url (find-all 'coleslaw:post)))))
|
2013-04-27 02:16:22 +08:00
|
|
|
(write-page (rel-path (staging-dir *config*) "sitemap.xml")
|
2013-04-29 16:59:25 -04:00
|
|
|
(funcall (theme-fn 'sitemap "feeds")
|
2013-04-28 10:11:38 -04:00
|
|
|
(list :config *config*
|
2013-04-27 02:16:22 +08:00
|
|
|
:urls urls
|
2013-04-28 10:11:38 -04:00
|
|
|
:pubdate (make-pubdate))))))
|
2013-04-27 02:16:22 +08:00
|
|
|
|
|
|
|
(defun enable ())
|