What site variables can I use GitHub pages? - jekyll

I'm trying to build the best GitHub pages page I can and would love to be able to offer more helpful links to the repository than just "Improve this Page".
I'm using the default Jekyll theme and would like to understand:
How does "Improve This Page" show up?
What other information about my repo/project is there?
Any helpful resources are appreciated.

Figuring this out was really illuminating!
It took some digging in my GitHub Jobs.
When "Pages Deploy and Publish" runs, I see something like this
The theme GitHub Pages is using, if I don't specify one, is Primer
Primer's default layout is where we get the "Improve this Page" link. Specifically, Improve this Page is referenced in _layouts/default.html, on line 22.
Notice I said referenced. Primer doesn't define github_edit_link (the Liquid tag used to make the link).
That led me a bit further down the rabbit hole to find the dependency:
Once that veil had been pierced, I took a look at jekyll-github-metadata
This is where I found the treasure trove of information I had been looking for!
This Markdown Document Lists All Of The Site-Wide Variables
I've added some descriptions to each:
Site Variable
Description
hostname
Always github.com
pages_hostname
Always github.io
api_url
Always https://api.github.com
help_url
https://help.github.com
environment
Always dotcom
pages_env
Always dotcom
public_repositories
The Publisher's public repositories
organization_members
The members of the Publisher's Organization
build_revision
The build revision (the commithash)
project_title
The Name of the Repository
project_tagline
The repository description
owner_name
The Owner of the repository
owner_url
The Owner's public GitHub URL
owner_gravatar_url
The Owner's GitHub Avatar!
repository_url
The full URL for the repository
repository_nwo
The root-relative URL of the repository
repository_name
The name of the repository
zip_url
A URL to the zipped contents of the repository
tar_url
A URL to the tarball contents of the repository
clone_url
The URL to the git repo
releases_url
The URL for the Repository's releases
issues_url
The URL for the Repository's issues
wiki_url
The URL for the Repository's wikis
language
Unsure, but I'd guess it's the language ;-)
is_user_page
Unsure, but I'd guess this indicates if this is a page for a user
is_project_page
Unsure, but I'd guess this indicates if this was a project
show_downloads
If downloads should be displayed
url
The public URL or CNAME
baseurl
The root-relative base URL (most likely /)
contributors
Contributors to the Project
releases
Releases of the project
latest_release
The latest GitHub Release Object
private
If the repository is private or not
archived
If the repository has been archived
disabled
If the repository was disabled
Hopefully this content saves the next person the time and effort to track this down.

Related

Can't use Git Pages

TLDR: GitHub Pages isn't working.
I have a little knowledge on GitHub and tried multiple fixes to no avail. One repository is only showing readme file contents.
Please explain in lamest terms.
New to web development, I finally was able to complete my first site, but I'm unable to actually deploy the files for some reason; please forgive me, I literally have no idea what any of the git terminologies are.
I purchased a pro subscription in order to keep the repository private and the site public.
Every file is present in what seems to be the main root directory, but nothing is being actually presented.
I've created two different repositories in an effort to fix this, as I've seen different methods are available.
The first repository includes a README file because I was originally instructed to do so, however, all the site link does is present that README file's contents;
I also attempted to add a permalink fix within the file, but all it did was add that text to the other text presented.
The second repository in question literally greets me with nothing but a 404 error.
The solution I tried for the second repository was to have the repository name share my username as well since that seems to be where the site's link originates, but no present changes have occurred.
Finally, the waiting game solution hasn't beared any fruit yet either aside from updating the README file's contents.
All help is very much appreciated.
Check first:
Your GitHub repository name, which depends on the type of GitHub Pages you are creating
If you're creating a user or organization site, your repository must be named <user>.github.io or <organization>.github.io.
your GitHub Pages Publishing source
If you use the default publishing source for your GitHub Pages site, your site will publish automatically. You can also choose to publish your site from a different branch or folder.
You can add more pages to your site by creating more new files.
Each file will be available on your site in the same directory structure as your publishing source.
For example, if the publishing source for your project site is the gh-pages branch, and you create a new file called /about/contact-us.md on the gh-pages branch, the file will be available at https://<user>.github.io/<repository>/about/contact-us.html.
Make sure you have GitHub Pages enabled for every repository and that it's set to the branch you want to publish by checking your Pages settings at github.com/<user>/<repo>/settings/pages. If enabled, there should be a link on that page that takes you to the site.

HUGO + GitHub Pages: How to set up subdomain

