emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Sebastian Rose <sebastian_rose@gmx.de>
To: "Sébastien Vauban" <zthjwsqqafhv@spammotel.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Fully featured Web publishing
Date: Wed, 18 Mar 2009 17:57:22 +0100	[thread overview]
Message-ID: <87ljr2ahvx.fsf@kassiopeya.MSHEIMNETZ> (raw)
In-Reply-To: <871vsuakc4.fsf@mundaneum.com> (=?utf-8?Q?=22S=C3=A9bastien?= Vauban"'s message of "Wed, 18 Mar 2009 17:04:27 +0100")

Sébastien Vauban <zthjwsqqafhv@spammotel.com> writes:

> Hello,
>
> I'd like to use Org exclusively for composing and then publishing my Web site.
> I've done it so far with Emacs Muse, but I have a strong deepish attraction to
> go the Org way, for many different reasons you must be aware of -- more than I
> am...
>
> The features I need are:
>
> - Conditional CSS [if IE]
> - Favicon

Both can be achieved through the

#+STYLE:

options. Multiple lines possible. Those lines are added to the `<head>'
section of the resulting documents.

Also, you might take a look into the documentation for
org-publish-project-alist in
http://orgmode.org/manual/Sample-configuration.html#Sample-configuration



> - JavaScript for Google Analytics
> - Date in the copyright
> - Contextual navigation menu

#+begin_html

  your menu here

#+end_html


#+begin_html

  your analytics script here

#+end_html



Regards,

   Sebastian



> I'll come back into more details to these.
>
> All of these were coded in the header or footer of each page with Muse. What
> was good, is that I could write:
>
>
> (setq muse-project-alist
>       `(
>         ("My-Muse-Public-Website"
>          ("~/Public/Websites/Muse/source/" :default "index")
>          (:base "xhtml"
>                 :path   "~/Public/Websites/Muse/publish/"
>                 :header "~/Public/Websites/Muse/source/header.html"
>                 :footer "~/Public/Websites/Muse/source/footer.html"))))
>
> Hence, specifying file names instead of file contents for both the header and
> footer. This is good, as I don't have to change my .emacs file every time I
> wanna change the way my pages have to look like. Such a feature would be nice
> for Org as well. Is it scheduled?  Can we achieve the same result otherwise?
>
> Regarding the above features:
>
> - Conditional CSS [if IE]
>
>   Can be coded in the common header string. OK.
>
> - Favicon
>
>   Can be coded in the common header string -- if it's a common one for all my
>   Web site. How can we specify on a per page basis?  This more or less comes
>   down to the recent addition of the `keywords' and `description' meta tags
>   (thanks Carsten).
>
> - JavaScript for Google Analytics
>
>   Can be coded in the common header string. OK.
>
> - Date in the copyright
>
>   Can be coded in the common footer string. Well, it would be nice if it could
>   be computed somehow, and be for example (depending of user prefs) the date
>   when the file (or page) has been changed.
>
>   Hence, it's not specifically a data that's common to every page of my Web
>   site. How can we do this?
>
>   This is what I did with Emacs Muse, embedding Emacs Lisp in the footer:
>
>
>   Last Updated:
>       <lisp>
>           (format-time-string muse-footer-date-format
>                               (nth 5 (file-attributes (muse-current-file))))
>       </lisp>
>
>   but I think this is not currently possible with Org, right?  Is there some
>   other solution?
>
> - Contextual navigation menu
>
>   Finally, the only real problem that I see (the above being nice-to-have's)
>   is the following: I want to have a common navigation menu, but whose current
>   page is highlighted. To do so, I just have to add the class `current' to
>   the current entry, but this means the navigation menu is not constant
>   between pages!
>
>   I did that with Muse doing so:
>
>
>   (setq nav-menu '((\"Home\" .            \"index.html\")
>                    (\"About Me\" .        ( (\"CV\"             . \"curriculum-vitae.html\")
>                                           (\"PGP Public Key\" . \"pgp-public-key.html\")
>                                           (\"Contact Me\"     . \"contact-me.html\")))
>                    (\"Resources\" .       ( (\"Ubuntu\"         . \"ubuntu.html\")
>                                           (\"Emacs\"          . \"dot-emacs.html\")))))
>
>   and in the footer file:
>
>
>             <div id=\"navigation\">
>                 <h2>Navigation</h2>
>                 <lisp>(my-muse-generate-nav-menu)</lisp>
>             </div>
>
>   with the following (ugly -- caus' it should be written in a recursive way!)
>   definition for `my-muse-generate-nav-menu':
>
>
>         (defun my-muse-generate-nav-menu ()
>           (let* ((html-menu "")
>                  (cur-path-muse (muse-current-file))
>                  (cur-path-html
>                   (replace-regexp-in-string "\\.muse" ".html" cur-path-muse)))
>             (setq html-menu "<ul>\n")
>             (while nav-menu
>               (progn
>                 (if (not (listp (cdr (car nav-menu))))
>                     (setq html-menu
>                           (concat html-menu
>                                   "<li><a href=\"" (cdr (car nav-menu))
>                                   "\" title=\"" (caar nav-menu) "\""
>                                   (if (string-match
>                                        (concat ".*" (cdr (car nav-menu)) "$")
>                                        cur-path-html)
>                                       " class=\"current\""
>                                     "")
>                                   ">" (caar nav-menu) "</a></li>\n"))
>                   (progn
>                     (setq html-menu
>                           (concat html-menu
>                                   "<li>" (caar nav-menu) "\n" "<ul>\n"))
>
>                     (setq nav-submenu (cdr (car nav-menu)))
>                     (while nav-submenu
>                       (setq html-menu
>                             (concat html-menu
>                                     "<li><a href=\"" (cdr (car nav-submenu))
>                                     "\" title=\"" (caar nav-submenu) "\""
>                                     (if (string-match
>                                          (concat ".*" (cdr (car nav-submenu)) "$")
>                                          cur-path-html)
>                                         " class=\"current\""
>                                       "")
>                                     ">" (caar nav-submenu) "</a></li>\n"))
>                       (setq nav-submenu (cdr nav-submenu)))
>
>                     (setq html-menu (concat html-menu "</ul>\n</li>\n"))))
>                 (setq nav-menu (cdr nav-menu))))
>             (setq html-menu (concat html-menu "</ul>"))
>             html-menu))
>
>   How can I do such a thing in Org?
>
> THANK YOU VERY MUCH for all the hints or help you can provide me with!
>
> I really want to go the Org way for all my composed stuff...
>
> Best regards,
>   Seb

-- 
Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 Hannover
Tel.:  +49 (0)511 - 36 58 472
Fax:   +49 (0)1805 - 233633 - 11044
mobil: +49 (0)173 - 83 93 417
Email: s.rose@emma-stil.de, sebastian_rose@gmx.de
Http:  www.emma-stil.de

  reply	other threads:[~2009-03-18 16:54 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-18 16:04 Fully featured Web publishing Sébastien Vauban
2009-03-18 16:57 ` Sebastian Rose [this message]
2009-03-18 21:20   ` Sébastien Vauban
2009-03-18 22:38     ` Sebastian Rose
2009-03-18 22:56       ` Rasmus Pank Roulund
2009-03-18 23:19         ` Richard Riley
2009-03-19  7:46           ` Rasmus Pank Roulund
2009-03-19  8:28             ` Richard Riley
2009-03-19  9:43             ` Sébastien Vauban
2009-03-23 11:36               ` Sébastien Vauban
2009-03-23 13:50                 ` Taru Karttunen
2009-03-19 10:37           ` Sebastian Rose
2009-03-19 13:38             ` Richard Riley
2009-03-19 15:03               ` Sebastian Rose
2009-03-19 16:12               ` Matthew Lundin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ljr2ahvx.fsf@kassiopeya.MSHEIMNETZ \
    --to=sebastian_rose@gmx.de \
    --cc=emacs-orgmode@gnu.org \
    --cc=zthjwsqqafhv@spammotel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).