On Github mortendk / drupal8-twig-chicago-2014
i'm so sörry
The slides are on github
geek Röyale - copenhagens finest themes
From the frontend perspective ?
sorry devs you can moan laterThemers are not that Dumb
or 666 reasons why Drupal8 is better than Drupal7
home | info
37% less id *
counting at alpha9
* kinda<body class="html facepalm whateverthefuck ">
<body class="">
.notification { /* general styles for all notifications */ } .notification--info { /* blue color adjustments */ }
provide visibility
themes now lives in "/themes"
or "sites/ *** /themes"
modulename/templates/*.html.twig
$settings['twig_debug'] = TRUE;settings.php
the twig templates are compiled
(yes its the same thingie that compiling thing)
....
HARD coded
is now a block
its dead easy
/* comment */ <?php print $foo ; ?>phptemplate
{# comment #} {{ foo }}twig
/* so php template Now where is that value again */ <?php print $foo['bar']['UND']->baz['what']->thefuck['seriously'] ?>phptemplate
{# hello twig can you find valdo ? #} {{ foo.bar.baz.done.with.this.shit }} {{ foo['bar'] }} {% functions %}Twig
<?php if($foo): ?> <?php print $var; ?> <?php endif; ?>phptemplate
{% if foo %} {{ var }} {% endif %}twig
{{ loop.length }} {{ loop.first }} {{ loop.last }} {{ loop.index }} {% if loop.first %} ... {% elseif loop.index == 2 %} ... {% elseif loop.last %} ... {% endif %}
{% set foo %} count-{{ loop.index }} {% endset %} {{ foo }},twig
count-1,count-2, count-3,output
{% filter upper %} uppercase for the win {% endfilter %}
UPPERCASE FOR THE WIN
{{ foo|dostufftofoo }} {# name = morten #} {{ name|striptags|title }}twig
Morten
name: drupal7themename description = This is my epic D7 theme screenshot = screenshot.png engine = phptemplate core = 7.x php = 5.2 regions[header] = Header regions[logo] = Logo regions[menu] = Menu regions[messages] = Messages regions[content] = Content regions[footer] = Footer stylesheets[all][] = css/style.css #FOAD fix stylesheets[all][] = donteverloadmeagain.css
name: drupal8themename type: theme description: This is my epic D8 theme package: Core core: 8.x stylesheets: all: - css/layout.css print: - css/print.css stylesheets-remove: - system.theme.css - user.icons.css - stuffidontwant.css regions: header: Header logo: Logo menu: Menu messages: Messages content: Content footer: Footer # engine: phptemplate
# engine: phptemplatethemename.info
its now build in
stylesheets[all][] = css/style.css #FOAD fix ;stylesheets[all][] = donteverloadmeagain.css stylesheets[all][] = system.theme.css stylesheets[all][] = user.icons.css stylesheets[all][] = stuffidontwant.cssdrupal 7
stylesheets-remove: - system.theme.css - user.icons.css - stuffidontwant.cssdrupal 8
<?php if ($page['footer']): ?> <?php print render($page[footer]); ?> <?php endid ?><?php print render($page[region]); ?>
{% if page.footer %} {{ page.footer}} {% endif %}twig: {{ page.region }}
<div{{ attributes }}> {{ title_prefix }} {% if label %} <h2{{ title_attributes }}>{{ label }}</h2> {% endif %} {{ title_suffix }} <div{{ content_attributes }}> {{ content }} </div> </div>block.twig
<nav class="{{ attributes.class }}" role="{{ attributes.role}}"> {{ title_prefix }} {% if label %} <h2{{ title_attributes }}>{{ label }}</h2> {% endif %} {{ title_suffix }} {{ content }} </nav>block--system-menu-block.html.twig
theme hook suggestions
<nav class="{{ attributes.class }}" role="{{ attributes.role}}"> {{ title_prefix }} {% if label %} <h2{{ title_attributes }}>{{ label }}</h2> {% endif %} {{ title_suffix }} {{ content }} </nav>block--system-menu-block.html.twig
... content ...Done
...
...
....
foo.twig
foodrupal
the designer is an idiot
and they wanna support ie "something"<div class="tags"> 3 tags: foo, bar, baz. </div>the markup
.thedesignerisanidiot{ color: green; font-style:italic; }
.... {{ content.field_tags}} {{ content|without('field_tags') }}node.html.twig
{# Start the loop #} {% for delta, item in items %} {# create a class var #} {% set class %} {# odd even #} {{- cycle(["even", "odd"], delta) }} {# count-x #} count-{{ loop.index -}}" {% endset %} {{item}}, {# end the loop #} {% endfor %}field--field-tags.html.twig
Odin, Thor, Freya,drupal8
{# first loop #} {% if loop.first %} {# set tags / tag #} {% if loop.length > 1 %} {{ loop.length }} tags: {% else %} tag: {% endif %} ...field--field-tags.html.twig
3 tags:
{% if loop.first %} ... {% elseif loop.index == 2 %} {{item}}, ... {# end the loop #} {% endfor %}field--field-tags.html.twig
Odin Thor Freya
{% if loop.first %} {% if loop.length > 1 %} {{ loop.length }} tags: {% else %} tag: {% endif %} {{item}}, {% elseif loop.index == 2 %} {{item}}, {% elseif loop.last %} {{item}}. {% else %} {{item}}, {% endif %}field--field-tags.html.twig
3 tags: Odin, Thor, Freya.
{% block foobar %} {# i can be something else #} {% endblock %}
{% block headerblock %} change me if im on the frontpage {% endblock %}page.twig.html
{% extends "themes/yggdrasil/templates/page.html.twig" %} {% block headerblock %} Im on the frontpage! {% endblock %}page--front.html.twig
{{ 'last checked: @time ago'| t({'@time':time}) }}
{% trans %} Hi im a swede and i speak funny: Höidy hoeeeydi {% endtrans %}
cottser joel jen lampton mortendk ruben mark carver fabianx marc Drummond
Thursdays at 6pm
IRC: #drupal-twig
10:00
Field
TWIG documentation drupaltwig.org http://mortendk.github.io/drupal8-twig-chicago-2014