Trying to implement Jekyll via the Poole/lanyon but formatting is not appearing - jekyll

I'm currently working through my first implementation of a Jekyll webpage (via Github-pages) and I'm trying to use the Poole: Lanyon structure. However, while it seems that the static site is active, it is not picking up any of the formatting.
I can't tell if I needed to add anything else from lanyon github page (https://github.com/poole/lanyon) or if it could have something to do with my '_config' file, which currently looks as follows (or is an entirely different issue):
title: Michael
tagline: 'hopefully a blog2'
description: 'A reserved Jekyll theme that places the utmost gravity on content with a hidden drawer. Made by #mdo.'
url: "/michaelmarzec.github.io"
baseurl: "https://michaelmarzec.github.io"
paginate: 5
permalink: pretty
# About/contact
author:
name: Mark Otto
url: https://twitter.com/mdo
email: markdotto#gmail.com
# Gems
plugins:
- jekyll-paginate
# Custom vars
version: 1.1.0
google_analytics_id: #UA-XXXX-Y
My github repository is here: https://github.com/michaelmarzec/michaelmarzec.github.io
And the attempted website here: https://michaelmarzec.github.io/
Any recommendations or advice will be greatly appreciated!

Looks like I was overthinking this issue - the following was my simple solution:
url: https://michaelmarzec.github.io/
baseurl: ''

Related

How do I change the layout extensions in Jekyll to .liquid?

By default, Jekyll uses *.html, however, the program I use (Sublime Text 3) has an a package that adds Liquid syntax support but it will only auto detect and do the code suggestions if the file has the extension *.liquid. The other problem is, Jekyll is looking for default.html as well as the other layouts. How do I make Jekyll look for *.liquid files instead like default.liquid?
In the bottom right hand corner of sublime it will have the name of the filetype being used, for example 'HTML'. If you click this you can change it to liquid.
What worked for me is to rename files to *.liquid.html and then
update the front-matter to use the new name, e.g.,
Including abc.liquid.html in default.liquid.html
=== default.liquid.html ===
---
---
{% include file.liquid.html %}
Using layout default.liquid.html in a Blog Post
---
layout: default.liquid
title: "My post title"
date: 2021-01-24 19:00
---

Why isn't the stylesheet variable being passed from this Jekyll _config.yml file?

I want all the files in the post folder to use the posts.nest.sass.css stylesheet, so I tried putting that in as a default in the _config.yml file
defaults:
-
scope:
path: "_posts"
value:
layout: "post"
stylesheet: "css/posts.nest.sass.css"
Then in post.html, which is the layout file for these posts I included this in the head:
<link rel="stylesheet" href="{{site.stylesheet}}">
In the generated page there is nothing inside the href attribute. How should this be written so the stylesheet variable is passed in?
I have not been able to find documentation about how this should be done, I just guessed. Links to good places to learn about formatting in Jekyll would be appreciated.
Edit: After more fiddling, including running the file through this YAML linter, I abandoned putting this in the _config.yml file, and instead just filled in the href info directly - which up reflection is fine, since it isn't going to change with any of the posts and the layout file will fill it in. However the jekyll server says every time I save that there is invalid front-matter:
Defaults: An invalid front-matter default set was found:
{"scope"=>{"path"=>"", "type"=>"posts"}, "value"=>{"layout"=>"post"}}
I'm putting in the whole file now in case a syntax error elsewhere is the
issue, though I can't see it.
defaults:
-
scope:
path: ""
type: "pages"
values:
layout: "default"
stylesheet: "css/content.nest.sass.css"
-
scope:
path: ""
type: "posts"
value:
layout: "post"
destination: docs
exclude:
- archive
- graphics
- webplayer
- browsergame
- blend4web
- details-shim-master
- blenderstuff
- working
- LICENSE.txt
- README.md
- TODO.txt
- basetemplate.html
markdown: kramdown
url: "https://www.moonwards.com/"
Your default values are added to every posts variables, like the ones in front matter. So, the right syntax is :
<link rel="stylesheet" href="{{page.stylesheet}}">

Jekyll:Use front matter in permalinks

