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

sitemap.lisp 987B

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