Replaces tag index plugin with native jekyll features (#307)
* remove tag _gen plugin and its folder * remove deprecated tag index layout * add tag index page * link tag index page in nav bar, enable tag links by default * add button spacer in main css * fix tag links in post view * fix tag links on index and pagination * tag link instuctions removed. it's enabled as default
This commit is contained in:
parent
22e77cff59
commit
3664e56dbd
12
README.md
12
README.md
@ -30,12 +30,12 @@
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- You need to have a GitHub account. If you don't have one, [sign up here](https://github.com/join) - it takes one minute. This is where your website will live - if you sign up with username `johnsmith` then your website will be `http://johnsmith.github.io`.
|
- You need to have a GitHub account. If you don't have one, [sign up here](https://github.com/join) - it takes one minute. This is where your website will live - if you sign up with username `johnsmith` then your website will be `http://johnsmith.github.io`.
|
||||||
- It would be helpful to understand what Markdown is and how to write it. Markdown is just a way to take a piece of text and format it to look a little nicer. For example, this whole instruction set that you're reading is written in markdown - it's just text with some words being bold/larger/italicized/etc. I recommend taking 5 minutes to learn markdown [with this amazingly easy yet useful tutorial](http://markdowntutorial.com/).
|
- It would be helpful to understand what Markdown is and how to write it. Markdown is just a way to take a piece of text and format it to look a little nicer. For example, this whole instruction set that you're reading is written in markdown - it's just text with some words being bold/larger/italicized/etc. I recommend taking 5 minutes to learn markdown [with this amazingly easy yet useful tutorial](http://markdowntutorial.com/).
|
||||||
|
|
||||||
## Build your website in 3 steps
|
## Build your website in 3 steps
|
||||||
|
|
||||||
Getting started is *literally* as easy as 1-2-3 :smile:
|
Getting started is *literally* as easy as 1-2-3 :smile:
|
||||||
Scroll down to see the steps involved, but here is a 40-second video just as a reference as you work through the steps.
|
Scroll down to see the steps involved, but here is a 40-second video just as a reference as you work through the steps.
|
||||||
|
|
||||||
![Installation steps](img/install-steps.gif)
|
![Installation steps](img/install-steps.gif)
|
||||||
@ -142,11 +142,11 @@ image | If you want to add a personalized image to your blog post that wil
|
|||||||
share-img | If you want to specify an image to use when sharing the page on Facebook or Twitter, then provide the image's full URL here.
|
share-img | If you want to specify an image to use when sharing the page on Facebook or Twitter, then provide the image's full URL here.
|
||||||
social-share | If you don't want to show buttons to share a blog post on social media, use `social-share: false` (this feature is turned on by default).
|
social-share | If you don't want to show buttons to share a blog post on social media, use `social-share: false` (this feature is turned on by default).
|
||||||
use-site-title | If you want to use the site title rather than page title as HTML document title (ie. browser tab title), use `use-site-title: true`. When set, the document title will take the format `Site Title - Site Description` (eg. `My website - A virtual proof that name is awesome!`). By default, it will use `Page Title` if it exists, or `Site Title` otherwise.
|
use-site-title | If you want to use the site title rather than page title as HTML document title (ie. browser tab title), use `use-site-title: true`. When set, the document title will take the format `Site Title - Site Description` (eg. `My website - A virtual proof that name is awesome!`). By default, it will use `Page Title` if it exists, or `Site Title` otherwise.
|
||||||
layout | What type of page this is (default is `blog` for blog posts and `page` for other pages. You can use `minimal` if you don't want a header and footer)
|
layout | What type of page this is (default is `blog` for blog posts and `page` for other pages. You can use `minimal` if you don't want a header and footer)
|
||||||
js | List of local JavaScript files to include in the page (eg. `/js/mypage.js`)
|
js | List of local JavaScript files to include in the page (eg. `/js/mypage.js`)
|
||||||
ext-js | List of external JavaScript files to include in the page (eg. `//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js`). External JavaScript files that support [Subresource Integrity (SRI)](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be specified using the `href` and `sri` parameters eg.<br/>`href: "//code.jquery.com/jquery-3.1.1.min.js"`<br/>`sri: "sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="`
|
ext-js | List of external JavaScript files to include in the page (eg. `//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js`). External JavaScript files that support [Subresource Integrity (SRI)](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be specified using the `href` and `sri` parameters eg.<br/>`href: "//code.jquery.com/jquery-3.1.1.min.js"`<br/>`sri: "sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="`
|
||||||
css | List of local CSS files to include in the page
|
css | List of local CSS files to include in the page
|
||||||
ext-css | List of external CSS files to include in the page. External CSS files using SRI (see `ext-js` parameter) are also supported.
|
ext-css | List of external CSS files to include in the page. External CSS files using SRI (see `ext-js` parameter) are also supported.
|
||||||
googlefonts | List of Google fonts to include in the page (eg. `["Monoton", "Lobster"]`)
|
googlefonts | List of Google fonts to include in the page (eg. `["Monoton", "Lobster"]`)
|
||||||
gh-repo | If you want to show GitHub buttons at the top of a post, this sets the GitHub repo name (eg. `daattali/beautiful-jekyll`). You must also use the `gh-badge` parameter to specify what buttons to show.
|
gh-repo | If you want to show GitHub buttons at the top of a post, this sets the GitHub repo name (eg. `daattali/beautiful-jekyll`). You must also use the `gh-badge` parameter to specify what buttons to show.
|
||||||
gh-badge | Select which GitHub buttons to display, available options are: [star, watch, fork, follow]. You must also use the `gh-repo` parameter to specify the GitHub repo.
|
gh-badge | Select which GitHub buttons to display, available options are: [star, watch, fork, follow]. You must also use the `gh-repo` parameter to specify the GitHub repo.
|
||||||
@ -207,7 +207,7 @@ Want your website featured here? [Contact me](http://deanattali.com/aboutme#cont
|
|||||||
|
|
||||||
Beautiful Jekyll is meant to be so simple to use that you can do it all within the browser. However, if you'd like to develop locally on your own machine, that's possible too if you're comfortable with command line. Follow these simple steps set that up with Docker:
|
Beautiful Jekyll is meant to be so simple to use that you can do it all within the browser. However, if you'd like to develop locally on your own machine, that's possible too if you're comfortable with command line. Follow these simple steps set that up with Docker:
|
||||||
|
|
||||||
1. Make sure you have [Docker](https://www.docker.com/) installed.
|
1. Make sure you have [Docker](https://www.docker.com/) installed.
|
||||||
|
|
||||||
2. Clone your repository locally.
|
2. Clone your repository locally.
|
||||||
|
|
||||||
@ -240,8 +240,6 @@ Whenever you make any changes to `_config.yml`, you must stop and re-start the s
|
|||||||
|
|
||||||
Disclaimer: I personally am NOT using local development so I don't know much about running Jekyll locally. If you follow this route, please don't ask me questions because unfortunately I honestly won't be able to help!
|
Disclaimer: I personally am NOT using local development so I don't know much about running Jekyll locally. If you follow this route, please don't ask me questions because unfortunately I honestly won't be able to help!
|
||||||
|
|
||||||
Aditionally, if you choose to deploy Jekyll using a local ruby installation, you can tell Jekyll to automatically categorize your blog posts by tags. You just need to set `link-tags: true` in `_config.yml`. Jekyll will then generate a new page for each unique tag which lists all of the posts that belong to that tag.
|
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
Beautiful Jekyll is actively used by thousands of people with wildly varying degrees of competency, so it's impossible to answer all the questions that may arise. Below are answers to a few very common questions. Most questions that I get asked are not directly related to this theme, and instead are more general questions about Jekyll or web development. Many such questions can be answered by reading the [Jekyll documentation](http://jekyllrb.com/) or simply by Googling.
|
Beautiful Jekyll is actively used by thousands of people with wildly varying degrees of competency, so it's impossible to answer all the questions that may arise. Below are answers to a few very common questions. Most questions that I get asked are not directly related to this theme, and instead are more general questions about Jekyll or web development. Many such questions can be answered by reading the [Jekyll documentation](http://jekyllrb.com/) or simply by Googling.
|
||||||
|
@ -29,6 +29,7 @@ navbar-links:
|
|||||||
- Learn markdown: "http://www.markdowntutorial.com/"
|
- Learn markdown: "http://www.markdowntutorial.com/"
|
||||||
- GitHub Pages: "https://pages.github.com/"
|
- GitHub Pages: "https://pages.github.com/"
|
||||||
Author's home: "http://deanattali.com"
|
Author's home: "http://deanattali.com"
|
||||||
|
Tags: "tags"
|
||||||
|
|
||||||
# Image to show in the navigation bar - image must be a square (width = height)
|
# Image to show in the navigation bar - image must be a square (width = height)
|
||||||
# Remove this parameter if you don't want an image in the navbar
|
# Remove this parameter if you don't want an image in the navbar
|
||||||
@ -152,7 +153,7 @@ defaults:
|
|||||||
show-avatar: true
|
show-avatar: true
|
||||||
|
|
||||||
# Use tags pages (not recommended if you are deploying via GitHub pages, only set to true if deploying locally with ruby)
|
# Use tags pages (not recommended if you are deploying via GitHub pages, only set to true if deploying locally with ruby)
|
||||||
link-tags: false
|
link-tags: true
|
||||||
|
|
||||||
# Exclude these files from production site
|
# Exclude these files from production site
|
||||||
exclude:
|
exclude:
|
||||||
|
@ -12,7 +12,7 @@ layout: base
|
|||||||
{% assign gh_split = page.gh-repo | split:'/' %}
|
{% assign gh_split = page.gh-repo | split:'/' %}
|
||||||
{% assign gh_user = gh_split[0] %}
|
{% assign gh_user = gh_split[0] %}
|
||||||
{% assign gh_repo = gh_split[1] %}
|
{% assign gh_repo = gh_split[1] %}
|
||||||
|
|
||||||
<div id="header-gh-btns">
|
<div id="header-gh-btns">
|
||||||
{% if page.gh-badge.size > 0 %}
|
{% if page.gh-badge.size > 0 %}
|
||||||
{% for badge in page.gh-badge %}
|
{% for badge in page.gh-badge %}
|
||||||
@ -22,7 +22,7 @@ layout: base
|
|||||||
{% when 'watch'%}
|
{% when 'watch'%}
|
||||||
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&repo={{ gh_repo }}&type=watch&v=2&count=true" frameborder="0" scrolling="0" width="120px" height="20px"></iframe>
|
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&repo={{ gh_repo }}&type=watch&v=2&count=true" frameborder="0" scrolling="0" width="120px" height="20px"></iframe>
|
||||||
{% when 'fork'%}
|
{% when 'fork'%}
|
||||||
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&repo={{ gh_repo }}&type=fork&count=true" frameborder="0" scrolling="0" width="120px" height="20px"></iframe>
|
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&repo={{ gh_repo }}&type=fork&count=true" frameborder="0" scrolling="0" width="120px" height="20px"></iframe>
|
||||||
{% when 'follow'%}
|
{% when 'follow'%}
|
||||||
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&type=follow&count=true" frameborder="0" scrolling="0" width="220px" height="20px"></iframe>
|
<iframe src="https://ghbtns.com/github-btn.html?user={{ gh_user }}&type=follow&count=true" frameborder="0" scrolling="0" width="220px" height="20px"></iframe>
|
||||||
{% endcase %}
|
{% endcase %}
|
||||||
@ -30,7 +30,7 @@ layout: base
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<article role="main" class="blog-post">
|
<article role="main" class="blog-post">
|
||||||
{{ content }}
|
{{ content }}
|
||||||
</article>
|
</article>
|
||||||
@ -40,7 +40,7 @@ layout: base
|
|||||||
Tags:
|
Tags:
|
||||||
{% if site.link-tags %}
|
{% if site.link-tags %}
|
||||||
{% for tag in page.tags %}
|
{% for tag in page.tags %}
|
||||||
<a href="/tag/{{ tag }}">{{ tag }}</a>
|
<a href="{{ site.baseurl }}/tags#{{- tag -}}">{{- tag -}}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ page.tags | join: ", " }}
|
{{ page.tags | join: ", " }}
|
||||||
@ -72,4 +72,4 @@ layout: base
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<h2 class="post_title">{{page.title}}:</h2>
|
|
||||||
|
|
||||||
<div class="posts-list">
|
|
||||||
{% for post in site.posts %}
|
|
||||||
{% for tag in post.tags %}
|
|
||||||
{% if tag == page.tag %}
|
|
||||||
<article class="post-preview">
|
|
||||||
<a href="{{ post.url | prepend: site.baseurl }}">
|
|
||||||
<h3 class="post-title">{{ post.title }}</h3>
|
|
||||||
|
|
||||||
{% if post.subtitle %}
|
|
||||||
<h4 class="post-subtitle">
|
|
||||||
{{ post.subtitle }}
|
|
||||||
</h4>
|
|
||||||
{% endif %}
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<p class="post-meta">
|
|
||||||
Posted on {{ post.date | date: "%B %-d, %Y" }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="post-entry">
|
|
||||||
{{ post.content | strip_html | xml_escape | truncatewords: 50 }}
|
|
||||||
<a href="{{ post.url | prepend: site.baseurl }}" class="post-read-more">[Read More]</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="blog-tags">
|
|
||||||
Tags:
|
|
||||||
{% for tag in post.tags %}
|
|
||||||
<a href="/tag/{{ tag }}">{{ tag }}</a>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
@ -1,33 +0,0 @@
|
|||||||
module Jekyll
|
|
||||||
class TagIndex < Page
|
|
||||||
def initialize(site, base, dir, tag)
|
|
||||||
@site = site
|
|
||||||
@base = base
|
|
||||||
@dir = dir
|
|
||||||
@name = 'index.html'
|
|
||||||
self.process(@name)
|
|
||||||
self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
|
|
||||||
self.data['tag'] = tag
|
|
||||||
tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “'
|
|
||||||
tag_title_suffix = site.config['tag_title_suffix'] || '”'
|
|
||||||
self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
class TagGenerator < Generator
|
|
||||||
safe true
|
|
||||||
def generate(site)
|
|
||||||
if site.layouts.key? 'tag_index'
|
|
||||||
dir = site.config['tag_dir'] || 'tag'
|
|
||||||
site.tags.keys.each do |tag|
|
|
||||||
write_tag_index(site, File.join(dir, tag), tag)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
def write_tag_index(site, dir, tag)
|
|
||||||
index = TagIndex.new(site, site.source, dir, tag)
|
|
||||||
index.render(site.layouts, site.site_payload)
|
|
||||||
index.write(site.dest)
|
|
||||||
site.pages << index
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -743,3 +743,9 @@ td.gutter {
|
|||||||
.navbar-default button.navbar-toggle[aria-expanded="true"] {
|
.navbar-default button.navbar-toggle[aria-expanded="true"] {
|
||||||
background-color: rgba(0, 0, 0, 0.2);
|
background-color: rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fix btn spacing in tag index */
|
||||||
|
|
||||||
|
.tag-btn {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
@ -44,7 +44,7 @@ use-site-title: true
|
|||||||
Tags:
|
Tags:
|
||||||
{% if site.link-tags %}
|
{% if site.link-tags %}
|
||||||
{% for tag in post.tags %}
|
{% for tag in post.tags %}
|
||||||
<a href="{{ site.baseurl }}/tag/{{ tag }}">{{ tag }}</a>
|
<a href="{{ site.baseurl }}/tags#{{- tag -}}">{{- tag -}}</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ post.tags | join: ", " }}
|
{{ post.tags | join: ", " }}
|
||||||
|
31
tags.html
Normal file
31
tags.html
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: 'Tag Index'
|
||||||
|
---
|
||||||
|
|
||||||
|
{%- capture site_tags -%}
|
||||||
|
{%- for tag in site.tags -%}
|
||||||
|
{{- tag | first -}}{%- unless forloop.last -%},{%- endunless -%}
|
||||||
|
{%- endfor -%}
|
||||||
|
{%- endcapture -%}
|
||||||
|
{%- assign tags_list = site_tags | split:',' | sort -%}
|
||||||
|
|
||||||
|
{%- for tag in tags_list -%}
|
||||||
|
<a href="#{{- tag -}}" class="btn btn-primary tag-btn"><i class="fa fa-tag" aria-hidden="true"></i> {{- tag -}}</a>
|
||||||
|
{%- endfor -%}
|
||||||
|
|
||||||
|
{%- for tag in tags_list -%}
|
||||||
|
<h3 id="{{- tag -}}"><i class="fa fa-tag" aria-hidden="true"></i> {{- tag -}}</h3>
|
||||||
|
<ul class="post-list">
|
||||||
|
{%- for post in site.tags[tag] -%}
|
||||||
|
<li>
|
||||||
|
<i class="fa fa-calendar-check-o" aria-hidden="true"></i>
|
||||||
|
<span class="entry-date">
|
||||||
|
<time datetime="{{- post.date | date_to_xmlschema -}}">{{- post.date | date: "%B %d, %Y" -}}</time>
|
||||||
|
</span>
|
||||||
|
<i class="fa fa-newspaper-o" aria-hidden="true"></i>
|
||||||
|
<a href="{{- site.url -}}{{- post.url -}}">{{- post.title -}}</a>
|
||||||
|
</li>
|
||||||
|
{%- endfor -%}
|
||||||
|
</ul>
|
||||||
|
{%- endfor -%}
|
Loading…
Reference in New Issue
Block a user