How I set up my first website (again)
Rebirth
A week ago, I created my first website using Hugo template, Tufte. Initially, I was eagar to write my posts using Tufte style but I had severeal difficulties with the template. Firstly, I could not display full RSS feeds. Having a website with full RSS feeds is a prerequisite to be on r-bloggers. Secondly, the tags did not work. When I was searching for Hugo themes used by websites created via blogdown
, I noticed lots of individuals using the Academic theme. Though the theme was attractive and would have address issues I encountered with the Tufte theme, I wanted a less mainstream theme. That’s when I stumbled onto Sascha’s blog, where he used the theme called Mainroad. Below I will outline how I set up this website. You can refer to Sascha’s website for a detailed walkthrough though our steps are slightly different.
Basic Setup of the Site
Things to install
- Rstudio
blogdown
package- Static site generator, Hugo, via
blogdown::install_hugo()
- Git program
- Git Hub account
- Account with website publisher, Netlify. Link your Git Hub account to your Netlify account. Netlify will auto update your website everytime you push content into your Git Hub.
Genesis
I adapted the workflow recommended from blogdown’s e-book
- Create a new repository in Git Hub for your website.
- Create a New Project in Rstudio under Version Control. Use the above Git Hub repository.
- Type
blogdown::new_site(theme = 'user/repo')
.theme
is any website theme from https://themes.gohugo.io/.user/repo
is the GitHub username and GitHub repository of the selected theme. I’m using the Mainroad theme template from https://github.com/Vimux/Mainroad. The Mainroad theme requires Hugo verison 0.43. You can update your hugo version in Rstudio viablogdown::update_hugo()
. When linking your GitHub with Netlify, ensure the Hugo verison is more than 0.43, otherwise Netlify will be unsuccessful in deploying your site. - When the content is ready to be published, tick the
staged
box in the Git GUI. Thencommit
the stagged items. After whichpush
the commited items into your GitHub repo. Your website via Netlify will be updated soon after items are pushed into your GitHub repo as you have previously link your netlify account with your GitHub repo. I had difficulty ticking thestagged
boxes in the GUI and resorted to typing the Git commandgit add .
instead. If you are unfamiliar with saving with Git, you can refer to jennybc’s site and atlassian’s site for help.
Partially Completed Content
When you return to your R project in the future, remember to select Sever Site
under the Addins
dropdown menu. This will allow you to preview how the edited website will appear when you save your changes.
Testing the theme
I’ve tested the following features on the Mainroad theme
- Headings
- Tables
- Non-static plots
- Menu bar
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
The heading for level 5 and 6 looks similar.
Tables
knitr::kable(mtcars[1:6, 1:6], caption = 'A subset of mtcars.')
mpg | cyl | disp | hp | drat | wt | |
---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 |
Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 |
Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 |
Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 |
Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 |
Valiant | 18.1 | 6 | 225 | 105 | 2.76 | 3.460 |
Noted that the capti | on is p | ositio | n on th | e top | of the | table. |
Non-static plot
plotly
p <- ggplot(iris, aes(x = Petal.Width, y = Petal.Length)) +
geom_point()
plotly::ggplotly(p)
gganimate
anim <- p + transition_states(Species,transition_length = 2, state_length = 1)
anim
Both dynamic plots plotly
and gganimate
work on Mainroad theme. Though the use of gganimate
functions may affect the speed of building the website.
Optional Setups
After establishing the basics of the websites and testing some features of theme, I enabled additional features to the website such as:
- Disqus
- Full RSS feeds
Disqus
- Set up a Disqus account.
- Install Disqus. Unfortunately, Hugo does not have a simple plugin to integrate Disqus. You need to manually edit some files to install Disqus on Hugo.
- The line
disqusShortname
is at the top ofconfig.toml
for the Mainroad theme.
Full RSS feeds
- Create a .xml file under ’themes/Mainroad/layouts/_default’. Name the file “rss.xml”. I wasn’t sure how to create an .xml file so I copied an .xml file from the ‘public’ folder and renamed it. Then, I deleted all the scripts to derive a blank .xml file.
- Furnish the blank “rss.xml” file with Hugo’s embedded rss.xml code. Replace summary feed script
{{ .Summary | html }}
with full content script{{ .Content | html }}
. - Update
baseurl
at the top ofconfig.toml
with your website’s URL address. - Test if your website has full content RSS feeds with https://validator.w3.org/feed/check.cgi or https://simplepie.org/demo/
Conclusion
Looks like I successed in ticking off a few boxes in my 2019 new year’s resolution such as learning about GitHub, setting a blog to document my data science learning journey. I’m looking forward to posting more content in the near future. The features I intended for my site was implemented successfully with the Mainroad theme so I don’t think I will change the theme any time.