Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/airtonix/wintersmith-tag
A wintersmith plugin to create tags
https://github.com/airtonix/wintersmith-tag
Last synced: 10 days ago
JSON representation
A wintersmith plugin to create tags
- Host: GitHub
- URL: https://github.com/airtonix/wintersmith-tag
- Owner: airtonix
- License: mit
- Created: 2014-06-16T06:37:23.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-06-16T06:39:53.000Z (over 10 years ago)
- Last Synced: 2024-05-21T03:17:33.311Z (8 months ago)
- Language: CoffeeScript
- Size: 88.9 KB
- Stars: 0
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
wintersmith-tag
==================This is a plugin for [Wintersmith](https://github.com/jnordberg/wintersmith). It allows you to add tags to articles and list articles by tags.
For a complete example, please take a look at [thecoolwei.com](http://thecoolwei.com) and its [source](https://github.com/weiribao/weiribao.github.io).
## How to use
### Step1: install
Install globally or locally using npm
```
npm install [-g] wintersmith-tag
```and add `wintersmith-tag` to your project's config.json
```json
{
"plugins": [
"wintersmith-tag"
]
}
```### Step2: set plugin options
You can specify options in config.json```json
{
"tag": {
"template": "tag-index.jade",
"perPage": 4
}
}
```This plugin is based on the built-in paginator plugin, so it uses the paginator's options by default. The only exception is it has its own default for `filename`. This is can be best understood by looking at the source code
```coffeescript
paginatorDefaults =
template: 'index.jade' # template that renders pages
articles: 'articles' # directory containing contents to paginate
first: 'index.html' # filename/url for first page
filename: 'page/%d/index.html' # filename for rest of pages
perPage: 2 # number of articles per pagetagDefaults =
filename: 'tag/%s/%d/index.html' # => tag/:tagName/:pageNum/index.html
options = _.extend {}, paginatorDefaults, env.config.paginator, tagDefaults, env.config.tag
```### Step3: add tags to articles
Just add `tags` to the metadata section of the article. Seperate multple tags by comma. Tag name can contain space.```
---
title: Hello world
date: 2012-10-14 8:31
template: article.jade
tags: Algorithm, a happy story
---
```### Step4: modify your template
Several new context variables and helper funtions are available in the template now.#### tagName
The `tagName` variable contains the tag name that articles are filtered by.#### env.helpers.getAllTags()
This function returns all tags in the project. It can be used to create a tag cloud on your frontpage, for example.#### env.helpers.getArticlesByTag(tagName)
Returns all articles that has tag `tagName`#### env.helpers.getTagHome(tagName)
Returns a `page` object that reperents the first page of the article list filtered by `tagName`. You can create a link to this page in template like```jade
a(href=env.helpers.getTagHome(tagName).url)= tagName
```
#### env.helpers.getTagsFromArticle(article)
Returns an array of tags of current article.```jade
- var tags = env.helpers.getTagsFromArticle(page)
each tag in tags
a.big-tag(href=env.helpers.getTagHome(tag).url)= tag
```
### Step5: build & done!
```
wintersmith build -v
```
Lists of articles filtered by tags have been created successfully!
```
/tag/algorithm/1/index.html
/tag/algorithm/2/index.html
...
```