1 of 147

Think Static:

What to Use When a CMS is Too Much

Keegan Berry

Marketing & Communications - University of Central Florida

#UAD12

HighEdWeb 2016

2 of 147

Think Static:

What to Use When a CMS is Too Much

Keegan Berry

Marketing & Communications - University of Central Florida

#UAD12

HighEdWeb 2016

3 of 147

Hello

Keegan Berry.

Web Developer at the University of Central Florida in Orlando.

Wordpress, PHP, HTML/CSS/JS.

4 of 147

Hello

Keegan Berry.

Web Developer at the University of Central Florida in Orlando.

Wordpress, PHP, HTML/CSS/JS.

5 of 147

We’re Talking About...

  • Dynamic vs Static Sites
  • Static Site Generators
  • Jekyll
    • Content in Jekyll
    • Templating in Jekyll
  • Hosting
  • Online Editing

6 of 147

TL;DR

Dynamic CMS systems like Wordpress can be too much�for some projects.

Static site generators like Jekyll can be a�simple solution.

7 of 147

Dynamic & Static Sites

Some background on why static sites are good.

8 of 147

Dynamic Sites

Wordpress is an example of a dynamic site.

Generate content on the fly, per request.

Database queries, templating, plugins, and external data are all pulled together.

9 of 147

Dynamic Sites

Wordpress is an example of a dynamic site.

Generate content on the fly, per request.

Database queries, templating, plugins, and external data are all pulled together.

10 of 147

Static Sites

Sites are a collection of HTML pages on the server.

The server retrieves the appropriate HTML page per request.

11 of 147

Dynamic vs Static

Dynamic sites create the finished product on the fly.

12 of 147

Dynamic vs Static

Dynamic sites create the finished product on the fly.

Static sites ARE the finished product.

13 of 147

Dynamic vs Static

Dynamic

Static

Accessibility

Security

Development Time

Database Querying

Hosting Cost

Development Cost

14 of 147

Static Site Generators

15 of 147

Static Site Generators

Build website from set of source files and assets.

Build work is done before site is uploaded.

Content is tracked in repo.

Templating & separation of content and presentation.

16 of 147

Dynamic CMS vs Static Site Generators

Work to build page is done per request.

Database must be accessed for content.

Templates separate content and presentation.

Up to CMS to track content.

Work to build page is done before site is uploaded to server.

HTML page is retrieved per request.

Templates separate content and presentation.

Content tracked in repository.

17 of 147

Static Site Generators

Middleman�middlemanapp.com

Jekyll�jekyllrb.com

Hugo�gohugo.io���

18 of 147

Static Site Generators

Jekyll

19 of 147

Jekyll

20 of 147

Jekyll

Created in 2008 by Github co-founder Tom Preston-Warner.

Combines content markup language and template language.

Integrates with Github Pages.

21 of 147

Jekyll

It does what you tell it to do, no more, no less. It doesn't try to outsmart users by making bold assumptions, nor does it burden them with needless complexity and configuration. Put simply, Jekyll gets out of your way and allows you to concentrate on what truly matters: your content.

-Tom Preston-Warner (Github co-founder)

22 of 147

23 of 147

24 of 147

Jekyll & Netflix

Netflix partnered with CloudCannon to rebuild Netflix Devices.

Originally a Drupal site; rebuilt in “a fraction of the time” using Jekyll.

The new site “loads quickly and reliably scales to the millions of Netflix visitors.”

25 of 147

Jekyll Setup

Requirements

Ruby & RubyGems

OS-X, Linux, or Unix (Windows development is possible)

NodeJS

Python

26 of 147

Jekyll Setup

Installing

$ gem install jekyll

$ gem install bundler$ jekyll new degree-site�$ cd degree-site�$ bundle install

27 of 147

Jekyll Setup

_config.yaml

Comment out the line containing the “url” configuration.

22. baseurl: "" # the subpath of your site, e.g. /blog

23. url: "http://example.com" # the base hostname & protocol

24. twitter_username: jekyllrb

