SlideShare a Scribd company logo
1 of 34
Download to read offline
TASTY NEOS RECIPES
FOR EVERY DAY
CREATE BETTER WEBSITES WITH NEOS
SEBASTIAN HELZLE - INSPIRING CON 2016
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
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
TASTY NEOS RECIPES FOR EVERY DAY - INTRODUCTION
AGENDA
▸ A look into the past
▸ Improvements
▸ New recipes
▸ ???
▸ Become a Neos chef
A LOOK INTO
THE PAST
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!
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!
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“
IMPROVEMENTS
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'
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;
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
NEW RECIPES
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
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>
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'
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
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
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
TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES
COMPRESS HTML
▸ Use the Neos package flownative/neos-compressor
▸ Removes whitespace, line endings, etc…
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>
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'

}

}

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 "FooBarViewHelpers"
http://neos.readthedocs.org/en/2.1/ExtendingNeos/CustomViewHelpers.html
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'

}

}
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
SUPER SECRET
BONUS RECIPE
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
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
BECOME A
NEOS CHEF
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
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
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
ANY QUESTIONS?
THANKS!
@SEBOBO
FEEL FREE TO CONTACT ME

More Related Content

What's hot

Bower - A package manager for the web
Bower - A package manager for the webBower - A package manager for the web
Bower - A package manager for the webLarry Nung
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsRyan Weaver
 
"Vendor Everything" still applies
"Vendor Everything" still applies"Vendor Everything" still applies
"Vendor Everything" still appliesRyan McGeary
 
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...VibrantGroup
 
Beginning Jquery In Drupal Theming
Beginning Jquery In Drupal ThemingBeginning Jquery In Drupal Theming
Beginning Jquery In Drupal ThemingRob Knight
 
mdpress(MarkDown Press)を使ったプレゼンテーション作成
mdpress(MarkDown Press)を使ったプレゼンテーション作成mdpress(MarkDown Press)を使ったプレゼンテーション作成
mdpress(MarkDown Press)を使ったプレゼンテーション作成達郎 植田
 
12 Rocking Apache .htaccess Tutorial ...
12 Rocking Apache .htaccess Tutorial ...12 Rocking Apache .htaccess Tutorial ...
12 Rocking Apache .htaccess Tutorial ...wensheng wei
 
Advanced front-end automation with npm scripts
Advanced front-end automation with npm scriptsAdvanced front-end automation with npm scripts
Advanced front-end automation with npm scriptsk88hudson
 
Continuous deployment of puppet modules
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modulesWilliam O'Neill
 

What's hot (10)

Bower - A package manager for the web
Bower - A package manager for the webBower - A package manager for the web
Bower - A package manager for the web
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
 
"Vendor Everything" still applies
"Vendor Everything" still applies"Vendor Everything" still applies
"Vendor Everything" still applies
 
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
Shell Scripting-training-course-navi-mumbai-shell-scripting-course-provider-n...
 
Beginning Jquery In Drupal Theming
Beginning Jquery In Drupal ThemingBeginning Jquery In Drupal Theming
Beginning Jquery In Drupal Theming
 
mdpress(MarkDown Press)を使ったプレゼンテーション作成
mdpress(MarkDown Press)を使ったプレゼンテーション作成mdpress(MarkDown Press)を使ったプレゼンテーション作成
mdpress(MarkDown Press)を使ったプレゼンテーション作成
 
Hello npm
Hello npmHello npm
Hello npm
 
12 Rocking Apache .htaccess Tutorial ...
12 Rocking Apache .htaccess Tutorial ...12 Rocking Apache .htaccess Tutorial ...
12 Rocking Apache .htaccess Tutorial ...
 
Advanced front-end automation with npm scripts
Advanced front-end automation with npm scriptsAdvanced front-end automation with npm scripts
Advanced front-end automation with npm scripts
 
Continuous deployment of puppet modules
Continuous deployment of puppet modulesContinuous deployment of puppet modules
Continuous deployment of puppet modules
 

Viewers also liked

Neos Bloopers [Inspiring 2016]
Neos Bloopers [Inspiring 2016]Neos Bloopers [Inspiring 2016]
Neos Bloopers [Inspiring 2016]Christian Müller
 
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...Byeongseok Yu
 
