emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Org-publish: how do I access user-defined keywords in html-preamble func


From: Giovanni Moretti
Subject: Org-publish: how do I access user-defined keywords in html-preamble function?
Date: Sun, 29 Dec 2019 23:18:12 +1300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2

I'm working on a blog published via org-publish but one things got me stumped: accessing user defined keywords while publishing to HTML:

Each post is in an orgmode file, and has a simple structure. E.g. one post starts with:

#+title: Fix for Sparkfun Arduino Pro Micro
#+date: <2009-03-05 13:55>
#+filetags: Arduino
#+category: electronics
#+draft: true

I want to access the last two keywords values when publishing but despite lots of searching, can't find out how:

Part of my publish-project-alist:

(setq org-publish-project-alist
      `(
         ("blog-posts"
         :base-directory   "~/projects/3-blog/"
         :base-extension   "org"
         :recursive        t
           --- lots omitted
         :html-preamble  my-blog-page-preamble
         )

and my-blog-page-preamble function is:

(defun my-blog-page-preamble (arg)
  (with-temp-buffer
    (insert-file-contents my-blog-page-preamble-file)   ; Insert preamble from file
    (concat (buffer-string)
       (format "<br>Tags: %s"      (car (plist-get arg :filetags)))  ; << WORKS
       (format "<br>Category: %s " (car (plist-get arg :category))) ;<< returns nil
       (format "<br>Draft: %s"     (car (plist-get arg :draft)))))) ;<< returns nil

I can access the values of :title or :filetags and other predefined keywords but not ones I define myself.

My keywords are being passed to the preamble-function as displaying 'arg' shows:

--LOTS OMITTED--#2 (keyword (:key DATE :value <2009-03-05 13:55> :begin 81 :end 108 :post-blank 0 :post-affiliated 81 :parent #4)) (keyword (:key CATEGORY :value electronics :begin 108 :end 132 :post-blank 0 :post-affiliated 108 :parent #4)) (keyword (:key FILETAGS :value Arduino :begin 132 :end 152 :post-blank 0 :post-affiliated 132 :parent #4)) (keyword (:key DRAFT :value true :begin 152 :end 166 :post-blank 0 :post-affiliated 152 :parent #4)) -- LOTS MORE

I tried capitalizing -- (plist-get arg :CATEGORY) -- but that returns nil too.

Given that (plist-get arg :category) and (plist-get arg :draft) don't return the expected values, what's the correct way to access the values of #+category: and user-defined keywords such as #+draft: keywords?

Many thanks
Giovanni



reply via email to

[Prev in Thread] Current Thread [Next in Thread]