25. github_username: jekyll

28 of 147

Jekyll Setup

_config.yaml

Comment out the line containing the “url” configuration.

23. url: "http://example.com" # the base hostname & protocol

29 of 147

Jekyll Setup

_config.yaml

Comment out the line containing the “url” configuration.

23. #url: "http://example.com" # the base hostname & protocol

30 of 147

Jekyll Setup

Built-in development web server.

$ bundle exec jekyll serve$ Server address: http://127.0.0.1:4000/

$ Server running... press ctrl-c to stop.

31 of 147

32 of 147

Jekyll Setup

Server rebuilds automatically on file saves.

$ Server address: http://127.0.0.1:4000/

$ Server running... press ctrl-c to stop.

$ Regenerating: 1 file(s) changed at 2016-09-28 15:57:20

...done in 0.204804 seconds.

33 of 147

Jekyll File Structure

.

├── _config.yml

├── _includes

| ├── footer.html

| └── header.html

├── _layouts

| ├── default.html

| └── post.html

├── _posts

| ├── 2016-10-29-jekyll-no-cms.md

| └── 2016-10-15-new-site-design.md

├── _drafts

| └── my-conf-notes.md

├── _site

├── welcome.md

├── about.md

└── index.md

34 of 147

Jekyll File Structure

.

├── _config.yml

├── _includes

| ├── footer.html

| └── header.html

├── _layouts

| ├── default.html

| └── post.html

├── _posts

| ├── 2016-10-29-jekyll-no-cms.md

| └── 2016-10-15-new-site-design.md

├── _drafts

| └── my-conf-notes.md

├── _site

├── welcome.md

├── about.md

└── index.md

OUTPUT GOES

HERE

35 of 147

Content in Jekyll

36 of 147

Content

Jekyll Content files are written in Markdown.

Easy-to-read, easy-to-write plain text format.

Jekyll processes markdown to HTML.

.md or .markdown extension.

Contains front matter.

37 of 147

Content Types

Posts

Pages

Collections

38 of 147

Content Types

Posts

Pages

Collections

39 of 147

Content Types

Posts

Pages

Collections

40 of 147

Posts

Organized chronologically, date required in filename.�Stored in _posts directory.��Files stored in the _drafts folder will not be published to the _site directory.

├── _posts

| ├── 2016-10-04-highedweb-conference.md

| ├── 2016-10-29-jekyll-no-cms.md

| └── 2016-10-15-new-site-design.md

├── _drafts

| └── highedweb-conference-notes.md

DRAFT FILES ARE NOT PROCESSED

41 of 147

Pages

Page files can be located anywhere.

HTML files are processed from source markdown files and placed in the same relative location.

├── home.md

├── courses

| ├── art2001.md

| └── cop3223.md

├── index.md

└── contact.html

├── home.html

├── courses

| ├── art2001.html

| └── cop3223.html

├── index.html

└── contact.html

_SITE OUTPUT

SRC

PROCESSED INTO

HTML

42 of 147

Everything Else

Files/folders that are not Jekyll-specific will be copied over without�being processed.

Files that do not contain front matter.

_SITE OUTPUT

SRC

├── home.md

├── courses

| ├── art2001.md

| └── cop3223.md

├── index.md

└── contact.html

├── home.html

├── courses

| ├── art2001.html

| └── cop3223.html

├── index.html

└── contact.html

COPIED WITHOUT

PROCESSING

43 of 147

Front Matter

2016-09-23-masters-in-social-work.md

Content documents must begin with what is called “front matter.”�The front matter contains metadata for the document.

Front Matter is written in YAML.

---

layout: post

title: Masters in Social Work

date: 2016-09-23 14:12:08 -0400

---

44 of 147

Front Matter

2016-09-23-masters-in-social-work.md

Content documents must begin with what is called “front matter.”�The front matter contains metadata for the document.

Front Matter is written in YAML.

---

layout: post

title: Masters in Social Work

date: 2016-09-23 14:12:08 -0400

---