192382 426785224034300 1186474663 O.Jpg
192382 426785224034300 1186474663 O.Jpg192382 426785224034300 1186474663 O.Jpg
192382 426785224034300 1186474663 O.Jpghacochef
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLkangaro10a
 
Durobor Glass Verrines
Durobor Glass VerrinesDurobor Glass Verrines
Durobor Glass Verrineshacochef
 
Cooking camping recipes
Cooking   camping recipesCooking   camping recipes
Cooking camping recipesmrshohel
 
Cooking international recipes
Cooking   international recipesCooking   international recipes
Cooking international recipesmrshohel
 
Human vs. nature
Human vs. natureHuman vs. nature
Human vs. natureDiet Center
 
Back To School Healthy Packed Lunch Ideas
Back To School Healthy Packed Lunch Ideas Back To School Healthy Packed Lunch Ideas
Back To School Healthy Packed Lunch Ideas Diet Center
 
How to Pack a Healthy School Lunch
How to Pack a Healthy School LunchHow to Pack a Healthy School Lunch
How to Pack a Healthy School LunchEmily Todhunter
 
Healthy lunch menu: Teens
Healthy lunch menu: TeensHealthy lunch menu: Teens
Healthy lunch menu: TeensSally
 
Toddler and Prechooler Nutrition
Toddler and Prechooler NutritionToddler and Prechooler Nutrition
Toddler and Prechooler NutritionEmily Todhunter
 
Nutrition for-kids
Nutrition for-kidsNutrition for-kids
Nutrition for-kidsmucamaba
 

Viewers also liked (19)

