Преглед на файлове

Ensure that sitemap includes all content.

I had introduced a bug by depending on sitemap being the last subclass
in the ALL-SUBCLASSES list. Since there's only one instance of sitemap,
it's not *too* hackish to do everything in the publish step.
Brit Butler преди 11 години
родител
ревизия
70427b81d0
променени са 1 файла, в които са добавени 6 реда и са изтрити 7 реда
  1. 6 7
      plugins/sitemap.lisp

+ 6 - 7
plugins/sitemap.lisp

@@ -4,7 +4,6 @@
4 4
                           #:index
5 5
                           #:page-url
6 6
                           #:find-all
7
-                          #:discover
8 7
                           #:publish
9 8
                           #:theme-fn
10 9
                           #:add-document
@@ -19,13 +18,13 @@
19 18
 
20 19
 (defmethod page-url ((object sitemap)) "sitemap.xml")
21 20
 
22
-(defmethod discover ((doc-type (eql (find-class 'sitemap))))
23
-  (let ((base-urls '("" "sitemap.xml"))
24
-        (urls (mapcar #'page-url (hash-table-values coleslaw::*site*))))
25
-    (add-document (make-instance 'sitemap :urls (append base-urls urls)))))
26
-
21
+;; We do 'discovery' in the publish method here because we can't ensure the
22
+;; sitemap discover method is called last. Need all other content to be
23
+;; discovered/in the DB.
27 24
 (defmethod publish ((doc-type (eql (find-class 'sitemap))))
28
-  (dolist (sitemap (find-all 'sitemap))
25
+  (let* ((base-urls '("" "sitemap.xml"))
26
+         (urls (mapcar #'page-url (hash-table-values coleslaw::*site*)))
27
+         (sitemap (make-instance 'sitemap :urls (append base-urls urls))))
29 28
     (write-document sitemap (theme-fn 'sitemap "sitemap"))))
30 29
 
31 30
 (defun enable ())