A theme consists of UI elements such as logos, images, copyrights messages, landing page text, background colors etc. WSO2 API Store comes with a default theme.
The folder structure of the API Store themes
The default theme of the API Store is called Fancy
. You find it inside the <APIM_HOME>/repository/deployment/server/jaggeryapps/store/site/themes/fancy
folder. If you do not have access to the file system, download the default theme from here.
...
Because a sub theme is saved inside a main theme, it needs to contain only the files that are different from the main theme. Any file you add inside the sub theme will override the corresponding files in the main theme. The rest of the files will be inherited from the main theme.
Let's see how to create a new theme and set it to the API Store: Table of Contents
Writing a sub theme of the main theme
Because a main theme already has most of the UIs and the syntax and logic of Jaggery code defined, in a typical scenario, you do not have to implement a theme from scratch. Rather, you just add in your edits as a sub theme of the existing main theme as given below:
- Download the default main theme from here, unzip it and rename the folder according to the name of your new theme (e.g., ancient). Let's call this folder the
<THEME_HOME>
. - To change the logo of the API Store, replace the the
logo.png
file inside the<THEME_HOME>/images
folder with this logo (or anything else of your choice.) - To change the copyrights note in the footer, open the
<THEME_
HOME >HOME>/
templatest
emplates/page/base/
templatet
file using a text editor, search for the word "Copyright" and change the text. For example, let's add our company name as "copyright", "© Copyright 2011 – 2014 My Company."emplate.jag
To change the header's b ackground color, open the
<THEME_HOME>/
cssc
ss/styles-layout.css
file using a text editor and add the following CSS rule to the end of the file. It changes the header color to red.Code Block language css .header-menu div.navbar-inner div.container-fluid{ background:red; }
Adding a new page to the Store
Go to <THEME_HOME>/site/pages
folder where you find the pages of the API Store. These pages are common to all the themes. Duplicate the sign-up.jag
file and rename it to about.jag
.
Open the "about.jag" file you just created.
Adding the new theme to the Themes menu
Once you are done modifying the new theme, add it to the Themes menu in the API Store along with a thumbnail image as follows:
- Open the
<THEME_HOME>/
templates/user/login/template.jag
file and find the HTML table that defines the theme thumbnails. Add a new row under the <table> element with the following code. It adds thumb-ancient.png as the thumbnail image of our theme. Be sure save the image in the
<THEME_HOME>/images
folder.Code Block language xml <tr> <td> <div class="thumbnail <% if(jagg.getUserTheme().base == "fancy" && jagg.getUserTheme().subtheme == "ancient") { %>currentTheme<% } %>"> <a data-theme="fancy" data-subtheme="ancient" class="badge themeLabel" onclick="applyTheme(this)"> <img src="<%=jagg.getAbsoluteUrl(jagg.getThemeFile("images/thumb-ancient.png"))%>" /> <br /><div class="themeName">Ancient</div> </a> </div> </td> <td> </td> </tr>
Setting the new theme as the default theme
You can set your new theme as the default theme in two ways:
- Using the file system
- Using the Admin Dashboard Web application
If you have access to the file system, open the <APIM_HOME>/repository/deployment/server/jaggeryapps/store/site/conf/site.json
file and add the following code to it.
...
It specifies the base theme as fancy
, which is overridden by the sub theme ancient
. As you specify a subtheme element here, the base theme is overridden by it.
If you do not have access to the file system (e.g., you are using the WSO2 Cloud)
...