diff --git a/plugins/sitemap.lisp b/plugins/sitemap.lisp new file mode 100644 index 0000000..ef8cbaa --- /dev/null +++ b/plugins/sitemap.lisp @@ -0,0 +1,29 @@ +(defpackage :coleslaw-sitemap + (:use :cl) + (:import-from :coleslaw + #:*config* + #:deploy + #:domain + #:find-all + #:page-url + #:rel-path + #:staging-dir + #:theme-fn + #:write-page) + (:export #:enable)) + +(in-package :coleslaw-sitemap) + +(defmethod deploy :before (staging) + "Render sitemap.xml under document root" + (let* ((urls (append '("" "sitemap.xml") ; empty string is for root url + (mapcar #'page-url (find-all 'coleslaw:post))))) + (write-page (rel-path (staging-dir *config*) "sitemap.xml") + (funcall (theme-fn :sitemap "feeds") + (list :domain (domain *config*) + :urls urls + :pubdate (local-time:format-rfc3339-timestring + nil + (local-time:now))))))) + +(defun enable ()) diff --git a/src/indices.lisp b/src/indices.lisp index 64ac6c6..a28ef50 100644 --- a/src/indices.lisp +++ b/src/indices.lisp @@ -20,7 +20,7 @@ (defmethod page-url ((object index)) (index-id object)) (defmethod page-url ((object tag-index)) - (format nil "tags/~a" (index-id object))) + (format nil "tag/~a" (index-id object))) (defmethod page-url ((object date-index)) (format nil "date/~a" (index-id object))) (defmethod page-url ((object int-index))