diff options
Diffstat (limited to 'theme.scm')
| -rw-r--r-- | theme.scm | 62 |
1 files changed, 38 insertions, 24 deletions
@@ -8,6 +8,14 @@ hwebs-theme-now flat-page-template)) +(define (post-uri post site prefix) + (string-append "/" (or prefix "") "/" + (site-post-slug site post) ".html")) + +;; +;; BLOG +;; + (define layout (lambda (site title body) `((doctype "html") @@ -43,45 +51,51 @@ ,(post-sxml post))) #:collection-template (lambda (site title posts prefix) - (define (post-uri post) - (string-append "/" (or prefix "") "/" - (site-post-slug site post) ".html")) `((ul ,@(map (lambda (post) - `(li (a (@ (href ,(post-uri post))) + `(li (a (@ (href ,(post-uri post site prefix))) ,(post-ref post 'title) " — " ,(date->string* (post-date post))))) posts)))))) +(define (flat-page-template site metadata body) + ((theme-layout hwebs-theme-blog) site (assq-ref metadata 'title) body)) + +;; +;; NOW +;; + +(define (rss-items-template items) + `(ul + ,@(map (lambda (item) + `(li ,item)) + items))) + +(define (rss-items post) + ((sxpath '(rss channel item title *text*)) (post-sxml post))) + (define hwebs-theme-now (theme #:name "hwebs-now" #:layout layout #:post-template (lambda (post) - ;; TODO fill in datetime correctly - ;; TODO add <author>? (as hidden?) - `((time ,(date->string*(post-date post))) - ,(post-sxml post))) - #:collection-template - (lambda (site title posts prefix) - (define (post-uri post) - (string-append "/" (or prefix "") "/" - (site-post-slug site post) ".html")) + ;; TODO (define (post-entries post) ((sxpath '(rss channel item title *text*)) (post-sxml post))) + (rss-items-template (post-entries post))) + + #:collection-template + (lambda (site title posts prefix) `(,@(map (lambda (post) + (define items + (rss-items post)) + `(section (h2 ,(post-ref post 'title)) - ;; TODO only show "See more" if there are more entries than max - ;; + maybe put it at bottom - (a (@ (href ,(post-uri post))) "See more.") - (ul - ,@(map (lambda (entry-title) - `(li ,entry-title)) - ;; TODO do this better - (list-head (post-entries post) (min 5 (length (post-entries post)))))))) + ,(rss-items-template + ;; not optimal, btw + (list-head items (min 5 (length items)))) + ;; TODO only show if there are more entries than max? + (a (@ (href ,(post-uri post site prefix))) "See more."))) posts))))) - -(define (flat-page-template site metadata body) - ((theme-layout hwebs-theme-blog) site (assq-ref metadata 'title) body)) |