I have a github repository that I want to add my hugo site to. From the docs folder in my repository I can run github pages.
Therefore, I have changed my publishDir parameter in the hugo config to docs.
publishDir = "docs"
Now when I build hugo it ouputs everything in the docs folder which is great, the issue is running a subdomain from there.
How do I get a subdomain on hugo that is generated into my docs folder that acts like a subdomain on github pages?
I know I would need to use a CNAME and then tell it to say /docs/subdomain is actually subdomain.site.com
but I am not sure how to set that up in HUGO. and where do I put the subdomain folder? in the static folder so it would be theme_name/static/subdomain which would ouput into the docs like docs/subdomain?
If this is the way, can I use all the parameters and shortcodes in my static folder?
Also, if I need to create 2 hugo installations, one for the main site and one for the subdomain site, is their a way to share site params, configs, static files and layout files etc… ?
You have to create a custom script to create two different builds and then
Add a CNAME file to your project's repository. The content of this file must be a single line specifying the bare subdomain for your project's custom subdomain (e.g. pjname.mydomain.com).
In your DNS provider's settings, create a new CNAME record that points project name to either the root (usually denoted by #), if you have previously set up an apex domain, or to myusername.github.io if you've set up a custom subdomain. It should look something like this:
If you have two sites that you want to serve separately under two domains/subdomains (or even subpath), it's better that you create two different repositories for that.
In your username.github.io repository, you are using the "docs" folder to serve your site. However, this procedure will not work for other repositories. To serve from other repositories, name the repo whatever you like and create a "gh-pages" branch on it. The branch root must contain the entire site. You can access this site using username.github.io/your-repo-name/.
In this new repo you can add a CNAME. Hope this works. I did almost the same thing, except that I used subpaths instead of subdomains. Here's my main profile rafed.github.io and my blog rafed.github.io/devra/

My github page won't load

I'm trying to set-up a github page with a name scheme of 'orgname.github.io'. In my case, I named my repository with "natoursqm.github.io" but I still get this '404 There isn't a GitHub Pages site here." error and I don't know how will I fix this problem, I've been quite searching for answers here but most of them used a 'username.github.io' name scheme.
Your page will have to be the name of your GitHub username.
So in your current case, you would need to have a repo like this:
quizonmarielle.github.io
Otherwise you'll have to create a new GitHub account with the username "natoursqm" to create a GitHub page called
natoursqm.github.io
Also wanted to note that the GitHub page HAS to be in this format
your_username.github.io
it cannot have anything extra with the username
Take a look at my github portfolio.
https://sujithnath.github.io/sujithnath/
the URL should end with your repo name. here it is nothing but sujithnath
You have to configure from you repo settings.
You can read more # https://pages.github.com/

How to make my post not public for a while?

I'm using jekyll and github pages. I'm currently busy with new post and it's not finished yet. I'm working from different places, that's why I need to push my changes to github. I created new post and push it on github. But after push my half-finished post is visible for everyone. I don't want to make it visible untill I finish it.
How I can hide it? Is there any standard way or flag?
I understand that I can copy it to another folder but it's not preffered way.
You can include a line in your YAML Front Matter to indicate whether a post is published or not:
published: true
or
published: false
Set published to false if you don’t want a post to show up when the site is generated.
Those pages are visible only if you push them on the gh-pages branch.
You could maintain a gh-pages-draft branch for you to push work in progress, and merge that branch to gh-pages when you are ready for publication.
For instance, the app middleman-deploy (for Middleman, a static site generator) recently supports pushing to other branches than just gh-pages.
Note: kleinfreund adds in the comments
The idea of drafts is backed into Jekyll.
Store post drafts in /_drafts and omit the date in the filename
This is detailed in "Working with drafts"

How to see an HTML page on Github as a normal rendered HTML page to see preview in browser, without downloading?

