As always, when something takes me a while to figure out, I try to post the generally useful technical information on my blog. For the new copyleft.org site, I've been trying to get all the pages branded properly with the header/footer. This was straightforward for ikiwiki (which hosts the main site), but I spent an hour searching around this morning for how to brand the GNU Mailman instance on lists.copyleft.org.
Ultimately, here's what I had to do to get everything branded, and I'm still not completely sure I found every spot. It seems that if someone wanted to make a useful patch to GNU Mailman, you could offer up a change that unifies the HTML templating and branding. In the meantime, at least for GNU Mailman 2.1.15 as found in Debian 7 (wheezy), here's what you have to do:
First, some of the branding details are handled in the Python code itself, so my first action was:
# cd /var/lib/mailman/Mailman # cp -pa htmlformat.py /etc/mailman # ln -sf /etc/mailman/htmlformat.py htmlformat.pyI did this because
htmlformat.py
is not a file that the Debian
package install for Mailman puts in /etc/mailman
, and I wanted
to keep track
with etckeeper that I was
modifying that file.
The primary modifications that I made to that file were in the
MailmanLogo()
method, to which I added a custom footer, and
to Document.Format()
method, to which I added a custom
header (at least when not self.suppress_head
).
The suppress_head
thing was a red flag that told me it was
likely not enough merely to change these methods to get a custom header
and footer on every page. I was right. Ultimately, I had to also change
nearly all the HTML files in /etc/mailman/en/
, each of which
needed different changes based on what files they were, and there was no
clear guideline. I guess I could have
added <MM-Mailman-Footer>
to every file that had
a </BODY>
but didn't have that yet to get my footer
everywhere, but in the end, I custom-hacked the whole thing.
My full patches that I applied to all the mailman files is available on copyleft.org, in case you want to see how I did it.