M Y N A M E I S
P H I L I P Z A E N G L E
I C O D E A N D D O B U S I N E S S I N G T H I N G $
Z A E N G L E . C O M / @ Z A E N G L E
S L I D E S B Y D E R E K N E L S O N
^
Slide 3
Slide 3 text
L E T S T A L K A B O U T
C R A F T C M S
Slide 4
Slide 4 text
W H A T I S C R A F T ?
41
Slide 5
Slide 5 text
Craft is a general-purpose CMS
designed to do one thing really
well: manage content.
“
P I X E L A N D T O N I C
B U I L D E R S O F C R A F T C M S
Slide 6
Slide 6 text
C R A F T I S B U I L T O N
• PHP 5.3.0+
• Yii framework
• Twig template engine
• Developed, maintained by Pixel & Tonic
and sold
>
Slide 7
Slide 7 text
$299.00
C O M M E R C I A L
Slide 8
Slide 8 text
O M G O S H !
Slide 9
Slide 9 text
$299.00
C O M M E R C I A L
• $100 x 3hrs = $300
• Staff support!
• Case studies!!
• Full time staff!!!
Slide 10
Slide 10 text
C O N S I D E R A T I O N S
• Speed to deployment
• Feature fit
Slide 11
Slide 11 text
Craft is like WordPress if it was
stripped naked and then clothed
in Advanced Custom Fields.
“
M E G A N Z L O C K
F R O N T - E N D D E V E L O P E R / V I G E T
Slide 12
Slide 12 text
W H Y
Slide 13
Slide 13 text
C R A F T F O R A U T H O R S
• Fully responsive
control panel
• Content preview
• Drafts / change notes
• Highly intuitive
Slide 14
Slide 14 text
C R A F T F O R D E S I G N E R S
• Complete front-end control
• Editorial content simplified
• Complex content modeling
• Designers can {{code}}
• Pretty intuitive
Slide 15
Slide 15 text
• Twig
• Documented API
• Architecture
(and lot’s of it)
• Mostly intuitive
• And more: localization,
cloud asset storage,
user permissioning
C R A F T F O R D E V E L O P E R S
Slide 16
Slide 16 text
T W I G W H A T ! ?
Slide 17
Slide 17 text
{# I’m a comment #}
{{ variableName }}
{% set variableName = “Phil Zaengle” %}
T W I G 1 0 1
Slide 18
Slide 18 text
{{ variableName | upper }}
{% for var in arrayVar %}
{{ var }}
{% endfor %}
T W I G 1 0 2
Slide 19
Slide 19 text
{% set next = “Let’s Build” %}
{% for i in 0..10 %}
{{ i }} - {{ next | upper }}
{% endfor %}
T W I G 2 0 0
Slide 20
Slide 20 text
T i t l e
B o d y C o n t e n t
e n t r y . t i t l e
e n t r y . b o d y
L E T ’ S B U I L D A P A G E
Slide 21
Slide 21 text
N O W D O I T . / /
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
C O N T E N T
D E S I G N
C O N T E N T M O D E L
C O D E
> > >
Slide 24
Slide 24 text
Title {
Content {
Slide 25
Slide 25 text
Header / Title {
Body Content {
Quote Block {
Body Content {
Code Example {
Body Content {
Code Example {
Slide 26
Slide 26 text
T i t l e
I n t r o
H e r o I m a g e
E d i t o r i a l C o n t e n t
- > S l i d e s h o w
- > B o d y
- > P u l l Q u o t e
- > B l o g R e l a t i o n s h i p
e n t r y . t i t l e
e n t r y . i n t r o
e n t r y . h e r o I m a g e
e n t r y . m a t r i x
- > m a t r i x . s l i d e s h o w
- > m a t r i x . b o d y
- > m a t r i x . q u o t e
- > m a t r i x . b l o g s
L E T ’ S B U I L D B L O G
Slide 27
Slide 27 text
craft.entries
.section(‘blog’)
.limit(10)
.before(2012)
.offset(2)
.order(‘dateCreated desc’)
C R A F T T W I G
Slide 28
Slide 28 text
{% set entries = craft.entries.section(‘blog’) %}
{% for entry in entries %}
{{ entry.title }}
{% endfor %}
C R A F T T W I G
Slide 29
Slide 29 text
{% paginate craft.entries.section(‘blog’)
as page, entries %}
{% for entry in entries %}
{{ entry.title }}
{% endfor %}
C R A F T T W I G
Slide 30
Slide 30 text
N O W D O I T . / /
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
full localization
user accounts
robust api
growing community
J U S T S T A R T I N G