GithubHelp home page GithubHelp logo

fusepilot / wintersmith-tag Goto Github PK

View Code? Open in Web Editor NEW

This project forked from airtonix/wintersmith-tag

0.0 1.0 0.0 164 KB

A wintersmith plugin to create tags

License: MIT License

Shell 4.46% CoffeeScript 95.54%

wintersmith-tag's Introduction

wintersmith-tag

This is a plugin for 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 and its source.

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

{
  "plugins": [
    "wintersmith-tag"
  ]
}

Step2: set plugin options

You can specify options in config.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

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 page

tagDefaults = 
    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

a(href=env.helpers.getTagHome(tagName).url)= tagName

env.helpers.getTagsFromArticle(article)

Returns an array of tags of current article.

- 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
...

wintersmith-tag's People

Contributors

weiribao avatar

Watchers

Michael Delaney avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.