45 of 147

46 of 147

47 of 147

48 of 147

---

layout: post

title: Masters in Social Work

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

49 of 147

---

layout: post

title: Masters in Social Work

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

50 of 147

Content

Front Matter

---

layout: post

title: Masters in Social Work

banner_image: “../img/banner-1.jpeg”

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

PREDEFINED VARIABLES

CUSTOM VARIABLES

51 of 147

Content

Front Matter

---

layout: post

categories: [degree, catalog]

tags: [social work, masters]

title: Masters in Social Work

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

TAGS

CATEGORIES

52 of 147

thttps://jekyllrb.com/docs/variables/

---

layout: post

title: Masters in Social Work

categories: [degree, catalog]

tags: [social work, masters]

permalink: /degrees/social-work

published: false

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

TAGS

CATEGORIES

PERMALINK

PUBLISHED

53 of 147

Content

Front Matter

---

layout: post

categories: [degree, catalog]

title: Masters in Social Work

banner_image: /img/banner-1.jpg

form_id: 3

date: 2016-09-23 14:12:08 -0400

---

Lorem Ipsum is simply dummy text of the printing and typesetting indust..

CUSTOM VARIABLES

54 of 147

2016-09-23-masters-in-social-work.md

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

55 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

56 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

57 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

58 of 147

59 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

60 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

61 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

62 of 147

---

layout: post

title: Masters in Social Work

banner_image: /img/banner-1.jpg

date: 2016-09-23 14:12:08 -0400

---

Earn your {{ page.title }} graduate degree online from UCF’s School of Social Work and make a difference in your community. M.S.W. students become practitioners who promote optimal well-being, human rights, and social and economic justice.

MARKDOWN

63 of 147

Markdown

Content Markup Language

64 of 147

Markdown

Jekyll Content files are written in Markdown.

Easy-to-read, easy-to-write plain text format.

Jekyll processes markdown to HTML.

.md or .markdown extension.

Contains front matter.

daringfireball.net/projects/markdown

65 of 147

://jekyllrb.com/docs/variables/thttp://csswizardry.com/2014/07/a-new-focus-a-new-site/

## A new focus, a new site