According to Jekyll Docs, you can add categories to the permalink like so: /:categories, but what if I want to use front matter that isn't categories? For example, I have a front matter named state. I tried adding /:state to no avail.
For example: state/:state is my permalink. In my front matter I have the following:
---
state: tx
---
So then my url will be state/tx.
I realize that I can create a custom permalink in the front matter of each page, but I am looking for something automatic as I am having less savvy users update the site. Also, categories isn't an obvious indicator that a state abbreviation should go there for my content managers.
as you may have already noticed. using a default front matter for states' page can achieve that. can achieve the automatic permalink generation.
by adding the following to _config.yml:
defaults:
-
scope:
path: "_states" # states' page location
values:
permalink: /state/:categories/:slug/
and in each page, using a yaml front matter like:
---
category: tx
---
But if you want to get ride of the "category" here, and you can use local plaguing with your website (for example github page doesn't support them by default) then add a generator that run before the site is generated, looks for the state value from the yaml front mater of each page, and put it in the appropriate folder.
That "act as a placeholder", you won't see /:categories in your URLs, it says that if a post you made belonging to a category, the name of the post category will go there.
For example: having a post with the following front matter :
---
categories: mycat
---
Then that post URL will start with /mycat/....
If you want custom variables included in the front matter to be replaced in perm a links, that can't be done. You can just add custom strings to the permalinks but not variables.

Jekyll github-pages website does not display CSS formatting except locally

There are many questions similar to mine, but most of them arise from not using baseurl correctly. My website, however, does not even use a baseurl. It uses the root Github page. I essentially forked my website off of the Airspace theme ported by luminousrubyist, whose website displays correctly, so somewhere down the line I made a change that stopped it from displaying correctly. Therefore I would appreciate it if someone else could figure out what's wrong; I have been trying to figure it out for hours.
My Github page
My _config.yml file:
title: "My Portfolio"
subtitle: "My portfolio, detailing my experience"
# Base URL of site. It should always start with a slash,
# and never end with a slash. Set it to a blank value if hosting at the
# root of your server.
# baseurl: "/" # the subpath of your site
url: "http://austinstover.github.io" # the base hostname & protocol for your site
cover: "/assets/cover.png"
logo: "/assets/logo.png"
# Build settings
markdown: kramdown
# Google analytics
ga_tracking_id: "UA-90009514-1"
# Category descriptions (for archive pages)
descriptions:
- cat: jekyll
desc: "Posts describing Jekyll setup techniques."
- cat: dummy
desc: "Just some placeholder posts, lorem ipsum and the rest."
exclude:
- "/vendor/"
- "Gemfile"
- "Gemfile.lock"
- "README.md"
- "LICENSE.md"
- "*.gemspec"
keep_files:
- "CNAME"
- ".git"
- ".gitignore"
try to set baseurl in your _config.yml:
baseurl: "" #if not used.
btw, your index.html use page.html layout (from _layouts), that use default.html layout which include head.html (from _includes). this one call {{ site.baseurl }} but it's undefined .

How to customize Jekyll's url?

I would like to use Jekyll to create a site. not a blog. Is there a way to avoid to have the creation date specified in the url and in the page's file name?
I think that the idea behind Jekyll is brilliant, but it seems too tied to blog generation content while it could be useful also in a more general use case.
In the _config file you can change the permalink to anything you like, for example mine is
permalink: /blog/:title
As for the date you can choose your own date using the YAML front matter, again in mine i have
title: example
date: you can pick what ever date you want
What the docs say:
You configure permalinks in your _config.yml file like this:
permalink: /:categories/:year/:month/:day/:title.html
If you don’t specify any permalink setting, Jekyll uses the above pattern as the default. The permalink can also be set using a built-in permalink style:
permalink: date
Although you can specify a custom permalink pattern using template variables, Jekyll also provides the following built-in styles for convenience.
date = /:categories/:year/:month/:day/:title.html
pretty = /:categories/:year/:month/:day/:title/
ordinal = /:categories/:year/:y_day/:title.html
none = /:categories/:title.html
Source: https://jekyllrb.com/docs/permalinks/
This is the basic setting I use:
permalink: pretty
This sets pages to the pretty permalink style. Thus '/contact.md' will become '/contact/'.
How I use it for blog posts:
permalink: /blog/:title/
This makes sure the path contains the (sluggified) title.
How I use it for collections:
permalink: /desiredpath/:name/
This makes sure the path contains the filename.
If you aren't producing blog pages, you can create files in the directory structure mapping to certain URLs. Running on localhost, if your directory has the structure
- _layouts/
- config.yml
- index.html
- some_other_page.html
- some_directory/
- index.html
- some_sub_page.html
You'll have content at the following locations after jekyll has processed the files:
0.0.0.0:4000 (index.html)
0.0.0.0:4000/some_other_page.html (some_other_page.html)
0.0.0.0:4000/some_directory (some_directory/index.html)
0.0.0.0:4000/some_directory/some_sub_page.html (some_directory/some_sub_page.html)
You can also use the permalink attribute on each post to set one manually, or set a different default in config.yml Permalinks only have a small subset of variables available to use and need to be defined in every single file you want to put in a non-standard location.
This directory structure will automatically categorize your posts too. So you can have:
- some_category (defined in the yaml front matter or the _config.yml
- index.html
- _posts/
- some_post.md
- some_other_post.md
And posts will automatically have the category 'some category', and index.html will appear at 0.0.0.0:4000/some-category, with the default permalink format. The category variable is available as :category in the permalink format string.
I came across this old question while looking for a way to organize jekyll pages in a _pages directory, similarly to _posts. then access this pages without displaying the whole path in the url.
The approach that worked better for me, is to use jekyll collections as follows:
1 - Add a pages collection in _config.yml :
collections:
pages:
output: true
permalink: /:path/
2 - create a new directory named _pages (it should have the same collection name, prefixed by _)
3 - add the pages in the _pages folder, as .md or .html files starting with YAML Front Matter.
eg. /_pages/about.md will looks like:
---
layout: page
---
<!-- about page content -->
after building that, the URL of the about page will be <your-web-site>/about .
Alternatively, to display a collection name, you have to define its permalink as:
permalink: /:collection/:path/