Neos Bloopers [Inspiring 2016]
Neos Bloopers [Inspiring 2016]Neos Bloopers [Inspiring 2016]
Neos Bloopers [Inspiring 2016]
 
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...
NEOS IoT Security Platform : System-on-module with WiFi and TPM (Trusted Plat...
 
Soda
SodaSoda
Soda
 
192382 426785224034300 1186474663 O.Jpg
192382 426785224034300 1186474663 O.Jpg192382 426785224034300 1186474663 O.Jpg
192382 426785224034300 1186474663 O.Jpg
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQL
 
Vodka recipes
Vodka recipesVodka recipes
Vodka recipes
 
Durobor Glass Verrines
Durobor Glass VerrinesDurobor Glass Verrines
Durobor Glass Verrines
 
Cooking camping recipes
Cooking   camping recipesCooking   camping recipes
Cooking camping recipes
 
Cooking international recipes
Cooking   international recipesCooking   international recipes
Cooking international recipes
 
Human vs. nature
Human vs. natureHuman vs. nature
Human vs. nature
 
Back To School Healthy Packed Lunch Ideas
Back To School Healthy Packed Lunch Ideas Back To School Healthy Packed Lunch Ideas
Back To School Healthy Packed Lunch Ideas
 
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com   5106 4775Tailieu.vncty.com   5106 4775
Tailieu.vncty.com 5106 4775
 
Rhamkhamhaeng night market
Rhamkhamhaeng night marketRhamkhamhaeng night market
Rhamkhamhaeng night market
 
Packed meals
Packed mealsPacked meals
Packed meals
 
How to Pack a Healthy School Lunch
How to Pack a Healthy School LunchHow to Pack a Healthy School Lunch
How to Pack a Healthy School Lunch
 
Healthy lunch menu: Teens
Healthy lunch menu: TeensHealthy lunch menu: Teens
Healthy lunch menu: Teens
 
FOOD AND MEALS
FOOD AND MEALSFOOD AND MEALS
FOOD AND MEALS
 
Toddler and Prechooler Nutrition
Toddler and Prechooler NutritionToddler and Prechooler Nutrition
Toddler and Prechooler Nutrition
 
Nutrition for-kids
Nutrition for-kidsNutrition for-kids
Nutrition for-kids
 

Similar to Create Better Websites with Neos Recipes

Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys! Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys! stevesloka
 
Puppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfPuppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfDavid Danzilio
 
Chef basics - write infrastructure as code
Chef basics - write infrastructure as codeChef basics - write infrastructure as code
Chef basics - write infrastructure as codestevaaa
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...VictorSzoltysek
 
Don't you (forget about me) - PHP Meetup Lisboa 2023
Don't you (forget about me) - PHP Meetup Lisboa 2023Don't you (forget about me) - PHP Meetup Lisboa 2023
Don't you (forget about me) - PHP Meetup Lisboa 2023Bernd Alter
 
Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Tim Bunce
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011Carlos Sanchez
 
OpenStack LA meetup Feb 18, 2015
OpenStack LA meetup Feb 18, 2015OpenStack LA meetup Feb 18, 2015
OpenStack LA meetup Feb 18, 2015Tesora
 
Kubernetes training
Kubernetes trainingKubernetes training
Kubernetes trainingDes Drury
 
Say YES to Premature Optimizations
Say YES to Premature OptimizationsSay YES to Premature Optimizations
Say YES to Premature OptimizationsMaude Lemaire
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOpsAgile Spain
 
Modern day jvm controversies
Modern day jvm controversiesModern day jvm controversies
Modern day jvm controversiesVictorSzoltysek
 
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...Nagios
 
Head in the Clouds: Testing Infra as Code - Config Management 2020
Head in the Clouds: Testing Infra as Code - Config Management 2020Head in the Clouds: Testing Infra as Code - Config Management 2020
Head in the Clouds: Testing Infra as Code - Config Management 2020Peter Souter
 
From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012Carlos Sanchez
 
Faster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersFaster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersRichard Baker
 
Chef - industrialize and automate your infrastructure
Chef - industrialize and automate your infrastructureChef - industrialize and automate your infrastructure
Chef - industrialize and automate your infrastructureMichaël Lopez
 
From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011Carlos Sanchez
 

Similar to Create Better Websites with Neos Recipes (20)

Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys! Micro-datacenter chaos monkeys!
Micro-datacenter chaos monkeys!
 
To AWS with Ansible
To AWS with AnsibleTo AWS with Ansible
To AWS with Ansible
 
Puppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConfPuppet Design Patterns - PuppetConf
Puppet Design Patterns - PuppetConf
 
Chef basics - write infrastructure as code
Chef basics - write infrastructure as codeChef basics - write infrastructure as code
Chef basics - write infrastructure as code
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
 
Don't you (forget about me) - PHP Meetup Lisboa 2023
Don't you (forget about me) - PHP Meetup Lisboa 2023Don't you (forget about me) - PHP Meetup Lisboa 2023
Don't you (forget about me) - PHP Meetup Lisboa 2023
 
Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406Devel::NYTProf v5 at YAPC::NA 201406
Devel::NYTProf v5 at YAPC::NA 201406
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
 
OpenStack LA meetup Feb 18, 2015
OpenStack LA meetup Feb 18, 2015OpenStack LA meetup Feb 18, 2015
OpenStack LA meetup Feb 18, 2015
 
Kubernetes training
Kubernetes trainingKubernetes training
Kubernetes training
 
Say YES to Premature Optimizations
Say YES to Premature OptimizationsSay YES to Premature Optimizations
Say YES to Premature Optimizations
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOps
 
Modern day jvm controversies
Modern day jvm controversiesModern day jvm controversies
Modern day jvm controversies
 
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...
Nagios Conference 2014 - Rob Hassing - How To Maintain Over 20 Monitoring App...
 
Head in the Clouds: Testing Infra as Code - Config Management 2020
Head in the Clouds: Testing Infra as Code - Config Management 2020Head in the Clouds: Testing Infra as Code - Config Management 2020
Head in the Clouds: Testing Infra as Code - Config Management 2020
 
From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012
 
Faster PHP apps using Queues and Workers
Faster PHP apps using Queues and WorkersFaster PHP apps using Queues and Workers
Faster PHP apps using Queues and Workers
 
Chef - industrialize and automate your infrastructure
Chef - industrialize and automate your infrastructureChef - industrialize and automate your infrastructure
Chef - industrialize and automate your infrastructure
 
Advanced workflows
Advanced workflowsAdvanced workflows
Advanced workflows
 
From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011From Dev to DevOps - Apache Barcamp Spain 2011
From Dev to DevOps - Apache Barcamp Spain 2011
 

More from Sebastian Helzle

Neos CMS & SEO - The Next Level - NeosCon Dresden 2019
Neos CMS & SEO - The Next Level - NeosCon Dresden 2019Neos CMS & SEO - The Next Level - NeosCon Dresden 2019
Neos CMS & SEO - The Next Level - NeosCon Dresden 2019Sebastian Helzle
 
SEO with NeosCMS - Meet Neos Salzburg 2018
SEO with NeosCMS - Meet Neos Salzburg 2018SEO with NeosCMS - Meet Neos Salzburg 2018
SEO with NeosCMS - Meet Neos Salzburg 2018Sebastian Helzle
 
Semantic data in TYPO3 - T3CON18EU
Semantic data in TYPO3 - T3CON18EUSemantic data in TYPO3 - T3CON18EU
Semantic data in TYPO3 - T3CON18EUSebastian Helzle
 
Continuous relaunch – die einzige konstante ist die Veränderung
Continuous relaunch – die einzige konstante ist die VeränderungContinuous relaunch – die einzige konstante ist die Veränderung
Continuous relaunch – die einzige konstante ist die VeränderungSebastian Helzle
 
Conceptual understanding in development
Conceptual understanding in developmentConceptual understanding in development
Conceptual understanding in developmentSebastian Helzle
 
Improving conceptual understanding in development
Improving conceptual understanding in developmentImproving conceptual understanding in development
Improving conceptual understanding in developmentSebastian Helzle
 
Improving editors' lives with Neos CMS
Improving editors' lives with Neos CMSImproving editors' lives with Neos CMS
Improving editors' lives with Neos CMSSebastian Helzle
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsSebastian Helzle
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source toolsSebastian Helzle
 

More from Sebastian Helzle (11)

Neos CMS & SEO - The Next Level - NeosCon Dresden 2019
Neos CMS & SEO - The Next Level - NeosCon Dresden 2019Neos CMS & SEO - The Next Level - NeosCon Dresden 2019
Neos CMS & SEO - The Next Level - NeosCon Dresden 2019
 
SEO with NeosCMS - Meet Neos Salzburg 2018
SEO with NeosCMS - Meet Neos Salzburg 2018SEO with NeosCMS - Meet Neos Salzburg 2018
SEO with NeosCMS - Meet Neos Salzburg 2018
 
Semantic data in TYPO3 - T3CON18EU
Semantic data in TYPO3 - T3CON18EUSemantic data in TYPO3 - T3CON18EU
Semantic data in TYPO3 - T3CON18EU
 
Continuous relaunch – die einzige konstante ist die Veränderung
Continuous relaunch – die einzige konstante ist die VeränderungContinuous relaunch – die einzige konstante ist die Veränderung
Continuous relaunch – die einzige konstante ist die Veränderung
 
Neos CMS and SEO
Neos CMS and SEONeos CMS and SEO
Neos CMS and SEO
 
Ci & proServer
Ci & proServerCi & proServer
Ci & proServer
 
Conceptual understanding in development
Conceptual understanding in developmentConceptual understanding in development
Conceptual understanding in development
 
Improving conceptual understanding in development
Improving conceptual understanding in developmentImproving conceptual understanding in development
Improving conceptual understanding in development
 
Improving editors' lives with Neos CMS
Improving editors' lives with Neos CMSImproving editors' lives with Neos CMS
Improving editors' lives with Neos CMS
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 

Recently uploaded

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 

Recently uploaded (20)

SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 

Create Better Websites with Neos Recipes

  • 1. TASTY NEOS RECIPES FOR EVERY DAY CREATE BETTER WEBSITES WITH NEOS SEBASTIAN HELZLE - INSPIRING CON 2016
  • 2. 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
  • 3. 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
  • 4. TASTY NEOS RECIPES FOR EVERY DAY - INTRODUCTION AGENDA ▸ A look into the past ▸ Improvements ▸ New recipes ▸ ??? ▸ Become a Neos chef
  • 6. 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!
  • 7. 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!
  • 8. 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“
  • 10. 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'
  • 11. 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;
  • 12. 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
  • 14. 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
  • 15. 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>
  • 16. 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'
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. TASTY NEOS RECIPES FOR EVERY DAY - NEW RECIPES COMPRESS HTML ▸ Use the Neos package flownative/neos-compressor ▸ Removes whitespace, line endings, etc…
  • 21. 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>
  • 22. 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'
 }
 }

  • 23. 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 "FooBarViewHelpers" http://neos.readthedocs.org/en/2.1/ExtendingNeos/CustomViewHelpers.html
  • 24. 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'
 }
 }
  • 25. 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
  • 27. 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
  • 28. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 34. @SEBOBO FEEL FREE TO CONTACT ME