Top Banner
TASTY NEOS RECIPES FOR EVERY DAY CREATE BETTER WEBSITES WITH NEOS SEBASTIAN HELZLE - INSPIRING CON 2016
34

Tasty Recipes for Every Day 2016 (Neos)

Apr 11, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY

CREATE BETTER WEBSITES WITH NEOS SEBASTIAN HELZLE - INSPIRING CON 2016

Page 2: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - INTRODUCTION

ABOUT ME

▸ Years of TYPO3, Flow & Neos experience

▸ Neos team member

▸ Product Owner @ punkt.de

▸ Living in Karlsruhe

▸ Sometimes living in Cambodia

▸ Hiker & baker

▸ @sebobo

Page 3: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - INTRODUCTION

THIS TALK HELPS

▸ Developers

▸ Who start a new project

▸ Who want to learn more

▸ Who want to stay up-to-date

▸ Editors

▸ Who want to know if things could be easier

▸ Project leaders

▸ Who want to know what’s possible

Page 4: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - INTRODUCTION

AGENDA

▸ A look into the past

▸ Improvements

▸ New recipes

▸ ???

▸ Become a Neos chef

Page 5: Tasty Recipes for Every Day 2016 (Neos)

A LOOK INTO THE PAST

Page 6: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - A LOOK INTO THE PAST

▸ Talk first held at Inspiring Con 2015 by Aske Ertmann

▸ Check it out here

▸ https://speakerdeck.com/aertmann/tasty-recipes-for-every-day-neos

▸ or here goo.gl/A2WCiU

▸ Some recipes have are outdated — most are still great!

Page 7: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - A LOOK INTO THE PAST

GREAT RECIPES IN THE OLD SLIDES

▸ Automatically optimize images and process them faster

▸ Automatic deployment

▸ Customizable 404 pages

▸ Multi-Site techniques

▸ E-Mail Spam protection

▸ Adjust css and js for editors

▸ And many more!

Page 8: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - A LOOK INTO THE PAST

NEOS & FLOW DOCUMENTATION

▸ Was not always helpful

▸ Has much improved!

▸ Good examples

▸ Often used sentence:

„With Neos you can do a lot with a few lines of code“

„finding them is the hard part“

Page 9: Tasty Recipes for Every Day 2016 (Neos)

IMPROVEMENTS

Page 10: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - IMPROVEMENTS

PERSISTENT CACHES

▸ Easier to configure since Flow 3.0

▸ Are kept even when flushing all caches

# Caches.yaml

# Flow 3.0+ Flow_Session_Storage: persistent: TRUE

Flow_Session_MetaData: persistent: TRUE

# Flow 2.0-2.3 (only works with Surf deployment – not flow:cache:flush command) Flow_Session_Storage: backendOptions: cacheDirectory: '%FLOW_PATH_DATA%Session/Flow_Session_Storage'

Flow_Session_MetaData: backendOptions: cacheDirectory: '%FLOW_PATH_DATA%Session/Flow_Session_MetaData'

Page 11: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - IMPROVEMENTS

PERSISTENT CACHE - EXAMPLES

▸ Keep session data

▸ Store dynamic configurations

▸ Fallback cache for flaky API endpoints$result = $this->queryApi($endpointUrl); $fallbackCacheKey = $this->getCacheKey($endpointUrl); if ($result !== false) { $this->fallbackApiCache->set($fallbackCacheKey, $result);} else { $this->systemLogger->log( 'API connection failed - will use fallback cache', LOG_WARNING, 1458644107 ); $result = $this->fallbackApiCache->get($fallbackCacheKey);} return $result;

Page 12: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - IMPROVEMENTS

SEO

▸ Use the Neos package typo3/neos-seo

▸ Provides additional configuration for every page

▸ Alternative page title

▸ Meta tags (description, keywords, robots)

▸ Twitter card

▸ OpenGraph

▸ Canonical Link

▸ XML Sitemap

Page 13: Tasty Recipes for Every Day 2016 (Neos)

NEW RECIPES

Page 14: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

GOOGLE ANALYTICS

▸ Use the Neos package typo3/neos-googleanalytics

▸ View page statistics in the backend

▸ Tracking script helper

Page 15: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

HELP EDITORS WITH BACKEND HINTS

▸ Hints only shown in edit mode

<f:if condition="{neos:rendering.inEditMode()}"> <f:then> <p class="backend-editor-hint"> Please select the start point of your blog in the inspector. </p> </f:then> <f:else> <p>No blog entries found.</p> </f:else></f:if>

Page 16: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

HELP EDITORS UNDERSTAND

▸ Adapt naming of content to your customers vocabulary

# NodeTypes.Headline.yaml ‘Neos.NodeTypes:Headline‘: ui: label: 'Leadtext'

# NodeTypes.NewsArticle.yaml ‘Foo.Bar:NewsArticle‘: ui: label: 'Blogpost'

Page 17: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

HELP EDITORS TO NOT GET LOST

▸ Disable unused features

# NodeTypes.ContentImageMixin.yaml 'TYPO3.Neos.NodeTypes:ContentImageMixin': superTypes: 'TYPO3.Neos.NodeTypes:ImageAlignmentMixin': false

# NodeTypes.Document.yaml 'TYPO3.Neos:Document': superTypes: 'TYPO3.Neos.Seo:TwitterCardMixin': true 'TYPO3.Neos.Seo:OpenGraphMixin': false

Page 18: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

HELP EDITORS TO NOT MAKE MISTAKES

▸ Constraints, constraints, constraints

▸ Limiting possibilities reduces mistakes

▸ Part of your content architecture

