Post Syndicated from Bradley M. Kuhn original http://ebb.org/bkuhn/blog/2014/11/08/mailman.html
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.py
I 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.