[Almost a year ago, I decided I wanted to work for�myself.](http://csswizardry.com/2013/07/make-it-count/) Everything after that�all happened so quickly that I never even got round to redesigning this website.�I’m a very pragmatic, product-led, agile-working developer, so I decided to put�together [a micro-site](http://csswizardry.com/work/) to handle a more�business-oriented face onto the web: it would be far, _far_ quicker to build�something small and focused from scratch than it would have been—at the time—to�redesign the whole site. There are currently

[184 commits](https://github.com/csswizardry/work) against that one, single-page�website alone!

66 of 147

67 of 147

68 of 147

Markdown

Headers

# Heading 1

## Heading 2

### Heading 3

#### Heading 4

##### Heading 5

CODE

69 of 147

Markdown

Headers

Heading 1�Heading 2

Heading 3

Heading 4

Heading 5

# Heading 1

## Heading 2

### Heading 3

#### Heading 4

##### Heading 5

OUTPUT

CODE

70 of 147

Markdown

Emphasis

��

Italics

Strong

Strong italicsCombined emphasis

Strikethrough

_underscores_

**strong**�__underscores__�**asterisks and _underscores_**

~~tildes~~

71 of 147

Markdown

Emphasis

��

Italics

Strong

Strong italics�Combined emphasis

Strikethrough

_underscores_

**strong**�__underscores__�**asterisks and _underscores_**

~~tildes~~

72 of 147

Markdown

Ordered Lists

1. First ordered list item

2. Another item

* Unordered sub-list.

1. The number doesn’t matter.

4. And another item.

OUTPUT

CODE

73 of 147

Markdown

Ordered Lists

1. First ordered list item

2. Another item

* Unordered sub-list.

1. The number doesn’t matter.

4. And another item.

  1. First ordered list item
  2. Another item
    • Unordered sub-list.
  3. The number doesn’t matter.
  4. And another item.

OUTPUT

CODE

74 of 147

Markdown

Unordered Lists

* One fish

* Two fish

* Red fish

* Blue fish

OUTPUT

CODE

75 of 147

Markdown

Unordered Lists

* eng1120�* cop3223�* dig4385�* fil2000�

  • eng1120
  • cop3223
  • dig4385
  • fil2000�

OUTPUT

CODE

76 of 147

Markdown

Links

[Normal link](https://www.google.com “Google”)

HTML OUTPUT

CODE

77 of 147

Markdown

Links

[Normal link](https://www.google.com “Google”)

<a href=”https://www.google.com” title=”Google”>Normal Link</a>

HTML OUTPUT

CODE

78 of 147

Markdown

Links

[Normal link](https://www.google.com “Google”)

<a href=”https://www.google.com” title=”Google”>Normal Link</a>

HTML OUTPUT

CODE

79 of 147

Markdown

Images

HTML OUTPUT

CODE

![Animated gif](http://i.imgur.com/LQ70vT4.gif "Coffee Time")��

80 of 147

Markdown

Images

HTML OUTPUT

CODE

![Animated gif](http://i.imgur.com/LQ70vT4.gif "Coffee Time")��

<img src="http://i.imgur.com/LQ70vT4.gif" alt="Animated gif" title="Coffee Time" />

81 of 147

Markdown

Images

HTML OUTPUT

CODE

![Animated gif](http://i.imgur.com/LQ70vT4.gif "Coffee Time")��

<img src="http://i.imgur.com/LQ70vT4.gif" alt="Animated gif" title="Coffee Time" />

82 of 147

Liquid

Templating Language

83 of 147

Liquid

Templating Language

Integrates into HTML layout.

Liquid code can be categorized into one of the three:

  • Objects
  • Tags
  • Filters

84 of 147

{% include header.html %}

<div class="wrapper">

<div class="layout">

<h1>{{ page.title }}</h1>

{{ content }}

<section class="layout__item”>

{% include sub-content.html %}

</section>

</div>

</div>

{% include footer.html %}

85 of 147

86 of 147

Liquid

Objects��Resolves to text�{{ matched pairs of curly braces }}

{{ page.title }}

OUTPUT

CODE

87 of 147

Liquid

Objects��Resolves to text�{{ matched pairs of curly braces }}

{{ page.title }}

Master in Social Work

OUTPUT

CODE

88 of 147

Liquid

Tags�Used for creating logic and control flow�Does not resolve to text.{% matched pairs of curly brackets and percent signs %}

{% if degree.hours %}

{{ degree.hours }} Credit Hours

{% endif %}

DATA

CODE

OUTPUT

degree.name: Master in Social...�degree.hours: 61

89 of 147

Liquid

Tags�Used for creating logic and control flow�Does not resolve to text.{% matched pairs of curly brackets and percent signs %}

{% if degree.hours %}

{{ degree.hours }} Credit Hours

{% endif %}

61 Credit Hours

DATA

CODE

OUTPUT

degree.name: Master in Social...�degree.hours: 61

90 of 147

Liquid

Tags

{% if degree.hours &&

degree.hours <= 60 %}

{{ degree.hours }} Credit Hours

{% elsif degree.hours > 60 %}

More than 60 Credit Hours

{% endif %}

DATA

CODE

OUTPUT

degree.name: Master in Social...�degree.hours: 61

91 of 147

Liquid

Tags

{% if degree.hours &&

degree.hours <= 60 %}

{{ degree.hours }} Credit Hours

{% elsif degree.hours > 60 %}

More than 60 Credit Hours

{% endif %}

More than 60 Credit Hours

DATA

CODE

OUTPUT

degree.name: Master in Social...�degree.hours: 61

92 of 147

Liquid

Tags

<ul>

{% for course in site.courses %}

<li>{{ course }}</li>

{% endfor %}

<ul>

OUTPUT

CODE

DATA

courses: [eng1120, cop3223, dig4385,

fil2000 ]

93 of 147

Liquid

Tags

<ul>

{% for course in site.courses %}

<li>{{ course }}</li>

{% endfor %}

<ul>

  • eng1120
  • cop3223
  • dig4385
  • fil2000

OUTPUT

CODE

DATA

courses: [eng1120, cop3223, dig4385,

fil2000 ]

94 of 147

<h2>Posts</h2>

<ul>

{% for posts in site.posts %}

<li><a href=”{{ post.permalink }}”>� {{ post.title }}</a></li>

{% endfor %}

<ul>

OUTPUT

CODE

FILE SYSTEM

├── _posts

| ├── 2016-10-04-highedweb-conference.md

| ├── 2016-10-29-jekyll-no-cms.md

| ├── 2016-10-18-recalling-milwaukee.md

| ├── 2016-10-17-static-sites-best.md

| └── 2016-10-15-new-site-design.md

95 of 147

<h2>Posts</h2>

<ul>

{% for posts in site.posts %}

<li><a href=”{{ post.permalink }}”>� {{ post.title }}</a></li>

{% endfor %}

<ul>

  • HighEdWeb Conference
  • Jekyll No-CMS Strategy
  • Recalling Milwaukee
  • Static Sites: Best Practices
  • New Site Design

OUTPUT

CODE

FILE SYSTEM

├── _posts

| ├── 2016-10-04-highedweb-conference.md

| ├── 2016-10-29-jekyll-no-cms.md

| ├── 2016-10-18-recalling-milwaukee.md

| ├── 2016-10-17-static-sites-best.md

| └── 2016-10-15-new-site-design.md

96 of 147

Liquid

Filters�Change the output of an object.�{{ used within output with separator | filter }}

{{ page.title | upcase }}<br />

{{ page.title | replace: “C”, “K” }}<br />

{{ post.pub_at | date: "%Y" }}<br />

{{ post.pub_at | date: "%D" }}

OUTPUT

CODE

97 of 147

Liquid

Filters�Change the output of an object.�{{ used within output with separator | filter }}

THINK STATIC

THINK STATIK

2016

09/23/2016

OUTPUT

CODE

{{ page.title | upcase }}<br />

{{ page.title | replace: “C”, “K” }}<br />

{{ post.pub_at | date: "%Y" }}<br />

{{ post.pub_at | date: "%D" }}

98 of 147

TL;DR

Liquid allows you to add logic, control flow, and variables to your HTML templates.

99 of 147

Layouts

Jekyll templating makes it all possible.

100 of 147

Layouts

The template for a page is generally is the markup that repeats on every page.

Layouts in Jekyll utilize the Liquid templating language.

Contain front matter.

.html files located in _layouts directory

101 of 147

Layouts

.html files located in _layouts directory

├── _layouts

102 of 147

default.html

<!DOCTYPE html>

<html lang="{{ page.lang | default: site.lang | default: "en" }}">

{% include head.html %}

<body>

{% include header.html %}

<main class="page-content" aria-label="Content">

<div class="container">

{{ content }}

</div>

</main>

{% include callout-contact-help-coach.html %}

{% include footer.html %}

{% include foot.html %}

</body>

</html>

103 of 147

default.html

<!DOCTYPE html>

<html lang="{{ page.lang | default: site.lang | default: "en" }}">

{% include head.html %}

<body>

{% include header.html %}

<main class="page-content" aria-label="Content">

<div class="container">

{{ content }}

</div>

</main>

{% include callout-contact-help-coach.html %}

{% include footer.html %}

{% include foot.html %}

</body>

</html>

CONTENT OBJECT

104 of 147

105 of 147

page.html

---

layout: default

---

<article class="post">

<header class="post-header">

<h1 class="post-title">{{ page.title | escape }}</h1>

</header>

<div class="post-content">

{{ content }}

</div>

</article>

106 of 147

page.html

---

layout: default

---

<article class="post">

<header class="post-header">

<h1 class="post-title">{{ page.title | escape }}</h1>

</header>

<div class="post-content">

{{ content }}

</div>

</article>

NESTING LAYOUTS

107 of 147

108 of 147

109 of 147

{

Nested

Layouts

110 of 147

{

Nested

Layouts

111 of 147

Includes

Making templating even more modular.

112 of 147

Includes

Liquid Tag to include chunks/snippets of HTML code.��Will respect Liquid Objects, Tags, and Filters within includes.

Includes files are located in _includes.

{% include header.html %}

113 of 147

Includes

_includes/header.html

Liquid Tag to include chunks/snippets of HTML code.Will render Liquid Objects, Tags, and Filters within includes

<header class="site-header" role="banner">

<h1 class=“logo”><a href=“/index.html”>UCF Online</a></h1>

<nav>

<ul>

<li><a href=“/index.html”>Home</a></li>

<li><a href=“/degrees”>Degrees</a></li>

<li><a href=“/about”>About</a></li>

</ul>

</nav>

</header>

114 of 147

Includes

Liquid Tag to include chunks/snippets of HTML code.Will render Liquid Objects, Tags, and Filters within includes

<!DOCTYPE html>

<html>

<body>

{% include header.html %}

<div class="wrapper">

{{ content }}

</div>

{% include footer.html %}

</body>

</html>

115 of 147

Includes

Liquid Tag to include chunks/snippets of HTML code.Will render Liquid Objects, Tags, and Filters within includes

<!DOCTYPE html>

<html>

<body>

{% include header.html %}

<div class="wrapper">

{{ content }}

</div>

{% include footer.html %}

</body>

</html>

HEADER INCLUDE

116 of 147

Includes

Liquid Tag to include chunks/snippets of HTML code.Will render Liquid Objects, Tags, and Filters within includes

<!DOCTYPE html>

<html>

<body>

{% include header.html %}

<div class="wrapper">

{{ content }}

</div>

{% include footer.html %}

</body>

</html>

HEADER INCLUDE

FOOTER INCLUDE

117 of 147

118 of 147

119 of 147

FOOTER

HEADER

120 of 147

Collections

Much like Custom Post Types in Wordpress, and Custom Content Types in Drupal.

Posts that don’t have a time-based order.

Everything that’s not a post or a page can be represented as a collection.

121 of 147

Collections

_config.yml

Collections should be defined in the config file.�Various options exist...

29.

30. collections:

31. courses

32.

33.

122 of 147

Collections

_config.yml

Collections should be defined in the config file.�Various options exist... including specifying a permalink.

29.

30. collections:

31. courses:

32. output: true

33. permalink: /courses/:path/

123 of 147

Collections

Collection items are stored in a folder that is the same name of your collection, prepended with an underscore.

|

|

|

|

|

|

124 of 147

Collections

Collection items are stored in a folder that is the same name of your collection, prepended with an underscore.

In our example, we have the courses collection, so our items will be stored in _courses.

|

├── _courses

|

|

|

|

125 of 147

Collections

Collection items are stored in a folder that is the same name of your collection, prepended with an underscore.

In our example, we have the courses collection, so our items will be stored in _courses.

|

├── _courses

| ├── cop-3330-object-oriented-programming.md

| ├── chm-2045c-chemistry-fund-1.md

| └── fil-2030-history-of-motion-pictures.md�|

126 of 147

/_degrees/masters-of-social-work.md

---

layout: degree

title: "Master of Social Work"

credit_hours: 62

program_type: master

college: College of Health and Public Affairs

---

Earn your Master of Social Work (MSW) graduate degree online from UCF’s School of Social Work and make a difference in your community. MSW students become practitioners who promote optimal well-being, human rights, and social and economic justice. The MSW focuses on social change from a regional and global perspective with individuals, families, groups and communities in diverse practice settings.

127 of 147

/_degrees/masters-of-social-work.md

---

layout: degree

title: "Master of Social Work"

credit_hours: 62

program_type: master

college: College of Health and Public Affairs

---

Earn your Master of Social Work (MSW) graduate degree online from UCF’s School of Social Work and make a difference in your community. MSW students become practitioners who promote optimal well-being, human rights, and social and economic justice. The MSW focuses on social change from a regional and global perspective with individuals, families, groups and communities in diverse practice settings.

CUSTOM VARIABLES

128 of 147

/_degrees/masters-of-social-work.md

---

layout: degree

title: "Master of Social Work"

credit_hours: 62

program_type: master

college: College of Health and Public Affairs

---

Earn your Master of Social Work (MSW) graduate degree online from UCF’s School of Social Work and make a difference in your community. MSW students become practitioners who promote optimal well-being, human rights, and social and economic justice. The MSW focuses on social change from a regional and global perspective with individuals, families, groups and communities in diverse practice settings.

CUSTOM VARIABLES

LAYOUT

129 of 147

Content Types Review

Which one to use?

130 of 147

Post, Page, or Collection?

Post: �Organized chronologically, date required in filename.

Page: �Separate content not in any particular order.

Collection: �Related content, but not necessarily organized chronologically�(e.g., content that’s not a post or a page).

131 of 147

Hosting Options

You can just FTP the whole site.

132 of 147

Hosting Options

Among many hosting options:

  • FTP → web server
  • Amazon S3
  • Github Pages

133 of 147

Hosting Options

FTP → web server or Amazon S3

Need only transfer the _site folder.

134 of 147

Hosting Options

FTP → web server or Amazon S3

Need only transfer the _site folder.

├── _site

135 of 147

Hosting Options

FTP → web server or Amazon S3

Need only transfer the _site folder.

├── _site

136 of 147

Github Pages

Jekyll site repositories that utilize Github pages will deploy immediately upon pushing to master.

You don’t need to manually transfer the _site folder, Github will run Jekyll and deploy _site for you.

137 of 147

Online Editing Options

Prose.io - http://prose.ioJekyllCMS - https://github.com/mgax/jekyllcms�Cloudcannon - http://cloudcannon.com/�Siteleaf - https://www.siteleaf.com/��Each provide web interfaces to edit content.�

138 of 147

Prose.io

139 of 147

140 of 147

141 of 147

CloudCannon

Developers edit on�their local machines.�

142 of 147

CloudCannon

Marketers edit online using custom editable fields.�

143 of 147

To Summarize

Dynamic CMS systems like Wordpress can be too much�for some projects.

Static site generators like Jekyll can be a�simple solution.

144 of 147

Resources

Jekyll Documentation�https://jekyllrb.com/docs/

Jekyll Tips�http://jekyll.tips

Build a Jekyll Blog with Github Pages�https://www.smashingmagazine.com/2014/08/build-blog-jekyll-github-pages/

DevelopmentSeed Case Study on Healthcare.gov�https://developmentseed.org/blog/2013/10/24/its-called-jekyll

Jekyll Development on Windows�https://jekyllrb.com/docs/windows/

145 of 147

Thank You

Keegan Berry

Marketing & Communications - University of Central Florida

Slides available at:

http://tinyurl.com/thinkstatic2016

146 of 147

Footnote Links

Listing of Static Site Generators�https://www.staticgen.com/

CloudCannon Case Study�http://cloudcannon.com/case-studies/netflix/

Jekyll Installation Docs�https://jekyllrb.com/docs/installation/

Markdown Cheatsheet�https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

Jekyll Variables Documentation�https://jekyllrb.com/docs/variables/

CSS Wizardry Page & Github Code

http://csswizardry.com/2014/07/a-new-focus-a-new-site/

https://github.com/csswizardry/csswizardry.github.com/blob/master/_posts/2014-07-07-a-new-focus-a-new-site.md

Liquid Documentation

http://shopify.github.io/liquid/basics/introduction/

Jekyll Layouts Documentation

https://jekyllrb.com/docs/templates/

Jekyll Collections

http://ben.balter.com/2015/02/20/jekyll-collections/

Github Pages

https://pages.github.com

147 of 147

Footnote Links