| @@ -155,8 +155,8 @@ markdown: | |||||
| will use the [def_list][], [tables][] and [headerid][] extensions in python markdown. | will use the [def_list][], [tables][] and [headerid][] extensions in python markdown. | ||||
| [commandline]: [[commandline.html]] | |||||
| [plugins]: [[plugins.html]] | |||||
| [commandline]: [[commandline]] | |||||
| [plugins]: [[plugins]] | |||||
| [pymarkdown]: http://www.freewisdom.org/projects/python-markdown/Available_Extensions | [pymarkdown]: http://www.freewisdom.org/projects/python-markdown/Available_Extensions | ||||
| [hydedocpages]: https://github.com/hydepy/hyde/blob/master/hyde/layouts/doc/pages.yaml | [hydedocpages]: https://github.com/hydepy/hyde/blob/master/hyde/layouts/doc/pages.yaml | ||||
| [def_list]: http://www.freewisdom.org/projects/python-markdown/Definition_Lists | [def_list]: http://www.freewisdom.org/projects/python-markdown/Definition_Lists | ||||
| @@ -96,15 +96,15 @@ Hyde is [socially coded][hydepy]. Feel free to [fork][forking]. | |||||
| [Jekyll]: http://jekyllrb.com | [Jekyll]: http://jekyllrb.com | ||||
| [evil twin]: http://ringce.com/blog/2009/introducing_hyde | [evil twin]: http://ringce.com/blog/2009/introducing_hyde | ||||
| [Jinja2]: http://jinja.pocoo.org/ | [Jinja2]: http://jinja.pocoo.org/ | ||||
| [object model]: [[template.html/#variables]] | |||||
| [object model]: [[template/#variables]] | |||||
| [hydepy]: https://github.com/hydepy/hyde | [hydepy]: https://github.com/hydepy/hyde | ||||
| [install]: [[install.html]] | |||||
| [metadata]: [[plugins/metadata.html]] | |||||
| [plugins]: [[plugins.html]] | |||||
| [install]: [[install]] | |||||
| [metadata]: [[plugins/metadata]] | |||||
| [plugins]: [[plugins]] | |||||
| [python]: http://python.org | [python]: http://python.org | ||||
| [server]: [[server.html]] | |||||
| [sorter]: [[plugins/sorter.html]] | |||||
| [static cons]: [[static.html/#cons]] | |||||
| [static pros]: [static.html/#pros]] | |||||
| [forking]: [[contribute.html]] | |||||
| [commandline]: [[commandline.html]] | |||||
| [server]: [[server]] | |||||
| [sorter]: [[plugins/sorter]] | |||||
| [static cons]: [[static/#cons]] | |||||
| [static pros]: [static/#pros]] | |||||
| [forking]: [[contribute]] | |||||
| [commandline]: [[commandline]] | |||||
| @@ -0,0 +1,91 @@ | |||||
| === | |||||
| title: Auto Extend Plugin | |||||
| subtitle: type less, think more | |||||
| created: 2011-01-28 17:19:03 | |||||
| === | |||||
| {% extends "doc.j2" %} | |||||
| ===doc=== | |||||
| §§ blurb | |||||
| Hyde is built with the goal of separating content from presentation as | |||||
| much as possible without losing the power of template inheritance. It is | |||||
| a hard balancing act and auto extend is one big step on the wire. | |||||
| §§ /blurb | |||||
| ## Extend | |||||
| The auto extend plugin relies on the metadata plugin for its configuration. | |||||
| You can specify an `extends` property in your metadata to let the plugin | |||||
| know the base template for that page. The plugin will automatically emit an | |||||
| `{%raw%}{% extends %}{%endraw%}` statement in the output. | |||||
| The following two configurations are equivalent. | |||||
| ~~~~~jinja~~~~ | |||||
| {% raw %} | |||||
| {% extends "base.html" %} | |||||
| <!-- hello.html --> | |||||
| {% block content %} | |||||
| Hello World! | |||||
| {% endblock %} | |||||
| {% endraw %} | |||||
| ~~~~~~~~~~~~~~~ | |||||
| ~~~~~jinja~~~~ | |||||
| {% raw %} | |||||
| === | |||||
| extends: base.html | |||||
| === | |||||
| <!-- hello.html --> | |||||
| {% block content %} | |||||
| Hello World! | |||||
| {% endblock %} | |||||
| {% endraw %} | |||||
| ~~~~~~~~~~~~~~~ | |||||
| ## Default blocks | |||||
| It gets even better. The auto extend plugin also allows you to specify | |||||
| the default block so that you can take out another wrapping curly brace. | |||||
| The following snippet is equivalent to the above ones: | |||||
| ~~~~~jinja~~~~ | |||||
| === | |||||
| extends: base.html | |||||
| default_block: content | |||||
| === | |||||
| <!-- hello.html --> | |||||
| Hello World! | |||||
| ~~~~~~~~~~~~~~~ | |||||
| As you can see, this makes the page _layout free_. | |||||
| ## Inheritance | |||||
| In combination with metadata inheritance, this plugin can completely | |||||
| eliminate redundancy on many sites. | |||||
| Given the following configuration, the output would be same as what | |||||
| is generated by any of the above snippets. | |||||
| ~~~yaml~~~ | |||||
| site_name: Hello World #site.yaml | |||||
| meta: | |||||
| extends: base.html | |||||
| default_block: content | |||||
| ~~~~~~~~~ | |||||
| ~~~jinja~~~ | |||||
| <!-- hello.html --> | |||||
| Hello World | |||||
| ~~~~~~~~~~~ | |||||
| Just Content! | |||||
| ===/doc=== | |||||
| @@ -0,0 +1,41 @@ | |||||
| === | |||||
| title: Plugins | |||||
| subtitle: extra shots for your awesome espresso | |||||
| created: 2011-01-28 16:18:06 | |||||
| === | |||||
| §§ blurb | |||||
| Hyde is built with a nuclear engine that is stripped down but powerful. | |||||
| Even core features like `metadata` are added as plugins to keep the engine | |||||
| bloat free. | |||||
| Hyde's plugin architecture is event driven; plugins get notified during the | |||||
| course of the generation to allow them to alter/guide the generation process. | |||||
| If you are interested in creating plugins for hyde, you can read the | |||||
| [developer documentation][devdocs]. | |||||
| §§ /blurb | |||||
| ## Configuration | |||||
| Hyde's plugins get loaded if they are listed in the plugins section of | |||||
| [configuration][]. Plugins also accept additional parameters in their | |||||
| respective sections. For example, `MyAwesomePlugin` will get parameters | |||||
| from `myawesome` section in the configuration file. | |||||
| # In the box | |||||
| Hyde is shipped with the following plugins: | |||||
| * Autoextend | |||||
| * Metadata | |||||
| * Sorter | |||||
| * Less CSS | |||||
| * Text Replacement Plugins | |||||
| - Blockdown | |||||
| - Mark and Refer | |||||
| - Textlinks | |||||
| - Syntext | |||||
| * Folder flattener | |||||
| @@ -23,7 +23,7 @@ | |||||
| compatibility mode is within the first 1K bytes | compatibility mode is within the first 1K bytes | ||||
| code.google.com/p/chromium/issues/detail?id=23003 --> | code.google.com/p/chromium/issues/detail?id=23003 --> | ||||
| <title>{% block title %}{{ resource.meta.title }}{% endblock %}</title> | |||||
| <title>{% block title %}{{ resource.meta.title }} / Hyde Docs{% endblock %}</title> | |||||
| <meta name="description" content="{{ resource.meta.description }}"> | <meta name="description" content="{{ resource.meta.description }}"> | ||||
| <meta name="author" content="{{ resource.meta.author }}"> | <meta name="author" content="{{ resource.meta.author }}"> | ||||