# NodeTypes.Document.yaml 'TYPO3.Neos:Document': constraints: nodeTypes: 'Foo.Bar:RootPage': false

# NodeTypes.Column.yaml 'TYPO3.Neos.NodeTypes:Column': childNodes: column0: constraints: &columnConstraints nodeTypes: '*': true 'TYPO3.Neos.NodeTypes:Column': false column1: constraints: *columnConstraints column2: constraints: *columnConstraints column3: constraints: *columnConstraints

Page 19: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

DISABLE SESSION TIMEOUT WHILE DEVELOPING

▸ Logging in 20 times a day is a waste of time

# Development/Settings.yaml TYPO3: Flow: security: session: inactivityTimeout: 0

Page 20: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

COMPRESS HTML

▸ Use the Neos package flownative/neos-compressor

▸ Removes whitespace, line endings, etc…

Page 21: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

ENABLE FLUID AUTOCOMPLETION PT. 1

▸ Modify template

▸ Also helps PHPStorm to validate your html

# Templates/NodeTypes/Text.html <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" xmlns:neos=„http://typo3.org/ns/TYPO3/Neos/ViewHelpers"> <f:section name="Main"> <div{attributes -> f:format.raw()}> <neos:contentElement.editable property="text"/> <f:if condition="{referenceNodes}"> <ol class="reference-links"> {referenceNodes -> f:format.raw()} </ol> </f:if> </div></f:section>

</html>

Page 22: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

ENABLE FLUID AUTOCOMPLETION PT. 2

▸ Define „sectionName“ in TypoScript prototype

# TypoScript/NodeTypes/Text.ts2 prototype(TYPO3.Neos.NodeTypes:Text) { templatePath = 'resource://Foo.Bar/Private/Templates/NodeTypes/Text.html' sectionName = 'Main' @context.referenceNodesArray = ${q(node).property('references')} referenceNodes = TYPO3.TypoScript:Collection { collection = ${referenceNodesArray} itemRenderer = Foo.Bar:DocumentReference itemName = 'node' }}

Page 23: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

ENABLE FLUID AUTOCOMPLETION PT. 3

▸ Generate schemas for your own view helpers

▸ Include them in PHPStorm

▸ Press alt+enter while schema url in template is selected

# bash ./flow documentation:generatexsd --phpNamespace "Foo\Bar\ViewHelpers"

http://neos.readthedocs.org/en/2.1/ExtendingNeos/CustomViewHelpers.html

Page 24: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

USE TYPOSCRIPT2 PROTOYPES

▸ Inheritable & extendable modules

# TypoScript/NodeTypes/Example.ts2 prototype(Foo.Bar:Example) < prototype(Neos.NodeTypes:Text) { attributes.class = 'color-love'} prototype(Foo.Bar:Example) { attributes.class = 'color-rainbow'} prototype(Foo.Bar:Column) { prototype(Foo.Bar:Example) { attributes.class = 'color-peace' }}

Page 25: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES

CACHE EVERYTHING

▸ mode = ‚uncached‘ is usually not necessary

# TypoScript/NodeTypes/MyPlugin.ts2 prototype(Foo.Bar:MyPlugin) < prototype(TYPO3.Neos:Plugin) { @cache { mode = 'cached' entryIdentifier { node = ${node} } entryTags { 1 = ${'Node_' + node.identifier} } }}

prototype(TYPO3.TypoScript:GlobalCacheIdentifiers) { currentPage = ${request.arguments.page} }

http://neos.readthedocs.org/en/2.1/CreatingASite/ContentCache.html

Page 26: Tasty Recipes for Every Day 2016 (Neos)

SUPER SECRET BONUS RECIPE

Page 27: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - SUPER SECRET BONUS RECIPE

MAKE SCREENCASTS

▸ Proof your features work

▸ Measure the length of the workflow

▸ Optimize

▸ Find bugs / inconsistencies

▸ Reduces support

▸ More fun than writing documentation

Page 28: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - SUPER SECRET BONUS RECIPE

MAKE SCREENCASTS - EXAMPLE WORKFLOW

▸ Go to a quiet room

▸ Use a headset

▸ Don’t think too much about it

▸ Use simple screen casting app like Voila (or similar)

▸ Make first video

▸ Improve

▸ Make second video

▸ Export to dropbox

▸ Autoupload to Vimeo

▸ Share in private space with client / team

Page 29: Tasty Recipes for Every Day 2016 (Neos)

BECOME A NEOS CHEF

Page 30: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - BECOME A NEOS CHEF

LEARN FROM OTHERS

▸ Join us slack.neos.io

▸ Discuss on discuss.neos.io

▸ Don’t be afraid to ask questions

▸ Stay up-to-date on what’s going on

▸ Read the changelogs

Page 31: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - BECOME A NEOS CHEF

IT’S OPEN SOURCE

▸ Search

▸ Fork

▸ Learn

▸ Improve

▸ Give back

▸ Come up with new recipes

Page 32: Tasty Recipes for Every Day 2016 (Neos)

TASTY NEOS RECIPES FOR EVERY DAY - BECOME A NEOS CHEF

NEOS IS MAKING THINGS EASY

▸ TypoScript 2 means configurability and reusability

▸ Prototypes are powerful

▸ Many things can be easily toggled

▸ Don’t build complicated templates

▸ Build small reusable partials and prototypes

▸ Make it easy for others to use your recipes

Page 33: Tasty Recipes for Every Day 2016 (Neos)

ANY QUESTIONS?THANKS!

Page 34: Tasty Recipes for Every Day 2016 (Neos)

@SEBOBOFEEL FREE TO CONTACT ME