chadbaldwin.github.io icon indicating copy to clipboard operation
chadbaldwin.github.io copied to clipboard

[Comments] Building a Free Blog with GitHub Pages in Minutes

Open chadbaldwin opened this issue 3 years ago • 106 comments

https://chadbaldwin.net/2021/03/14/how-to-build-a-sql-blog.html

chadbaldwin avatar Mar 15 '21 17:03 chadbaldwin

Thanks a lot! It`s really helpful!!!

SarahLii avatar Jul 30 '21 03:07 SarahLii

thank you! is it easy to add comments to a blog post like this? :)

jessieupp avatar Aug 06 '21 23:08 jessieupp

@jessieupp Hi! Sorry I didn't get back to you sooner. So I looked into this a bit for you, and the answer is yes! In my opinion, the best way to do it is to use GitHub issues for comments. Each blog post has an "Issue" assigned to it, and the comments show up on your post. Which is exactly how our comments to each other are working right now.

I'm not sure what type of blog you plan on writing, but since my blog is geared towards software/database developers, I'm okay with requiring my readers to have a GitHub account in order to leave a comment. If your blog is about something less technical, then you may want to find another option than this one.

I believe there are other options such as disqus, which may be more appropriate for a more universal blog, however, it's not free and would still require someone to register in order to leave a comment. If you decide to go that route and you're having trouble getting it to work with your site, feel free to reach out to me.


The comment system I was using on this site prior to your comment was just a simple script I found that someone else had written, it looked decent and it worked...but it required doing things like modifying your blogs configuration, manually creating a GitHub issue, linking it to your post, etc.

While looking into this, I came across a popular GitHub app called utterances. It's almost identical to the comments section I was using before, but with WAY more features, and its all automatic. I no longer have to manually create GitHub issues, and best of all, it was relatively easy to set up. So I decided to make the switch, thanks to you! haha

I would recommend checking it out here: https://github.com/apps/utterances

The set up process is pretty straight forward...I clicked configure, picked which repo I wanted it to apply to, in this case it was my chadbaldwin.github.io repo. And then let it set up. At this point, it's simply enabled access to the app, it has not been added it to your site yet.

Afterwards it directed me to a page that helps generate the setup script you need (this is the page in case you don't get redirected https://utteranc.es/)

You fill out their form, and at the bottom, you can copy the script that looks something like this:

  <script src="https://utteranc.es/client.js"
          repo="chadbaldwin/chadbaldwin.github.io"
          issue-term="og:title"
          theme="github-light"
          crossorigin="anonymous"
          async>
  </script>

Except in your case, you would use jessieupp/jessieupp.github.io

Then you take that configuration and plop it at the bottom of your post.html layout file here: jessieupp.github.io/_layouts/post.html

Now as soon as someone leaves a comment, it will automatically create a github issue on your behalf, and add that persons comment, and it will now show up on your post. Et voilà!

I may actually modify the blog bootstrap used in this post to add that configuration, but disabled so future readers can simply turn it on with a switch in the _config.yml file.

Hope this helps and happy blogging!

chadbaldwin avatar Aug 13 '21 01:08 chadbaldwin

@chadbaldwin do you mind telling us how to add other language for syntax highlighting ?

I tried to do so, for c# :

navigate to js/highlightjs/languages/ create csharp.min.js fill in with :

hljs.registerLanguage("csharp",(()=>{"use strict";return t=>({
name:"csharp",aliases:["csharp", "cs"],disableAutodetect:!0})})());

but it doesnt seems to work, im sure im missing something :)

XenocodeRCE avatar Aug 15 '21 16:08 XenocodeRCE

Thank you very much for sharing, Chad!! I look forward to testing it out.

On Sun, Aug 15, 2021 at 9:05 AM Sam Harwood @.***> wrote:

@chadbaldwin https://github.com/chadbaldwin do you mind telling us how to add other language for syntax highlighting ?

I tried to do so, for c# :

navigate to js/highlightjs/languages/ create csharp.min.js fill in with :

hljs.registerLanguage("csharp",(()=>{"use strict";return t=>({ name:"csharp",aliases:["csharp", "cs"],disableAutodetect:!0})})());

but it doesnt seems to work, im sure im missing something :)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/chadbaldwin/chadbaldwin.github.io/issues/11#issuecomment-899071925, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUHSXOLAPITTODIRBHX57NLT47QTJANCNFSM4ZG6HGUQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

--

Jessie Upp Cell: 206.841.9917​

jessieupp avatar Aug 15 '21 18:08 jessieupp

Thanks so much! Do you know how I can add this blog as a page to an existing site I've already made?

AndrewVong avatar Aug 16 '21 01:08 AndrewVong

So I come back to answer my own question :

Github pages has built-in syntax highlighting, if one no need tsql specific stuff, one can edit /_includes/head.html file and remove any ref to highlights.js, like so :

  
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  {%- seo -%}
  <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
  {%- feed_meta -%}
  {%- if jekyll.environment == 'production' and site.google_analytics -%}
    {%- include google-analytics.html -%}
  {%- endif -%}
</head>

Take care of you everyone

XenocodeRCE avatar Aug 16 '21 03:08 XenocodeRCE

@XenocodeRCE yup! I was drafting up a response as I saw your comment pop up.

Just an FYI, you still need to fix your _config.yml file as well and remove this:

kramdown:
  syntax_highlighter_opts:
    disable: true

Your other options are to convert it to use the CDN hosted version of highlight.js, or add the csharp language file if for some reason you want to keep using highlight.js.

chadbaldwin avatar Aug 16 '21 15:08 chadbaldwin

Thanks so much! Do you know how I can add this blog as a page to an existing site I've already made?

@AndrewVong , I'm not sure. I'm not too familiar with that sort of stuff. I think your best option would be to set up this site as a subdomain for your main site? At least then it maintains the same domain. But I'm not sure how to set that up.

chadbaldwin avatar Aug 16 '21 16:08 chadbaldwin

Is there a simple way to (1) change the background colour template and (2) add a personal photo? I've tried changing 'minima' to other (apparently supported) options, but they don't seem to be recognised.

TJPBray avatar Aug 25 '21 11:08 TJPBray

This is great! Thank you. I though it was going to take me hours to set up a blog, but this helped me get my first blog post up in less than an hour.

MariannBea avatar Sep 06 '21 02:09 MariannBea

is there a way to customize the css of each individual blogpost?

tororutsu avatar Nov 07 '21 03:11 tororutsu

Very nice! I followed your instructions last night to set up a blog, and this morning, checking your site again, I see you are automatically switching from dark mode to light mode. Curious if you can point to where that is done.

Also - is there a preferred way to link and display images?

Thanks for the clean, easy to follow instructions!

JohnOCFII avatar Nov 17 '21 17:11 JohnOCFII

@JohnOCFII good news for you, it's very easy to set up. There's a Chrome extension I use called "Dark Reader", this extension will automatically convert all pages to a dark theme. It's pretty smart and works well 99% of the time. You can even customize how it makes it dark by changing settings like brightness, contrast, etc.

Well, the creator of the extension also made it so that you can run it on an entire website by including it as a script.

It allows you to support automatic switching based on system settings. Or you can force dark theme. You can also customize the same settings offered in the extension.

To set it up, this is all you need to do:

Open up /_includes/head.html

And add this snippet:

<!-- dark theme using DarkReader -->
<script src="//unpkg.com/[email protected]/darkreader.js"></script>
<script type="text/javascript">
  DarkReader.setFetchMethod(window.fetch); // Fix to remedy CORS errors in chrome console
  //DarkReader.enable();
  DarkReader.auto( {brightness: 100, contrast: 90, sepia: 10} );
</script>

This snippet is set up to enable dark theme based on system settings.

You can see it in use on my site here: https://github.com/chadbaldwin/chadbaldwin.github.io/blob/main/_includes/head.html#L39-L45


As far as displaying images, I'll direct you over to this issue where someone asked me something similar:

https://github.com/chadbaldwin/simple-blog-bootstrap/issues/2

chadbaldwin avatar Nov 17 '21 18:11 chadbaldwin

@rjahrj You should be able to add a <style> section to the top of your blog post for custom styling on a per blog post level.

I've done this in the past, see the code for this post: https://github.com/chadbaldwin/chadbaldwin.github.io/blob/main/_posts/2021-01-15-raiserror-cheatsheet.md?plain=1

chadbaldwin avatar Nov 17 '21 18:11 chadbaldwin

Images and Light and Dark are now working. Thanks again!

It looks like you've got some basic tagging setup in your blog (T-SQL, SSMS, etc.) when seen from the archive page. Can you point me in the direction to set up something similar?

JohnOCFII avatar Nov 18 '21 21:11 JohnOCFII

@JohnOCFII More good news...that's a built in feature for the software that builds the blog used by GitHub. The software is called Jekyll.

The feature is called "front matter", and it's a way of giving Jekyll a bit of extra information about your blog post.

You can find more info about it here: https://jekyllrb.com/docs/front-matter/

Here's an example from one of my recent blog posts:

---
layout: post
title: "Working with secure FTP in PowerShell"
description: "Recently learned a new way to work with secure FTP in PowerShell"
date: 2021-11-01T07:00:00-07:00
tags: PowerShell
---

So basically you just use a set of 3 dashes --- and then put the info in there. So in this case, I'm setting these settings, which are all optional:

  • layout - setting it to "post" which is the default value for anything in the _posts folder anyway, I just like being explicit
  • title - this is optional as the title will automatically get set based on the first line in your blog post that starts with #, but again, I like being explicit
  • description - this is useful for when you share your post via twitter, linkedin etc, it can use your description. It's also populated in your RSS feed for anyone who has subscribed to your site that way.
  • date - again, optional, by default it uses the file date, but you can optionally override it here.
  • tags - you can specify one or more tags here like tags: PowerShell T-SQL. That would count as two tags.

If all you want is to tag your post then you can simply do this:

---
tags: PowerShell
---

And the "Blog Archive" page will automatically break them up by Tag. So just stick that bit at the very top of the post, and it should just work 👍

chadbaldwin avatar Nov 18 '21 22:11 chadbaldwin

That was so incredibly easy! Thanks so much, @chadbaldwin!

JohnOCFII avatar Nov 19 '21 02:11 JohnOCFII

Hi. I need a little help. Everything worked great, so thanks for that! But I tried changing the theme, and also the "comment with rss" thing didn't work, so I went to _config.yml and commented it out, then changed my theme. But after doing this, the links for the blogs disappeared. The only thing that shows on the site is the "about me" part. I went back to _config.yml and uncommented the rss, but that didn't fix it. I have no idea what could have happened because I didn't touch anything else

AngelinesYG avatar Dec 01 '21 17:12 AngelinesYG

Hello Mr Baldwin, I was wondering how I could change the titles font. Currently my title is "Bleeding Trees", and I personally think it looks slightly out of place. Everything else works wonderfully though, and I am eternally grateful for this easy to use template.

ghost avatar Mar 19 '22 04:03 ghost

Thanks so much! Do you know how I can add this blog as a page to an existing site I've already made? @AndrewVong I assume your site is a github site. You can clone this project and then at step 3 name your repository "blog" instead, or whatever you want your page to be named. Then, once your repository is set up, go to settings/pages and under source select main/root and save. Your blog will be available at [yoursite/blog].

Not everything will work, you'll have to modify some of the templates and configuration to make sure the baseurl is [yoursite/blog]. Under _config.yml add the variable baseurl: "/blog". You may have to modify other templates if some links don't work, by adding {{ site.baseurl }} to some links.

here is my solution https://github.com/andreamoro-git/blog

andreamoro-git avatar Apr 14 '22 16:04 andreamoro-git

Thanks for this. Got it set up but test posts aren't displaying. Was there another step? https://jakefrk.github.io/

jakefrk avatar Apr 17 '22 00:04 jakefrk

@jakefrk it's strange because your archive is showing the posts https://jakefrk.github.io/archive,

are you using the minima theme? Somehow the home layout is not loading, try to copy this file to _layouts/home.html https://github.com/jekyll/minima/blob/master/_layouts/home.html

andreamoro-git avatar Apr 17 '22 08:04 andreamoro-git

Any suggestions for implementing tooltips with this template?

sgbaird avatar Apr 25 '22 01:04 sgbaird

Nice template, thanks for sharing. Is there a way of getting rid of the rss links?

skmuiruri avatar Apr 25 '22 06:04 skmuiruri

Nice template, thanks for sharing. Is there a way of getting rid of the rss links?

edit the head.html template and remove the relevant row

andreamoro-git avatar Apr 25 '22 11:04 andreamoro-git

@skmuiruri, you can disable it by commenting out the line rss: rss in the _config.yml file. Change the line to #rss: rss, this will remove the link, however, RSS functionality will still be there, it just won't show the link.

As far as I know, there's no simple way to completely disable RSS functionality. It is loaded via a default plugin that GitHub Pages includes. There may be a way to disable it entirely maybe through un-loading the plugin somehow, which I've never done before, or maybe through a setting in the plugin itself:

https://github.com/jekyll/jekyll-feed

chadbaldwin avatar Apr 25 '22 15:04 chadbaldwin

@andreamoro-git RSS settings are not part of the head.html include file. The RSS functionality is a default plugin included by GitHub Pages, and is enabled by default. The link is built into the Minima theme and the only way to remove it is by following my instructions above....or by creating a social.html override file that doesn't include it.

chadbaldwin avatar Apr 25 '22 15:04 chadbaldwin

@sgbaird I don't know of any simple way to add tooltips. You'll probably have to go with a generic HTML/CSS solution online. You can mix HTML and Markdown in the same file, so you can probably find some sample tooltip code online, add the CSS to the css/override.css file, and then add your tooltip <span> tags directly in the post.

chadbaldwin avatar Apr 25 '22 15:04 chadbaldwin

I create my repo as public and then change to private. When I revert to public there is no blog anymore. Do I have to create the blog again?

fedemolina avatar May 01 '22 20:05 fedemolina