Flexible Lisp Blogware. Fork for personal use. Mirrored from https://github.com/kingcons/coleslaw originally.

sitemap.lisp 840B

123456789101112131415161718192021222324252627
  1. (defpackage :coleslaw-sitemap
  2. (:use :cl)
  3. (:import-from :coleslaw #:*config*
  4. #:index
  5. #:deploy
  6. #:page-url
  7. #:theme-fn
  8. #:write-document)
  9. (:import-from :alexandria #:hash-table-values)
  10. (:export #:enable))
  11. (in-package :coleslaw-sitemap)
  12. (defclass sitemap (index)
  13. ((urls :initarg :urls :reader urls)))
  14. (defmethod page-url ((object sitemap)) "sitemap.xml")
  15. (defmethod deploy :before (staging)
  16. "Render sitemap.xml under document root."
  17. (declare (ignore staging))
  18. (let* ((urls (mapcar #'page-url (hash-table-values coleslaw::*site*)))
  19. (sitemap (make-instance 'sitemap :urls (append '("" "sitemap.xml") urls))))
  20. (write-document sitemap (theme-fn 'sitemap "sitemap"))))
  21. (defun enable ())