Hello, I (continue to) write an online documentation with Org-mode and I want to build the main navigation menu dynamically. I would like to have your opinion about what I plan to do. # What I plan I plan to write a function that I can assign to the variable `org-html-preamble` or the publish setting :html-preamble. This function would take as parameters: * The brand name and/or the brand logo url * The main menu structure And optionally the HTML templates for: * The brand name and/or logo url * The menu item * The menu item with submenu * The menu surrounding * The preamble This function will return the formatted preamble in HTML format. # What I need to define I need to choose how the menu structure is defined. An Elisp alist ? An org-mode file containing only a list ? If I choose an Elisp alist, do I reuse the Org-mode URL format ? If yes, is there any org-mode internal function I can use to convert an url like "file:example.org::*some headline" to "https://example.html#custom-id" ? With the Elisp alist, I could use keys as menu labels and associated values as targets. With this solution, I can have different kinds of targets. If I choose an org-mode file, I cannot control how the HTML export is built. I will need to write my own function that parse the file, extract the needed information and format the HTML result. And I need to use a different extension to avoid having to exclude this file with org-publish. # How to pass parameters to this function If I set a function as value to the variable `org-html-preamble`, this function will receive a plist containing all the export options. But can I set custom export option in the publish project alist ? And when I export manually a file, can I set custom export option on buffer level ? Or each option in the plist that my function receive need to be defined in the HTML export backend level ? Best regards ------- Gendre Sébastien