@@ -0,0 +1,34 @@ | |||
--- | |||
extends: base.j2 | |||
title_ending: "| About" | |||
default_block: content | |||
--- | |||
About | |||
===== | |||
This beginner's tutorial was created by [Merlin Rebrović][0] for the | |||
[Hyde project][1]. It is included in Hyde as a layout named _starter_. | |||
If you have a [default Hyde installation][2], all you have to do is | |||
write: | |||
hyde -s folder_name create -l starter | |||
To check for the newest version, to download it separately or to report | |||
a bug, please visit Hyde Starter Kit's [GitHub page][3]. | |||
Attributions | |||
------------ | |||
The [photo][4] used for part of the background. | |||
{# You can use Jinja tags in Markdown content also; they get processed | |||
before the content gets to the Markdown filter. | |||
#} | |||
[0]: {{ author.url }} | |||
[1]: {{ project.url }} | |||
[2]: {{ project.install }} | |||
[3]: {{ layout.url }} | |||
[4]: http://www.flickr.com/photos/batintherain/5613841957/ |
@@ -0,0 +1,21 @@ | |||
{# Use base.j2 template as a base and only provide values for placeholders | |||
in this file. | |||
#} | |||
{% extends "base.j2" %} | |||
{# Markdown main content block. #} | |||
{% block content %} | |||
What is this all about | |||
====================== | |||
Starter Kit introduces you to Hyde's many options and possibilities. | |||
Finding your way for the first time can be a bit confusing, so this | |||
template tries to ease your way in by exposing only core features and | |||
technologies step by step. Those are: | |||
* basic Hyde site structure | |||
* configuration file | |||
* Jinja templates | |||
* Markdown | |||
* basic metadata and plugins | |||
{% endblock %} |
@@ -0,0 +1,144 @@ | |||
* { | |||
margin: 0; | |||
padding: 0; | |||
} | |||
html, body { | |||
color: #fafafa; | |||
background-color: black; | |||
} | |||
body { | |||
margin: 0 auto; | |||
width: 980px; | |||
min-height: 700px; | |||
background: url('../img/background.jpg') top left no-repeat; | |||
font-size: 14px; | |||
position: relative; | |||
font-size: 62.5%; | |||
font-family: Tahoma, sans-serif; | |||
} | |||
a { | |||
color: #f1ee00; | |||
} | |||
a:hover, a:focus { | |||
text-decoration: none; | |||
} | |||
p, ul { | |||
margin-bottom: 1.6em; | |||
} | |||
ul { | |||
margin-left: 2em; | |||
} | |||
header { | |||
position: absolute; | |||
top: 120px; | |||
right: 120px; | |||
font-family: Anton, Tahoma, sans-serif; | |||
text-transform: uppercase; | |||
font-weight: none; | |||
} | |||
header h1 { | |||
font-size: 50px; | |||
font-weight: normal; | |||
text-shadow: -1px 2px 1px black; | |||
} | |||
header h1 span { | |||
color: #f1ee00; | |||
} | |||
header h2 { | |||
font-size: 28px; | |||
font-weight: normal; | |||
letter-spacing: 11px; | |||
text-shadow: -1px 2px 1px black; | |||
} | |||
nav { | |||
position: absolute; | |||
top: 340px; | |||
right: 120px; | |||
width: 200px; | |||
text-align: right; | |||
font-family: Anton, Tahoma, sans-serif; | |||
} | |||
nav a, | |||
nav a:visited { | |||
text-decoration: none; | |||
color: #fafafa; | |||
text-transform: uppercase; | |||
font-size: 2.8em; | |||
} | |||
nav a.selected { | |||
color: #888; | |||
} | |||
nav a:hover { | |||
color: #f1ee00; | |||
} | |||
nav ul li { | |||
list-style-type: none; | |||
} | |||
aside { | |||
position: absolute; | |||
top: 550px; | |||
right: 120px; | |||
width: 140px; | |||
text-align: right; | |||
font-size: 1em; | |||
} | |||
nav, aside { | |||
/* to line up with the header */ | |||
padding-right: 5px; | |||
} | |||
#content { | |||
font-size: 1.4em; | |||
line-height: 1.6em; | |||
position: absolute; | |||
top: 350px; | |||
left: 180px; | |||
width: 410px; | |||
padding-bottom: 100px; | |||
} | |||
#content h1 { | |||
font-weight: normal; | |||
font-size: 2em; | |||
font-family: Anton, Tahoma, sans-serif; | |||
text-transform: uppercase; | |||
margin-bottom: 0.8em; | |||
} | |||
#content h2 { | |||
font-weight: bold; | |||
font-size: 1.2em; | |||
font-family: Tahoma, sans-serif; | |||
margin-bottom: 1.33em; | |||
} | |||
#content code { | |||
display: block; | |||
font-family: 'DejaVu Sans Mono', 'Liberation Mono', 'Courier New'; | |||
font-size: 1.2em; | |||
background-color: #222; | |||
padding: 5px 10px; | |||
margin-bottom: 1.33em; | |||
border-top: 1px solid #444; | |||
border-right: 1px solid #333; | |||
border-bottom: 1px solid #222; | |||
border-left: 1px solid #111; | |||
} |
@@ -0,0 +1,73 @@ | |||
--- | |||
extends: base.j2 | |||
title_ending: "| What next" | |||
--- | |||
{# In-file metadata. Supplements data from the site's configuration file | |||
and node (folder) level data in "meta.yaml" files. | |||
Use the AutoExtendPlugin to extend templates from metadata. In this | |||
case the metadata and "extends" statement has to be on the top of the | |||
file. | |||
#} | |||
{% block content %} | |||
There and back again | |||
==================== | |||
This template was created to look at its code. So you should spend about | |||
5% of your time looking at the web from the outside and the other 95% | |||
tinkering with things under the hood. | |||
The template is not perfect nor does it contain the best practices. It | |||
is not even consistent. It is designed to help you with the learning | |||
process. If you follow the steps below, you'll get a pretty good picture of | |||
how things work. Every step adds some new features and builds upon the | |||
previous one. | |||
1. Site structure and configuration file | |||
---------------------------------------- | |||
The site is made of two folders and a [Hyde configuration][hyde_config] | |||
file. The folders are _content_ and _layout_. | |||
_content_ contains all your page content, blog articles, pictures and | |||
resources like CSS and JavaScript. Everything that is unique is here. | |||
_layout_ contains templates and macros. Everything that you'll want to | |||
reuse is here. | |||
2. Jinja2 template | |||
------------------ | |||
_base.j2_ is a very short and simple Jinja2 template. This way you can | |||
concentrate on some of the basic features. Notice meta and context | |||
variables invocation inside curly braces, dynamic media path generation | |||
and running all content through the Markdown filter. | |||
_macros.j2_ contains a macro for generating the main menu. | |||
For more information or to try something new, visit the extensive [Jinja2 | |||
documentation][jinja2_docs]. | |||
3. Content | |||
---------- | |||
Look at the three files in this order: _index.html_, _what-next.html_ | |||
and _about.html_. | |||
_Index_ extends the base layout in the classic Jinja way and fills the | |||
content block with some simple Markdown data. | |||
_What next_ goes a step furher. It introduces the in-file metadata that | |||
plugins will use to extend and fill the layout. It also uses some new | |||
Markdown features. | |||
_About_ has a _default_block_ metadata and mixes Markdown content with | |||
Jinja templates. | |||
[hyde_config]: http://hyde.github.com/config.html "Hyde configuration" | |||
[jinja2_docs]: http://jinja.pocoo.org/docs/templates/ "Jinja2 documentation" | |||
{% endblock %} |
@@ -0,0 +1,42 @@ | |||
<!doctype html> | |||
<html lang="en"> | |||
<head> | |||
<link href="http://fonts.googleapis.com/css?family=Anton" rel="stylesheet" type="text/css"> | |||
<title>Hyde Starter Kit {{ resource.meta.title_ending }}</title> | |||
<meta charset="utf-8" /> | |||
<link rel="stylesheet" href="{{ media_url('css/style.css') }}"> | |||
<!--[if lt IE 9]> | |||
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"> | |||
</script> | |||
<![endif]--> | |||
</head> | |||
<body> | |||
<header> | |||
<hgroup> | |||
<h1><span>Hyde</span> Starter Kit</h1> | |||
<h2>Know your tool</h2> | |||
</hgroup> | |||
</header> | |||
<nav> | |||
{# Move main menu rendering away from the base layout. This | |||
way it can be used to generate the list many times, in | |||
a footer, etc. | |||
#} | |||
{% from "macros.j2" import render_main_menu with context %} | |||
{{ render_main_menu() }} | |||
</nav> | |||
<article id="content"> | |||
{# Main content block. Notice it has to pass through the | |||
Markdown filter to generate HTML. If a block in content | |||
pages contains only markup, you can omit the filter. | |||
#} | |||
{% filter markdown -%} | |||
{% block content %}{% endblock %} | |||
{%- endfilter %} | |||
</article> | |||
<aside> | |||
<p>Created by <a href="{{ author.url}}">{{ author.name}}</a> | |||
for <a href="{{ project.url }}">{{ project.name }}</a></p> | |||
</aside> | |||
</body> | |||
</html> |
@@ -0,0 +1,7 @@ | |||
{% macro render_main_menu() -%} | |||
<ul> | |||
{% for menu_item in menu -%} | |||
<li><a {% if menu_item.url == resource.url %}class="selected"{% endif %} href="{{ menu_item.url }}">{{ menu_item.title }}</a></li> | |||
{%- endfor %} | |||
</ul> | |||
{%- endmacro %} |
@@ -0,0 +1,27 @@ | |||
mode: learning | |||
media_root: media | |||
media_url: media # will use relative path, prepend "/" for absolute path | |||
template: hyde.ext.templates.jinja.Jinja2Template | |||
plugins: | |||
- hyde.ext.plugins.meta.MetaPlugin | |||
- hyde.ext.plugins.auto_extend.AutoExtendPlugin | |||
- hyde.ext.plugins.syntext.SyntextPlugin | |||
context: | |||
data: | |||
author: | |||
name: Merlin Rebrović | |||
url: "http://merlin.rebrovic.net" | |||
layout: | |||
name: Hyde Starter Kit | |||
url: "https://github.com/merlinrebrovic/hyde-starter-kit" | |||
project: | |||
name: Hyde | |||
url: "http://hyde.github.com" | |||
install: "http://hyde.github.com/install.html" | |||
menu: | |||
- title: Home | |||
url: index.html | |||
- title: What next | |||
url: what-next.html | |||
- title: About | |||
url: about.html |