On http://github.com developer keep the HTML, CSS, JavaScript and images files of the project. How can I see the HTML output in browser?
For example this: https://github.com/necolas/css3-social-signin-buttons/blob/master/index.html
When I open this it doesn't show the rendered HTML of the code of author. It shows the page as a source code.
Is it possible to see it as rendered HTML directly? Otherwise I always need to download the whole ZIP just to see the result.
The most comfortable way to preview HTML files on GitHub is to go to https://htmlpreview.github.io/ or just prepend it to the original URL, i.e.: https://htmlpreview.github.io/?https://github.com/bartaz/impress.js/blob/master/index.html
If you don't want to download an archive you can use GitHub Pages to render this.
Fork the repository to your account.
Clone it locally on your machine
Create a gh-pages branch (if one already exists, remove it and create a new one based off master).
Push the branch back to GitHub.
View the pages at http://username.github.io/repo`
In code:
git clone git#github.com:username/repo.git
cd repo
git branch gh-pages
# Might need to do this first: git branch -D gh-pages
git push -u origin gh-pages # Push the new branch back to github
Go to http://username.github.io/repo
🚩 Message from RawGit's creator and owner on https://rawgit.com:
RawGit has reached the end of its useful life
October 8, 2018
RawGit is now in a sunset phase and will soon shut down. It's been a fun five years, but all things must end.
GitHub repositories that served content through RawGit within the last month will continue to be served until at least October of 2019. URLs for other repositories are no longer being served.
If you're currently using RawGit, please stop using it as soon as you can.
When I tried to use it, I got:
403 Forbidden
RawGit will soon shut down and is no longer serving new repos. >> Please visit https://rawgit.com for more details.
You can use RawGit:
https://rawgit.com/necolas/css3-social-signin-buttons/master/index.html
It works better (at the time of this writing) than http://htmlpreview.github.com/, serving files with proper Content-Type headers.
Additionally, it also provides CDN URL for use in production.
It's really easy to do with github pages, it's just a bit weird the first time you do it. Sorta like the first time you had to juggle 3 kittens while learning to knit. (OK, it's not all that bad)
You need a gh-pages branch:
Basically github.com looks for a gh-pages branch of the repository. It will serve all HTML pages it finds in here as normal HTML directly to the browser.
How do I get this gh-pages branch?
Easy. Just create a branch of your github repo called gh-pages.
Specify --orphan when you create this branch, as you don't actually want to merge this branch back into your github branch, you just want a branch that contains your HTML resources.
$ git checkout --orphan gh-pages
What about all the other gunk in my repo, how does that fit in to it?
Nah, you can just go ahead and delete it. And it's safe to do now, because you've been paying attention and created an orphan branch which can't be merged back into your main branch and remove all your code.
I've created the branch, now what?
You need to push this branch up to github.com, so that their automation can kick in and start hosting these pages for you.
git push -u origin gh-pages
But.. My HTML is still not being served!
It takes a few minutes for github to index these branches and fire up the required infrastructure to serve up the content. Up to 10 minutes according to github.
The steps layed out by github.com
https://help.github.com/articles/creating-project-pages-manually
I read all the comments and thought that GitHub made it too difficult for normal user to create GitHub pages until I visited GitHub theme Page where its clearly mentioned that there is a section of "GitHub Pages" under settings Page of the concerned repo where you can choose the option "use the master branch for GitHub Pages." and voilà!!...checkout that particular repo on https://username.github.io/reponame
Also, if you use Tampermonkey, you can add a script that will add preview with http://htmlpreview.github.com/ button into actions menu beside 'raw', 'blame' and 'history' buttons.
Script like this one:
https://gist.github.com/vanyakosmos/83ba165b288af32cf85e2cac8f02ce6d
I have found another way:
Click on the "Raw" button if you haven't already
Ctrl+A, Ctrl+C
Open "Developer Tools" with F12
In the "Inspector" right-click on the tag and choose "Edit HTML"
Ctrl+A, Ctrl+V
Ctr+Return
Tested on Firefox but it should work in other browsers too
If you have configured GitHub Pages you can get your public url like as:
https://<username>.github.io/<repository>/index.html
where <username> & <repository> will be the placeholder for username & repo name respectively
So, the result will be like this:
http://necolas.github.io/css3-social-signin-buttons/index.html
If it is an organization with GithubPages enabled in all the repositories it will be something like:
https://<org>.github.io/<repository>/
Two approaches (for public repositories) worked well for me: both VERY SIMPLE and ABLE TO RENDER COMPLEX HTML PAGES with links to local CSS files and local JAVASCRIPT/VUE files.
METHOD 1 - With GitHub pages
To set up, go to: https://github.com/YOUR_ACCT_NAME/YOUR_REPO_NAME/settings/pages (see screen shot below)
Example of my original HTML page on the repo: https://github.com/BrainAnnex/life123/blob/main/experiments/life_1D/diffusion/diffusion_1.htm
How it looks rendered: https://brainannex.github.io/life123/experiments/life_1D/diffusion/diffusion_1.htm Notice how all the styling, graphics and interactive controls are all good :)
METHOD 2 - With free service raw.githack.com
Go to https://raw.githack.com/ and enter the full URL of yourpage (including the "/blob" part); e.g. https://github.com/BrainAnnex/life123/blob/main/experiments/life_1D/diffusion/diffusion_1.htm
Then the site generates 2 links that work quite well :)
A good alternative if GitHub pages were to become unavailable!
This isn't a direct answer, but I think it is a pretty sweet alternative.
http://www.s3auth.com/
It allows you to host your pages behind basic auth. Great for things like api docs in your private github repo. just ad a s3 put as part of your api build.
If you are using an enterprise Github, you might not want to have a public facing github pages. One thing that worked for us is to:
For a HTML file in: https://github.private-repo.com/team/project/blob/master/order.html
Following is the URL that opens in a browser and retrieves the latest file as HTML:
https://github.private-repo.com/pages/team/project/order.html