# How to customize an iGEM wiki

## Sharing is caring

... that's why I created this page. I really hope that you can benefit from it, and that you do not use a lot of time making the same mistakes as I did. Enjoy!

And hey, please do the same thing!

## Getting started

So what are this WikiMedia thing, and how do you style it? Here is what you need to know to get startet:

• First of all, you'll have to learn the MediaWiki-markup, which can be found here.
• Next, you'll need to know that you do not have access to anything conserning the backend. All you can do to affect the appereance of your wiki, is to insert HTML-code directly the wiki-editor.

"So I need to paste all my styling-code into every single page on the wiki?"

## Using templates

### Centralizing the layout using templates

Of course it would be would be pretty annoying if you had to paste your styling-code into every single page. Then you would have to change every single page every time you make a tiny change in the layout. What you can do is to centralize the layout by making use of templates. In this way you can have all your styling and scripting in a template, which can be imported into all the other pages (by manually pasting code into each page unfortunately). This means that the styling and the scripting is completely isolated from the content, and present only one place, meaning that you will only have the make your changes this one place.

How does it work? You just put in this peace of code:

{{< YOUR TEMPLATE GOES HERE >}}


... and then everything from your template is loaded into that particular page.

Example:

{{:Team:DTU-Denmark/Templates/Navigationbar}}

... loads the navigation bar (which consists of this code) into the page.

### Helping your team using templates

As you can read in the Help:Templates-section, you can also make templates that takes parameters. This way you can help your team. For instance you kan tell them to write

{{:Team:< TEAM-NAME >/Templates/NiceBox|<title>|<subtile>|<text>|<linkto>}}

... in stead of forcing them to learn everything about the box-model, how floats work and so forth...

### iGEMs default styling

When to start styling, you are working on top of iGEMs default layout. This means that, if you do not override an particular rule, e.g. that <h2> is underlined, then <h2> will be underlined on your wiki. It can be helpfull to have a look at the default styling.

## Styling the wiki

You can always links to your own external stylesheet as you are used to:

<link rel="stylesheet" href="< YOUR CSS FILE GOES HERE >" type="text/css" />

But what do you do if you want the locate the css-file on iGEMs server, so that everybody in your team can access it? You simply create a new page, write down the styling as you would do in a normal css-file, and then you use the following code in stead:

<link rel="stylesheet" href="< YOUR PAGE HERE >?action=raw&ctype=text/css" type="text/css" />

### Styling tricks

#### Removing the MediaWiki look

#contentSub, #search-controls, .firstHeading, #footer-box, #catlinks, #p-logo {
display:none;}
#top-section {
border: none;
height: 0px;}
#content {
border: none;}


/* Removes "teams" from the menubar */
#menubar > ul > li:last-child {
display: none;}
/* Resizes the menubar to fik the links (default is 400px) */
width: auto;}


Here is made the menubar show up only when moving the mouse on top of it:

body {
margin: 10px 0 0 0;
#top-section {
width: 965px;
height: 0;
margin: 0 auto;
border: none;}
font-size: 65%;
top: -14px;}
background-color: transparent;}
background-color: transparent;}
color: white;}
color: transparent;}
color: white;}


### Get inspiration in our stylesheet

You can are welcome to take a look in our stylesheet...

## jQuery hacks

### Remove all empty <p></p> tags

Annoyed of all those <p></p> and <p> </p> emerging everywere in your markup, distroying your layout by adding a bit of vertical space here and there?

They easily emerge when using templates or <html></html> tags. But fortunately they are just as easy to remove. All you need to do, is to paste in this code bit:

<!-- Remove all empty <p> tags -->
<script type="text/javascript">
$(document).ready(function() {$("p").filter( function() {
return $.trim($(this).html()) == '';
}).remove()
});
</script>


### LaTeX equations

It is possible to enabled TeX in a MediaWiki (Manual:Math), but unfortunately it doesn't seem like iGEM has done that..

Another way to enable your wiki to display LaTeX equations, is to use MathJax. MathJax is a JavaScript file located at http://cdn.mathjax.org/mathjax/latest/MathJax.js, which reads your document after it has been loaded, and then changes the content of the document according to the notation. That is, it removes everything between any of the following delimiters...

$...$
$...$ (if configured)
$...$
$$...$$
\begin{?} ... \end{?}


...and replace them with equations. All you need to do is to add the following to your wiki tekst:

<!-- MathJax (LaTeX for the web) -->
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>


And if you want to use $...$ delimiters:

<!-- MathJax (LaTeX for the web) -->

<!-- This part is only if you want to use $...$ delimiters -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\$','\$']]}});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>


I never managed to make "\label" and "\ref" work, but a non-tested version of the code, that enables the "\label" and "\ref" commands, can be found on GitHub. The issue is discussed here.

### Fix Internet Explorer

Tired of styling for Internet Explorer? Just use this simple fix:

<!-- ie9.js (fixes all Internet Explorer browsers older than ie9) -->
<!--[if lt IE 9]>