translated into english lobacher. · 2014-04-26 roland schenke head of web development translated...

276
2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

Upload: others

Post on 23-Mar-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

2014-04-26

Roland SchenkeHead of Web Development

translated into english

Patrick Lobacher LOBACHER.

TYPO3 Neos 1.0.2The Compendium

Page 2: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Feedback requested !• Dear Neos Enthusiast!I try to keep the TYPO3 Neos Compendium on an up-to-date Level. To achieve this I need your Input! If you have ideas regarding Code Examples, FAQ Entries or just want to praise or criticize please do not hesitate to contact me at the following address: patrick [AT] lobacher.de Have fun with the Compendium!Patrick Lobacher & Roland Schenke

Feedback

2

Page 3: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Changelog

Changelog

Date Changes2013-08-08 Initial Version / Thanks to Christian Schwerdt for domainFACTORY specific Input

2013-08-09 included proof corrections by Roland Schenke and Michael Oehlhof - Thanks!

2013-08-10 added Nginx-Config - Thanks to Christian Kuhn, Christian Müller and Anja Leichsenring

2013-08-10 added Troubleshoot Section

2013-08-18 included proof corrections by Roland Schenke - Thanks!

2013-08-18 translated from german into english by Roland Schenke - Thanks a lot!

2013-12-12 updated to TYPO3 Neos 1.0 final

2013-12-15 updated to TYPO3 Neos 1.0.1

2014-01-07 Link for the installation under Shared Hosting and proof corrections (Thanks to Christian Glass!)

2014-03-03 migrated to „LOBACHER.“ CI

2014-03-05 updated to TYPO3 Neos 1.0.2

2014-03-07 added installation on a all-inkl.com Server. Thanks to Mario Janetzko!

3

Page 4: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Changelog

Changelog

Date Changes2014-04-26 He did it again! Many thanks to Roland Schenke for updating the english translation to Neos 1.0.2!!!

4

Page 5: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

What is TYPO3 Neos?

5

Page 6: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3 Neos - the next generation CMS

6

Page 7: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3 Neos - the next generation CMS

http://neos.typo3.org/download/marketing-material.html

7

Page 8: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3 Neos - the next generation CMS

8

Page 9: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3 Neos - the next generation CMS

Neos (greek νέος) is just “new”

9

Page 10: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The History of TYPO3 Neos starts with TYPO3 CMS !• TYPO3 CMS is a „Enterprise Open Source

Content Management Framework“ • TYPO3 CMS exists since 1998 / invented by the Dane Kaspar Skårhøj • approx. 500.000 Installations worldwide / > 5 Mio Downloads • Usage in DE e.g. at > 50% all DAX 500 Enterprises, > 50% all „German

Soccer League“ Clubs, discounter, car rentals, public agencies • > 6.000 Extensions • > 100.000 Developers worldwide • > 1500 Agencies worldwide • funded and backed by the TYPO3 Association

The History of TYPO3 Neos starts with TYPO3 CMS

10

Page 11: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The History of TYPO3 Neos: TYPO3 Phoenix !• At the very first T3DD (TYPO3 Developer Days) in 2006, the decision

was made to rewrite TYPO3 from scratch. • Codename: TYPO3 Phoenix (resp. TYPO3 5.0) • some necessary PHP Features were not available at this time and had

to be implemented from the ground up: Content Respository, Aspect Oriented Programming, Dependency Injection, ...

• The "Berlin Manifesto" of 2008 states the differentiation to the TYPO3 CMShttp://typo3.org/roadmap/berlin-manifesto/(In the meantime Parts of the manifesto became obsolete.)

The History of TYPO3 Neos: TYPO3 Phoenix

11

Page 12: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The History of TYPO3 Neos: TYPO3 Flow and Ne0s

• Many base functionalities of a CMS are not specific to a CMS (Session-Handling, Datenbank-Handling, Templating, ...) => therefore outsourcing into an own Framework TYPO3 Flow

• The introduction of Extbase in 2009 made it possible to write TYPO3 CMS extensions which are executable in TYPO3 Flow with minor adjustments

• On 20 October 2011 the Application Framework TYPO3 Flow (once FLOW3) has been released as Final

• TYPO3 Neos ist an Application based on TYPO3 Flow • TYPO3 Neos Alpha 7 in October 2013 / Beta 1 on Nov. 12, 2013 • First final Version on 10 December 2013

The History of TYPO3 Neos: TYPO3 Flow and Ne0s

12

Page 13: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Version History TYPO3 Neos

The History of TYPO3 Neos: TYPO3 Flow and Ne0s

Version DatumTYPO3 Phoenix Sprint Release 1 2010-05-31

... ...TYPO3 Phoenix Sprint Release 9 2012-08-02

TYPO3 Neos alpha 1 2012-10-05TYPO3 Neos alpha 2 2012-12-19TYPO3 Neos alpha 3 2012-02-16TYPO3 Neos alpha 4 2013-07-07TYPO3 Neos alpha 5 2013-08-07TYPO3 Neos alpha 6 2013-10-15TYPO3 Neos alpha 7 2013-10-30TYPO3 Neos beta 1 2013-11-12TYPO3 Neos beta 2 2013-12-03

TYPO3 Neos 1.0 final 2013-12-10TYPO3 Neos 1.0.1 2013-12-13

13

Page 14: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The TYPO3 World - since October 2012

• Umbrella Brand TYPO3

• TYPO3 CMS(no distinct Logo)

• TYPO3 Flow • TYPO3 Neos

The History of TYPO3 Neos: Die TYPO3 World

14

Page 15: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3 Neos: Positioning

• Since December 2013 two independent CMS are offered by TYPO3: • TYPO3 CMS 6.x (4.7, 6.0, 6.1, 6.2 LTS Beta) • TYPO3 Neos 1.0

• from a technology point of view they share NOTHING but the name and are as different as different can be

• There are NO migration paths from one system to the other • TYPO3 Neos is NOT the successor of TYPO3 CMS,

but a self-contained CMS with a different focus

The History of TYPO3 Neos: Die TYPO3 World

15

Page 16: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

The Architecture of TYPO3 Neos

16

Page 17: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The Architecture of TYPO3 Neos - Backend !

The Architecture of TYPO3 Neos - Backend

FluidModern Templating Engine

TYPO3CRContent Repository ( JCR / Sling)TypoScriptTypoScript 2.0 - next Generation

FormsForm API & Form Builder ExposeExtensible admin interfaceEelEmbedded Expression Language

FlowQuery

17

Page 18: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The Architecture of TYPO3 Neos - Frontend !

The Architecture of TYPO3 Neos - Frontend

EmberJSJavaScript Web Application Framework

Create.jsWeb Editing Interface Aloha / HalloHTML5 WYSIWYG Editor

VIE = viejs.orgSemantic Interaction FrameworkRequireJSJavaScript file and module loader

18

Page 19: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Installation of TYPO3 Neos

19

Page 20: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Requirements of TYPO3 Neos !

• Webserver (recommended: Apache 2.x with activated mod_rewrite Module) • PHP 5.3.7 - 5.4.x (the bare minimum PHP 5.3.2 might cause problems) • following funktions must be activated and allowed in PHP: system(), shell_exec(),

escapeshellcmd() und escapeshellarg() • php.ini: memory_limit = 256M or higher • php.ini: xdebug.max_nesting_level = 500 (in case xdebug is used) • php.ini: add the following Options to the end of the file: detect_unicode = Off • php.ini: additionally Magic_Quotes must be deactivated: magic_quotes_gpc = Off • php.ini: the command line of Flow requires a timezone definition:

date.timezone= "Europe/Berlin" (or applicable)

Requirements of TYPO3 Neos

20

Page 21: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Requirements of TYPO3 Neos !

• It is important that the CLI Version of PHP is at least version 5.3.7 as well (and has the appropriate and mentioned settings) - one can check the version with the following commandphp --version

• MySQL 5.1.50 - 5.x.x (as an example - basically every Doctrine DBAL compatible database can be used)

• root access to the commandline / shell

Requirements of TYPO3 Neos

21

Page 22: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Directory Structure

• Directory structure where the installation is meant to occur. /path/to/Webserver |-TYPO3-Neos |---Build |---... |---Web (Document Root)

• All Neos-Files are in the directory TYPO3-Neos (this will be added by „Composer“ in the next steps.)

• There will be no distinction between Core and UserSpace (like TYPO3 CMS) • The Document Root is to be mapped to /path/to/Webserver/TYPO3-Neos/Web

Installation of TYPO3 Neos - Directory Structure

22

Page 23: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Composer

• Installation is done via „Composer“ (Dependency Manager for PHP) - that‘s the shell access for cd /pfad/zum/webserver/ curl -sS https://getcomposer.org/installer | php

• This creates the composer.phar file in the current directory • If one would like to use Composer system wide, it can be copied or

moved (this will be assumed in the following) mv composer.phar /usr/local/bin/composer

Installation of TYPO3 Neos - Composer

23

Page 24: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Composer

• Download TYPO3 Neos via Composer (one single line!):php /path/to/composer.phar create-project typo3/neos-base-distribution TYPO3-Neos

• This takes care of the Installation of TYPO3 Flow, Neos and necessary Modules (incl. 3rd Party like Doctrine 2, Aloha, ...)

• Afterwards one gets directory named TYPO3-Neos, which holds the latest version of Neos

• The installation of Composer under Windows is covered here: http://getcomposer.org/doc/00-intro.md#installation-windows

Installation of TYPO3 Neos - Composer

24

Page 25: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

[Alternative:] use archives

• the latest version is offered to download on sourceforge as zip, tar.gz and tar.bz2: http://sourceforge.net/projects/typo3flow/files/TYPO3%20Neos/1.0.1/

Installation of TYPO3 Neos - use archives

25

Page 26: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

[Alternative:] use git version of TYPO3 Neos

• cloning the latest version of TYPO3 Neos via git: git clone git://git.typo3.org/Neos/Distributions/Base.git TYPO3-Neos && cd TYPO3-Neos subsequently these dependencies have to be loaded:

composer install --dev

Installation of TYPO3 Neos - GIT Version

26

Page 27: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - rights & VirtualHost

• This console command sets the filesystem rights: cd TYPO3-Neos sudo ./flow flow:core:setfilepermissions shelluser wwwuser wwwgroup(additional Info: http://docs.typo3.org/flow/TYPO3FlowDocumentation/TheDefinitiveGuide/PartII/Installation.html#file-permissions)

• shelluser That is the User you‘re logged in on the shell with - can be found out with whoami

• wwwuser The group the Webserver Process runs with (see file httpd.conf) - under Mac OS X e.g. _www

• wwwgroup The group the Webserver Process runs with (see file httpd.conf) - under Mac OS X e.g. _www

Installation of TYPO3 Neos - rights & VirtualHost

27

Page 28: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - VirtualHost

• Virtual Host Entry (e.g. Apache) NameVirtualHost *:80 # if needed <VirtualHost *:80> DocumentRoot "/path/to/webserver/TYPO3-Neos/Web/" # during development this line should be kept # commented out, because this changes the Context to # „Production“ - meaning: no Logging, with Caching, ... Setenv FLOW_CONTEXT Production ServerName neos.demo </VirtualHost>

• Entry in /etc/hosts (e.g.: C:\windows\system32\drivers\etc\hosts)127.0.0.1 neos.demo

Installation of TYPO3 Neos - VirtualHost

28

Page 29: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup

• Call the Setup routinehttp://neos.demo/setup/

Installation of TYPO3 Neos - Setup

29

Page 30: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup

• The Password is located in the file at the path shown below. (remember!) /path/to/webserver/TYPO3-Neos/Data/SetupPassword.txt

Installation of TYPO3 Neos - Setup

The file containing the password is deleted afterwards.In case of Oblivion, i.e. it is forgotten, the file/path/to/webserver/TYPO3-Neos/Data/Persistent/FileBasedSimpleKeyService/SetupKey is to be deleted and setup called again.

30

Page 31: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup !• setup of the database • MySQL is preset • the driver can be changed by adjusting

the file:Configuration/Settings.yaml

• If 127.0.0.1 as „DB Host“ does notwork, try to enter localhost instead.

• you can choose between using an existing database or create a new one

Installation of TYPO3 Neos - Setup

31

Page 32: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup !• create an administrator account

• User Management provides the possibility for the creation of subsequent user

• that includes adding additional user data

• creation is also possible via console: ./flow typo3.neos:user:create username password firstname lastname

Installation of TYPO3 Neos - Setup

32

Page 33: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup !• one can import a demo site

(recommended)

• or start with a blank website

• as soon as somethingis entered into the form fields, a new site is created

Installation of TYPO3 Neos - Setup

33

Page 34: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos - Setup !• Once the installation cycle

succeeded, the corresponding advice appears

• You will find the documentation at http://docs.typo3.org/neos/

Installation of TYPO3 Neos - Setup

34

Page 35: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos

Installation of TYPO3 Neos - Setup The Frontend looks like the left-handed image, if the Demo-Site TYPO3.NeosDemoTypo3Org is imported !If an empty site has been created, the following screen is shown

35

Page 36: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation of TYPO3 Neos

Installation of TYPO3 Neos - Setup !Access to the Installation: !• Frontendhttp://neos.demo/ !

• Backend http://neos.demo/neos/ !

• Setuphttp://neos.demo/setup/

36

Page 37: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Installation on a domainFACTORY Server

37

Page 38: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !domainFACTORY Server require a slightly modified Installation !• Credits to: Christian Schwerdt (die Medienagenten oHG) !• An english manual can also be found here: https://github.com/cschwerdt/TYPO3-NEOS-Install

38

Page 39: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• load Composer

curl -s https://getcomposer.org/installer | /usr/local/bin/php5-53STABLE-CLI !• load TYPO3 Neos 1.0:

/usr/local/bin/php5-53LATEST-CLI composer.phar create-project --dev --stability alpha typo3/neos-base-distribution TYPO3-Neos-1.0.0

• Inside the domainFACTORY-Settings the Domain has to be configured to point to the /Web directory.

39

Page 40: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• change the PHP-Path inside the Flow-CLI

cd TYPO3-Neos-1.0 vi flow The first line has to be changed from#!/usr/bin/env php to the following: #!/usr/local/bin/php5-53STABLE-CLI Save with:!wq or choose any plain text editor you‘re familiar with

40

Page 41: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• adjusting Settings.yaml in Configuration/

cd Configuration/ cp Settings.yaml.example Settings.yaml vi Settings.yaml //set database host db: 'mysql5.<yourdomain.com>' //uncomment core: & phpBinaryPathAndFilename //and change phpBinaryPathAndFilename to: core: phpBinaryPathAndFilename: '/usr/local/bin/php5-53STABLE-CLI'save with::wq! !

41

Page 42: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• adjusting Settings.yaml in Development

cd Development/ cp Settings.yaml.example Settings.yaml vi Settings.yaml //set dbname, dbuser, dbpassword: dbname: '<dbname>' user: '<dbuser>' password: '<password>' save with::wq! !

42

Page 43: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• Flow Help

./flow help

• migrate Database./flow doctrine:migrate

• kickstart a SiteSyntax: ./flow site:kickstart [PackageKey] [SiteName]./flow site:kickstart Your.Demopage Your.Demopage

• list Sites./flow site:list !!

43

Page 44: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a domainFACTORY Server

Installation on a domainFACTORY Server !• add Neos Backend User

./flow user:create <username> <password> <firstname> <lastname>

• add Admin Userrole./flow user:addrole <username> Administrator

!• Finished :-) !

44

Page 45: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Installation on a all-inkl.com Server

45

Page 46: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a all-inkl.com Server

Installation on a all-inkl.com Server !On the servers of „ALL-INKL.COM - Neue Medien Münnich“ you have to follow a slightly different installation instruction.

• Credits to: Mario Janetzko (die Medienagenten oHG)

46

Page 47: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a all-inkl.com Server

Installation on a all-inkl.com Server !• Prior to installation the following steps have to executed !• open the file Bootstrap.php at /Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/

• add the following after namespace TYPO3\Flow\Core; <?php namespace TYPO3\Flow\Core; ini_set('date.timezone','Europe/Berlin'); ini_set('memory_limit','256M'); …

47

Page 48: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a all-inkl.com Server

Installation on a all-inkl.com Server !• comment out the lines 557 - 560 in the file Bootstrap.php OLD:if (version_compare(PHP_VERSION, '5.4', '<') && get_magic_quotes_gpc() === 1) { echo('Flow requires the PHP setting "magic_quotes_gpc" set to Off. (Error #1224003190)’); exit(1); } NEW:/* if (version_compare(PHP_VERSION, '5.4', '<') && get_magic_quotes_gpc() === 1) { echo('Flow requires the PHP setting "magic_quotes_gpc" set to Off. (Error #1224003190)’); exit(1); } */

48

Page 49: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Installation on a all-inkl.com Server

Installation on a all-inkl.com Server !• add the following lines to the file Web/index.php starting at

line 23:… require($rootPath . 'Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Core/Bootstrap.php'); putenv ("FLOW_REWRITEURLS=1"); putenv ("FLOW_CONTEXT=Production"); if (substr($_SERVER['HTTP_HOST'],0,4) === 'dev.') { putenv ("FLOW_CONTEXT=Development"); } $context = getenv('FLOW_CONTEXT') ?: (getenv('REDIRECT_FLOW_CONTEXT') ?: 'Development'); …

• The installation can be started now! 49

Page 50: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Troubleshoot FAQ / Help

50

Page 51: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

alternative methods of Installation and Supportplease note: some of the links might be in german! • TYPO3 Neos Vagrant Boxhttps://github.com/tlayh/vagrant-typo3neos

• TYPO3 Neos Installation on Mac OS X Snow Leopard and MAMPhttp://www.content-driven-ecommerce.de/typo3-neos-install/

• .git ignore Filehttps://git.typo3.org/Neos/Distributions/Base.git/blob/HEAD:/.gitignore

• Launchr (test TYPO3 Neos online)https://launchr.com/

• Mittwald Hosting - 30 days trial TYPO3 Neos Accounthttps://www.mittwald.de/neos-testen/

• Manual Installation by jweiland.nethttp://jweiland.net/typo3/neos/neos-installation/manuelle-neos-installation.html

Troubleshoot / FAQ / Help

51

Page 52: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

problems that may arise during installation • In the PHP log or on the console while issuing ./flow help or on the frontend an error

message which is similar to the following appears: • ...'"typo3eel" is not a valid package key...

Workaround: use a patched Composer file: http://downloads.sourceforge.net/project/typo3flow/patched-1147-composer.phar

• There is an error message which is similar to the following:...Class 'PHPUnit_Framework_Constraint' not found in... oder...imagine... (something refers / hints to imagine) Solution: Deletion of the PackageStates file rm Configuration/PackageStates.php

Troubleshoot / FAQ / Help

52

Page 53: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Nginx Config for TYPO3 Neos

53

Page 54: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• Credits to:

• Christian Kuhn • Christian Müller • Anja Leichsenring

54

Page 55: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• File /etc/nginx/sites-available/neos.demo (Domain assumed neos.demo)

# Upstream to abstract backend connection(s) for phpupstream neos.demo { server unix:/var/run/neos.demo_fpm.sock;} server { server_name neos.demo; root /path/to/webserver/TYPO3-Neos/Web; index index.php; error_log /path/to/webserver/TYPO3-Neos/logs/error_log; access_log /path/to/webserver/TYPO3-Neos/logs/access_log; ## Disable .htaccess and other hidden files location ~ /\. { deny all; access_log off; log_not_found off; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; }

55

Page 56: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• File /etc/nginx/sites-available/neos.demo (...continued...)

location /_Resources/ { access_log off; log_not_found off; expires max; break; } location /_Resources/Persistent/ { access_log off; log_not_found off; expires max; rewrite "(.{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break; rewrite "([a-z0-9]+/(.+/)?[a-f0-9]{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break; } ### # stop rewriting by existing files | is instead of -> location / { rewrite ".*" /index.php last; } # use this if you want to run other PHP-Applications in TYPO3-Flow/Web directory ### try_files $uri $uri/ /index.php?$args;

56

Page 57: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• File /etc/nginx/sites-available/neos.demo (...last part...)

location ~ \.php$ { fastcgi_index index.php; ### # for FLOW3 <= 1.1.x only | see note #15 on http://forge.typo3.org/issues/8923 ### # fastcgi_param FLOW3_CONTEXT Development; # fastcgi_param FLOW3_CONTEXT Production; # fastcgi_param FLOW3_REWRITEURLS 1; ###

# Make sure that you set the environment vars for new versions \ # of TYPO3-XXXXX(TYPO3-Neos) products properly # see note #15 on http://forge.typo3.org/issues/8923 ### fastcgi_param FLOW_CONTEXT Development; fastcgi_param FLOW_REWRITEURLS 1; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass neos.domain.tld; include /etc/nginx/fastcgi_params; } }

57

Page 58: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• File /etc/php5/fpm/pool.d/neos.demo.pool.conf [neos.demo] listen = /var/run/neos.demo.sock listen.owner = neos.demo listen.group = demo listen.mode = 0660 user = neos.demo group = demo pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 10 pm.max_requests = 200 request_terminate_timeout = 360s chdir = / php_admin_value[session.save_path] = "/path/to/webserver/TYPO3-Neos/sessions"# During installation this might not be sufficient, cleaned it up afterwards. # Neos mentions it, add it, restart php-fpm, go on. Sufficient for operation.php_admin_value[open_basedir] = "/path/to/webserver/TYPO3-Neos/:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php:/usr/bin/php"

58

Page 59: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Nginx Config for TYPO3 Neos

Nginx Config for TYPO3 Neos !• File Configuration/Settings.yaml TYPO3: Flow: persistence: backendOptions: dbname: ... user: ... password: ... host: 127.0.0.1 core: subRequestPhpIniPathAndFilename: /etc/php5/cli/php.ini !

59

Page 60: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Upgrade of TYPO3 Neos

60

Page 61: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Upgrade von TYPO3 Neos

Upgrade von TYPO3 Neos !lifting an existing 1.0 installation to the latest patch level can be achieved as follows:

cd /pfad/zum/webserver/ composer update --no-dev "typo3/*" # flush Cache! ./flow flow:cache:flush --force ./flow doctrine:migrate If necessary php composer.phar has to be used!

61

Page 62: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Upgrade of TYPO3 Neos

Upgrade of TYPO3 Neos !If there is an existing Neos, it can be updated to a given version quite comfortable using Composer: !cd /path/to/webserver/ composer require "typo3/neos:1.0.*" composer require "typo3/neos-nodetypes:1.0.*" composer require "typo3/neosdemotypo3org:1.0.*" composer require "typo3/neos-kickstarter:1.0.*" # flush Cache! ./flow flow:cache:flush --force ./flow doctrine:migrate If necessary php composer.phar has to be used!

62

Page 63: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Usage of Development Master

Usage of Development Master !If by all means one would like to use the latest (trunk in git lingo) TYPO3 Neos, one can switch to the Development Master cd /path/to/webserver/ composer update update database:./flow doctrine:migrate flush cache:./flow flow:cache:flush --force If necessary php composer.phar has to be used!

63

Page 64: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Virtual Machines

64

Page 65: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Virtual Machines

Virtual Machines !A few projects are offering virtual machines for TYPO3 Neos (and Flow):

• Vagrant (TYPO3 Neos / Flow oder CMS has to be installed yourself) https://github.com/swiftlizard/VagrantTYPO3

• Vagrant (TYPO3 Neos / Flow oder CMS has to be installed yourself) https://github.com/mrimann/VagrantTYPO3Flow

• fully working TYPO3 Neos https://launchr.com/typo3-neos

65

Page 66: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Release Notes

66

Page 67: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Release Notes

Release Notes TYPO3 Neos 1.0.1 (2013-12-13) !• [TASK] Update references in documentation • [BUGFIX] Handle inline loading of pages without metadata correctly • [BUGFIX] Use FQ TypoScript paths for lastVisitedNode functionality • [BUGFIX] Add a safeguard to the LIBXML_PARSEHUGE constant • [BUGFIX] Fix wrong type annotation that causes compilation problems • [BUGFIX] Fix built-in Menu TypoScript object template • [BUGFIX] Protypes don't use FQN • [BUGFIX] Correctly link the Neos logo with the NodeViewHelper !

• https://git.typo3.org/Packages/TYPO3.Neos.git/blob_plain/e87653620afa44112fc8b32414c9d90d464b3b00:/Documentation/Appendixes/ChangeLogs/101.rst

67

Page 68: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Release Notes

Release Notes TYPO3 Neos 1.0.2 (2014-03-04) - Part 1 TYPO3.Neos • [TASK] Update references in documentation • [BUGFIX] Secondary inspector is rendered outside viewport in FF • [BUGFIX] A better way of parsing the HTML of asynchronous page loads • [TASK] Optimize typical filter usages of EEL children operation • [BUGFIX] Default attributes property of menu TypoScript object • [BUGFIX] "node" used in label for create new dialog • [BUGFIX] Security policies in Neos are too strict • [BUGFIX] Link inceptor handling of local links • [BUGFIX] Node tree filter too wide in Firefox • [BUGFIX] Sites management module widget action button • [TASK] Improve usability of position menus in navigate component • [BUGFIX] Title missing for paste/new buttons in navigate component • [BUGFIX] Shortcut to siteroot has no active state • [TASK] Fix minor errors in documentation • [!!!][BUGFIX] Only accepts URLs with the configured URI suffix • [BUGFIX] YAML indention and typo in integrators cookbook • [TASK] Fix various CGL violations • [BUGFIX] Opacity of datetime editor inspector field • [TASK] Add missing grunt-trimtrailingspaces dependency

68

Page 69: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Release Notes

Release Notes TYPO3 Neos 1.0.2 (2014-03-04) - Part 2 • [FEATURE] Reworked MenuImplementation • [TASK] Minor coding fixes for users management module • [BUGFIX] Remove obsolete route that might break routing • [TASK] Fix Page documentation in TS reference • [BUGFIX] Correctly rename site root nodes • [BUGFIX] Menu section collapse arrow styling • [BUGFIX] Headline alignment is not persisted • [BUGFIX] Shortcut rendering is broken in combination with layout • [BUGFIX] Dateselector should do "previous" too

TYPO3.TYPO3CR !• [BUGFIX] Node references do not respect context workspace • [BUGFIX] Prevent database error with too long index • [BUGFIX] materialize NodeData in removeProperty() • [TASK] Fix wrong hint in method docblock !TYPO3.TypoScript • [BUGFIX] isEven & isOdd not supported in TYPO3.Neos:ContentCollection

69

Page 70: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Features of TYPO3 Neos

70

Page 71: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos

• most extensible Enterprise CMF - Content Management Framework • based on the stable TYPO3 Flow Framework, already available in Version 2.0 • easy und flexible Content Export/Import (until now only via command line) • Multi-Domain Support • state-of-the-art Technology und Paradigms under the hood (DDD, AOP, RequireJS,

EmberJS, ...) • Intuitive User Interface • Wireframe Mode - Content-Editing without Template • web based Package Management

Features of TYPO3 Neos

71

Page 72: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos

• In-place Content-Editing • own Content Elements (incl. In-place Content-Editing) easily possible • Integration of TYPO3 Flow Applications as Plugins (packages) • TypoScript2 / Eel / FlowQuery • Workspaces (currently no multi user capabilities) • Custom Single-Sign-On / Custom Authentification through custom plugins • Audit Logging • TYPO3 Surf for the automatic Deployment (Integration with CI Server like Jenkins)

Features of TYPO3 Neos

72

Page 73: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

so far missing features !

• Web based Installer (currently needs command line with Root Access) • Multilingualism (Content & User Interface) • User / Roles without Admin Rights (Editors, well there is an„Editor User“, but so far

it’s just a a „Non-Admin“) • User Rights / User Groups • ACLs (Access Control Lists) • Public Extensions (no Package Repository yet) • Shared Workspaces • Versioning (UI-Interface) • Non-Core-Features: News, connection to 3rd-Party-Systems, Slider, SSL, Google

Analytics Integration, ... • REST

Features of TYPO3 Neos

73

Page 74: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

so far missing features !

• Logs (User, Admin, ...) • SEO-Features (page properties: noindex, nofollow, keywords,

description, canonical, ...) • proper RWD-Interface (Interface only works at approx. 1000px

and bigger) • RWD-Rendering of Images (responsive web design) • Digital Asset Management (there’s no media browser) • Form Designer (currently one can only choose programmatically

prepared forms) • Content Synchronization and Syndication • Admin Interface to edit arbitrary records • ...

Features of TYPO3 Neos

74

Page 75: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Structure of the Neos user interface

75

Page 76: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Login

76

Page 77: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Structure of the Admin-InterfaceOperations Menu

Page Browser(pagetree)

User-AdministrationLogout and Settings

PublishPublish, possibility of „auto publishing“ when clicking on the arrow

Inspectorcontent specific properties like page properties or the like

Preview ModeDisplay of howthe page would look live

Preview Centrale.g. display without design

structuralview

Apply

77

Page 78: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Properties Panelselected elemente.g. Headline, Content-Collection, Page, ...

Propertiescontext sensitiveproperties, e.g. page properties and the like

78

Page 79: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

operations menu

Contentswitch between the different sitesWorkspacesMedia BrowserUser Management Package ManagementSites Management

79

Page 80: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

administration of Workspaces Publish Discard

selection of single

changes

declaration of

Node Type

type of change

80

Page 81: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

administration of Workspaces

Pages that contain modifications are marked orange

81

Page 82: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

user administrationEdit Delete

RoleView

addnew user

82

Page 83: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

user administration - new userTo add a new user simply provide username, password and personal data. Additionally the Role (Admin or Editor) is chosen.

83

Page 84: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

User Administration - editing

Here userdata can be edited and extended with a title or an alias. !Additionally one can add an arbitrary amount of "electronic addresses" like Email addresses, Skype, etc. !By chosing "primary" one selects the main address.

84

Page 85: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

User Administration - InfoThe „Info“ Function gives an overview of all entered data.

A Click on „Delete“ opens a Lightbox, in which the requested action is confirmed and the user warned

about the result.

85

Page 86: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Package AdministrationDelete

Deactivate& Activate

Freeze& Unfreeze

select

actionson the

selection

86

Page 87: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Site Administration Overview

DeleteDeactivate& Activate

Edit

Add new SiteStatus of this Site

87

Page 88: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Site Administration - Editingdeactivate

Domain

delete Domain

edit Domain

addDomain

88

Page 89: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Raw Content Mode - Display of the Elements without Design

89

Page 90: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Preview Central - alternative displays

90

Page 91: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Pagetree

double click to change page title

filter the pagetree by Type (Page, Shortcut, …)

Drag&Dropto move Page

click on the page title to view the page in the

preview to the right

refresh

delete theselected page

insert (inside)

Cut

edit page title

toggle visibility

copy page

search in pagetree

add new page

91

Page 92: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

structure tree

The structure tree lists all elements (visible and hidden) of the current page hierarchically.The same Icons for functions like „New“, „Hide“, „Copy“ are available here as well.A click on the Heading opens its properties in the inspector to the right and places the InPlace-Editor appropriately.

92

Page 93: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Content-Funktionenadd new Content Element after the

selected

copyContent Element

deleteContent Element

hideContent Element

cutContent Element

„Insert“ appears as soon as one clicks „Copy“ or „Cut“

93

Page 94: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

Content Functions

addLink

addTable

add(format free) Clipboard

self-explanatory? ;-)

Paragraph Styles

94

Page 95: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features of TYPO3 Neos - Screenshots

add a Content Element

95

Page 96: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Multi-Column Content Elements

96

Page 97: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

choose forms

97

Page 98: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Media Browser

Tagging

Upload View

tag a file by drag&drop it onto

the tag

98

Page 99: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Media Browser

Meta Data

Actions

99

Page 100: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Image Handling UploadMedia-Browser

Crop

100

Page 101: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Features von TYPO3 Neos - Screenshots

Cropping (unobstrusive)

101

Page 102: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Internals of TYPO3 Neos

102

Page 103: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node Structure !

• TYPO3CR Node • Node Name

(serves as Identification) • Node Type

(e.g. Document, Folder, AbstractNode, Content, ContentCollection...)

• Properties(dependent on NodeType)

• easily extendible and easily configurable

Page

Content Section

Content Element

Site root

TYPO3 Neos Internals: Node Structure

Domain Model

103

Page 104: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node Type !• each TYPO3CR Node has a so-called

Node Type

• Node Types are declared in each Package by defining them in the file Configuration/NodeTypes.yaml

• Each Node Type can have one or more parent types. If specified, all properties and settings of the parent types are inherited

TYPO3 Neos Internals: Node Type

http://docs.typo3.org/neos/TYPO3NeosDocumentation/IntegratorGuide/ContentStructure.html#nodes-inside-the-typo3-content-repository

104

Page 105: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

predefined Node Types: !• TYPO3.Neos:Node

This is the base type that should be extended by all Content-Types that are used in the Context of TYPO3 Neos. There are no properties whatsoever.

• TYPO3.Neos:Document An important differentiation is made between Nodes that act (and look) as a Page and „normal content“ like Text that is rendered on a page. Nodes that act like a page are called „Document Nodes“ in Neos which, for instance, have a unique and publicly visible URL in Neos. The default Page within Neos is implemented by the Node Type TYPO3.Neos.NodeTypes:Page which is directly extended from TYPO3.Neos:Document.

TYPO3 Neos Internals: Node Type

105

Page 106: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

predefined Node Types: !• TYPO3.Neos:ContentCollection and TYPO3.Neos:Content

Any content that acts as a page and resides in such a node is implemented through two different Node Types:

• TYPO3.Neos:ContentCollection typeThis Node Type serves structuring and usually does not contain any properties, but an ordered list of sub-nodes instead which are rendered inside this node. Currently one should not extend from this type when defining own node types.

• TYPO3.Neos:Content This is the node type for all standard elements like „text“, „image“, „youtube“, ...

TYPO3 Neos Internals: Node Type

106

Page 107: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node Access !

• Access to the Nodes is happens through „NodePaths“ • Each Page is a node, so is every element on that page.

TYPO3 Neos Internals: Node Zugriff

/sites/typo3org/home/subpage/main/text1

content

section

pages

site root

107

Page 108: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript !• TypoScript is a hierarchic, object oriented and

prototype based processing language • Is used by Neos for flexible rendering of content • Objects are e.g. Array, Collection, Case, Menu, Page, Template, Plugin,

Value, ... • Objects have properties that „configure“ the object • TypoScript has access to the respective „Context“ (e.g. pagetree of the

Object „menu“ oder page properties of the object „page“) • There are "processors" that can change the value of properties (similar to

the stdWrap functions of TYPO3 CMS) !

TYPO3 Neos Internals: TypoScript

108

Page 109: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Fluid Template <!DOCTYPE html> {namespace neos=TYPO3\Neos\ViewHelpers} {namespace ts=TYPO3\TypoScript\ViewHelpers} <html> <head> <f:section name="stylesheets"> <!-- put your stylesheet inclusions here, they will be included in your website by TypoScript --> </f:section> <f:section name="scripts"> <!-- put your scripts inclusions here, they will be included in your website by TypoScript --> </f:section> </head> <body> <f:section name="body"> <nav class="menu"> {parts.menu -> f:format.raw()} </nav> <nav class="breadcrumb"> {parts.breadcrumb -> f:format.raw()} </nav> <div class="content"> {content.main -> f:format.raw()} </div>

TYPO3 Neos Internals: TypoScript - Fluid Template

109

Page 110: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Example - Part 1 include: NodeTypes/Carousel.ts2 namespace: TypoScript=TYPO3.TypoScript /** * Root TypoScript template for the Neos website */ page = Page { head { stylesheets.site = TypoScript:Template { templatePath = 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/Page/Default.html' sectionName = 'stylesheets' } ! metadata = TypoScript:Template { templatePath = 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/Page/Default.html' sectionName = 'metadata' } ! titleTag { // Overwrite the title tags content with a collection to create a breadcrumb content = TYPO3.TypoScript:Collection { // Retrieve all parent document nodes excluding the homepage collection = ${q(documentNode).add(q(documentNode).parents()).slice(0, -1).get()} itemName = 'node' iterationName = 'nodeIterator' // Implode node titles with a dash

TYPO3 Neos Internals: TypoScript - Example - Part 1

110

Page 111: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Example - Part 2 !// This query checks if the second level menu has items and sets an additional class for the body bodyTag.attributes.class = ${q(node).parents().count() >= 1 && q(node).children('[instanceof TYPO3.Neos:Document]').filter('[_hiddenInIndex=false]').count() > 0 ? 'has-subpages' : ''} ! body { templatePath = 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/Page/Default.html' sectionName = 'body' ! parts { mainMenu = Menu { entryLevel = 1 templatePath = 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/TypoScriptObjects/MainMenu.html' maximumLevels = 3 }

secondLevelMenu = Menu { entryLevel = 2 templatePath = 'resource://TYPO3.NeosDemoTypo3Org/Private/Templates/TypoScriptObjects/SecondLevelMenu.html' maximumLevels = 1 }

TYPO3 Neos Internals: TypoScript - Example - Part 2

111

Page 112: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Processors • Beispiel:myObject = MyObject { property = 'Rocky' [email protected] = ${'My ' value + ' is the best!'} }

# results in 'My Rocky is the best!'

• can also be written as:myObject = MyObject { property = 'some value' [email protected] { expression = ${'before ' + value + ' after'} @position = 'start' } }

• Processor are Eel Expressions or TypoScript Objects, which are applied to the value of the context. The current Object can be accessed via this.

TYPO3 Neos Internals: TypoScript - Prozessoren

112

Page 113: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Eel - Embedded Expression Language • While TypoScript contains Assignments and Processors, with Eel one can form expressions

in the style of myObject.foo = ${q(node).property('bar')} • The Embedded Expression Language (Eel) is a component to create

Domain Specific Languages (DSL). • Eel provides a comprehensive Syntax to create arbitrary expressions, so the author of the

DSL can focus on the semantics${foo.bar} // Traversal ${foo.bar()} // Method call${foo.bar().baz()} // Chained method call${foo.bar("arg1", true, 42)} // Method call with arguments${12 + 18.5} // Calculations are possible${foo == bar} // ... and comparisons${foo.bar(12+18.5, foo == bar)} // everything combined${[foo, bar]} // Array Literal${{foo: bar, baz: test}} // Object Literal

TYPO3 Neos Internals: Eel - Embedded Expression Language

113

Page 114: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery • FlowQuery is a kind of jQuery for TYPO3 Flow • FlowQuery provides a way to process content (which is a TYPO3CR Node in Neos) with Eel • There are operations in FlowQuery: • property

access to the properties of a node • filter

filter expressions in „Fizzle“ • children

returns all children of a TYPO3CR Node • parents

returns all parents of a TYPO3CR Node • additional operations: add, count, first, get, is, last, ...

TYPO3 Neos Internals: FlowQuery

114

Page 115: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - Examples • amount of comments = amount of child elements of the current node whose name is

"comments", having a property "spam" set to "false"numberOfComments = ${q(node).children('comments').children("[spam = false]").count()}

• breadcrumb menu = current page + all parent pages prototype(TYPO3.Neos:Breadcrumb) < prototype(TYPO3.TypoScript:Template) { templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/BreadcrumbMenu.html' node = ${node} items = ${q(node).add(q(node).parents('[instanceof TYPO3.Neos:Document]'))} } {namespace neos=TYPO3\Neos\ViewHelpers} <f:if condition="{items}"> <ul class="breadcrumbs"> <f:for each="{items}" as="item" reverse="TRUE"> <f:if condition="{item.hiddenInIndex} == 0">

<li> <neos:link.node node="{item}">{item.label}</neos:link.node> </li> </f:if> </f:for>

TYPO3 Neos Internals: FlowQuery - Examples

115

Page 116: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

technical details TypoScript

116

Page 117: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript 2.0 - Overview

• because of the usage of TypoScript in TYPO3 CMS, TypoScript in TYPO3 Neos (and so in TYPO3 Flow) is referred to as TypoScript 2.0

• ultimately both versions merely share the name as they are implemented differently and therefore incompatible among each other

• TypoScript is exclusively used for the rendering of content in the frontend (no more backend configuration as known before by TSconfig)

• TypoScript is hierarchic, because it renders hierarchic content • TypoScript ist prototype based (like JavaScript), as it allows to change the properties of

all instances at once • TypoScript is a processing language, because it processes the values in a context and

transforms it into a single return value

Technical Details - TypoScript

117

Page 118: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Objects

• TypoScript is a language to describe TypoScript Objects • A TypoScript Object has properties • TypoScript Objects have access to a „Context“, which in the end is a list of Variables • TypoScript transforms this Context by using the properties into some output • TypoScript can change this content internally and initiate the rendering of nested

objects (TypoScript Tree) • TypoScript objects are realized by PHP Classes which are instantiated at runtime. Here

one class can be the base of several different objects.

Technical Details - TypoScript

118

Page 119: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Objects

• Valid TypoScript would be like the following • Here TypoScript Paths are always noted in lowerCamelCase and Objects (Prototypes)

in UpperCamelCasefoo = Page my.object = Text my.image = TYPO3.Neos.ContentTypes:Image

• Value assignmentsfoo.myProperty1 = 'Some Property which Page can access'my.object.myProperty1 = "Some other property"my.image.width = ${q(node).property('foo')} !

• Values that describe strings have to be enclosed by quotation marks (single or double). Eel expressions are valid values as well.

Technical Details - TypoScript

119

Page 120: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Syntax

• One can note TypoScript in curly braces, i.e. the path before the opening brace is prepended to all paths inside the braces.my { image = Image image.width = 200 object { myProperty1 = 'some property' } }

• This is identical to the following Code my.image = Image my.image.width = 200 my.object.myProperty1 = 'some property' !

Technical Details - TypoScript

120

Page 121: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Object Instantiation

• Besides, it's possible to assign values at instantiation as shown in the third example (all examples act the same):someImage = Image someImage.foo = 'bar' someImage = Image someImage { foo = 'bar' } someImage = Image { foo = 'bar' }

Technical Details - TypoScript

121

Page 122: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript Objects are free of side-effects

• While TypoScript Objects can change their context they are free of side-effects.

• The context is "cleaned" after the usage of a TypoScript object, even if it has been altered before. !

• TypoScript objects can only alter nested TypoScript objects, but not objects "before" or "after" them

• So a TypoScript path in combination with its context always acts the same, no matter at which place it's called

Technical Details - TypoScript

122

Page 123: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Prototypes

• When a TypoScript Object is instantiated (because someone issuedsomeImage = Image), then the prototype of this object is copied and is used as the base of this new object (someImage).

• A Prototype is defined as followed: prototype(MyImage) { width = '500px' height = '600px'}

• Now one can use this object:# The Object someImage has a width of 500px and a height of600 px someImage = MyImage # Now the width is 100px (and the height stays at 600px)someImage.width = '100px'

Technical Details - TypoScript

123

Page 124: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Prototypes

• Prototypes are modifiable:

prototype(MyYouTube) { width = '100px' height = '500px'} # with this the width for all Instances # is changed to 400px prototype(MyYouTube).width = '400px' # One can also define new properties prototype(MyYouTube).showFullScreen = ${true}# Prototypen can also be „inherited“ prototype(MyImage) < prototype(TYPO3.Neos:Content)

Technical Details - TypoScript

124

Page 125: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Prototypes

• By Inheritance, prototypes are "bound" to each other. If one property changes in one instance, it is also changed in the other. prototype(TYPO3.Neos.Content).fruit = 'apple' prototype(TYPO3.Neos.Content).meal = 'dinner' # MyImage now has the properties "fruit = apple" and "meal = dinner"prototype(MyImage) < prototype(TYPO3.Neos:Content)# Because of MyImage *extending* the Object Template, # MyImage.fruit likewise has the value 'Banana'prototype(TYPO3.Neos:Content).fruit = 'Banana'

• # Because the property „meal“ is overwritten in the child class, # an overwriting in the parent class no longer has any effectprototype(MyImage).meal = 'breakfast' prototype(TYPO3.Neos:Content).meal = 'supper'

Technical Details - TypoScript

125

Page 126: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Prototypes

• Prototype inheritance is only possible on a global scope prototype(Foo) < prototype(Bar)

• therefore the following instructions would not be possibleprototype(Foo) < some.prototype(Bar) other.prototype(Foo) < prototype(Bar) prototype(Foo).prototype(Bar) < prototype(Baz)

Technical Details - TypoScript

126

Page 127: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Prototypes

• hierarchic TypoScript Prototypes # Set the property „bar“ (resp. „some.thing“) for all objects of type „Foo“prototype(Foo).bar = 'baz' prototype(Foo).some.thing = 'baz2' # Set the property „some“ for all objects of type „Foo“, which are inside the # path „some.path“ some.path.prototype(Foo).some = 'baz2' # Set the property „some“ for all objects of type „Bar“# which are inside of objects of type „Foo“ prototype(Foo).prototype(Bar).some = 'baz2' # combination of all possibilities above prototype(Foo).left.prototype(Bar).some = 'baz2'

Technical Details - TypoScript

127

Page 128: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Namespaces

• Namespaces can be used at declaration

# defines a Namespace „Acme.Demo“ for the prototype „YouTube“prototype(Acme.Demo:YouTube) { width = '100px' height = '500px' }

• This Namespace is by convention the package key of the package where the TypoScript resides

• Full Qualified Namespaces can be used:prototype(TYPO3.Neos:ContentCollection.Default) < prototype(TYPO3.Neos:Collection)

Technical Details - TypoScript

128

Page 129: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Namespaces

• By omitting a Namespace, the default Namespace TYPO3.Neos is used instead. • A Namespace directive can be used to create an own Namespace:namespace Foo = Acme.Demo # The following instructions are identicalvideo = Acme.Demo:YouTube video = Foo:YouTube

Technical Details - TypoScript

129

Page 130: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Properties

• Even though TypoScript objects can access the context directly, one should use properties# We assume a property in the current context# "foo=bar" myObject = MyObject # the value of the current context's variable "foo"# is explicitly assigned to the "foo" property of "myObject"myObject.foo = ${foo}

• Objects shall exclusively use own properties to generate Output

• Merely at prototype definition one can access the context directly: prototype(MyObject).foo = ${foo}

Technical Details - TypoScript

130

Page 131: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: manipulation of the context

• The TypoScript Context kann be manipulated directly by using the meta property @override:myObject = MyObject [email protected] = ${foo * 2}

• The above code creates an additional context variable with the name bar and the doubled value of foo. !!!!

Technical Details - TypoScript

131

Page 132: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Processors

• Processors allow to manipulate TypoScript properties: myObject = MyObject { property = 'some value' [email protected] = ${'before ' + value + ' after'}} # results in 'before some value after' !

!• usage of multiple processors is possible • The order follows the numerical position in the TypoScript (after @process). Following

above's example, @process.2 further processes the result of @process.1. !!

Technical Details - TypoScript

132

Page 133: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Processors • An extended Syntax can be used for processors myObject = MyObject { property = 'some value' [email protected] { expression = ${'before ' + value + ' after'} @position = 'start' } } # results in 'before some value after'

!• A name (here „someWrap“) can be used using this syntax. • Processors are Eel Expressions resp. TypoScript Objects which are applied to value of the

context. The current object can be accessed via this

Technical Details - TypoScript

133

Page 134: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Neos TypoScript Reference

134

Page 135: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Array (Part 1)

• renders the nested TypoScript Objects and concatenates its Output • the @position argument specifies the order of precedence • for this argument the following ranking order applies • start [priority]

The higher the priority the earlier the object is added. If there is no priority given, the element will be sorted after any elements with priority.

• [numeric ordering] Position (sorted ascending)

• end [priority] The higher the priority the later the object is added. If there is no priority given, the element will be sorted before any elements with priority.

Neos TypoScript - Reference

135

Page 136: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Array (Part 2)

• furthermore an element can be defined to be sorted before or after a specific element:

• before [namedElement] [optionalPriority]Adds this element before the element „namedElement“; in case of multiple statements the higher the priority, the more it will be placed before „namedElement“. Statements without priority will be placed furthest in front of the element. If „namedElement“ doesn’t exist, the element will be placed after all „start“ positions.

• after [namedElement] [optionalPriority] analogously to „before“, but the other way round („after namedElement“, „before all end positions“, …)

Neos TypoScript - Reference

136

Page 137: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Array (Part 3)(o = lower case letter / „order“) myArray = TYPO3.TypoScript:Array { o1 = TYPO3.Neos.NodeTypes:Text o1.@position = 'start 12' o2 = TYPO3.Neos.NodeTypes:Text o2.@position = 'start 5' o2 = TYPO3.Neos.NodeTypes:Text o2.@position = 'start' ! o3 = TYPO3.Neos.NodeTypes:Text o3.@position = '10' o4 = TYPO3.Neos.NodeTypes:Text o4.@position = '20' ! o5 = TYPO3.Neos.NodeTypes:Text o5.@position = 'before o6' ! o6 = TYPO3.Neos.NodeTypes:Text o6.@position = 'end' o7 = TYPO3.Neos.NodeTypes:Text o7.@position = 'end 20' o8 = TYPO3.Neos.NodeTypes:Text o8.@position = 'end 30' !

Neos TypoScript - Reference

137

Page 138: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Collection (Part 1)

• iterates on an Array-like „collection“ and renders each element through itemRenderer

Neos TypoScript - Reference

collection(array/iterable, required) The Array or the Iterable over which is iterated.

itemName(string, required) The name under which the element of the current iteration

can be accessed.

iterationName(string) Contains meta information of the Iteration: index (begins at

0), cycle (begins at 1), isFirst, isLast.

itemRenderer (nested TypoScript object)This TypoScript Object is called on each iteration and its result is concatenated.

138

Page 139: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Collection (Part 2)

myCollection = TYPO3.TypoScript:Collection { collection = ${[1, 2, 3]} itemName = 'element' itemRenderer = TYPO3.TypoScript:Template itemRenderer.templatePath = '...' itemRenderer.element = ${element} }

Neos TypoScript - Reference

139

Page 140: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Case !• Evaluates all nested Conditions until the first returns TRUE.

This acts like PHP’s switch/case structure and continues if myCase is equal to a specified type. „fallback“ is executed accordingly to PHP’s switch/case „default“. myCase = TYPO3.TypoScript:Case myCase { someCondition { condition = ${... some eel expression evaluating to TRUE or FALSE ... } type = 'MyNamespace:My.Special.Type' } fallback { condition = ${true} type = 'MyNamespace:My.Default.Type' } }

Neos TypoScript - Reference

140

Page 141: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Template (Part 1)

• renders a Fluid-Template, referenced through templatePath

Neos TypoScript - Reference

templatePath(string, required) the template, prefixed with e.g. resource://

partialRootPath(string) the path where the Partials can be found

layoutRootPath(string) the path where the Layouts can be found

sectionName (string) the Fluid Section <f:section> that is to be rendered (if such a section exists)

[variables] (any) all other strings are passed as variables to the View

141

Page 142: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Template (Part 2)myTemplate = TYPO3.TypoScript:Template { templatePath = 'resource://My.Package/Private/path/to/Template.html' someDataAvailableInsideFluid = 'my data' }

Neos TypoScript - Reference

142

Page 143: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TYPO3.TypoScript:Value

• this is a wrapper for a value myValue = Value { value = 'Hello World' }

Neos TypoScript - Reference

value(mixed, required) the value

143

Page 144: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Technical Details Eel

144

Page 145: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Eel - Embedded Expression Language

• next to easy TypoScript assignments like myObject.foo = 'bar' it‘s easy to form expressions like myObject.foo = ${q(node).property('bar')} using Eel.

• every Eel expression is noted by ${... • Eel is similar to JavaScript • Eel does not support variable assignments or control structures • Eel supports the usual JavaScript Operators for arithmetic and comparisons • Eel supports the ternary operator: <condition> ? <ifTrue> : <ifFalse> • as soon as Eel accesses an object property, the respective getter is called • object access via the offset notation is supported as follows: foo['bar']

Technical Details - Eel

145

Page 146: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Eel - examples

• the following are examples of valid expressions: • Eel itself does not define own functions or variables, instead it uses the Eel Context

Array where functions and objects, one would like to access, can be defined • Therefore Eel is perfect for the construction of a "domain specific language" which

defines the syntax, but does not provide the semantics of such a DSL • For Eel inside of TypoScript the semantics is defined as follows:

• all Variables of the TypoScript Context are accessible inside the Eel Context • the special variable this always points to the current TypoScript Object Implementation • there is a function q(), which wraps its arguments into a FlowQuery object

!

Technical Details - Eel

146

Page 147: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Eel - Sematic

• the following are examples of valid expressions:${foo.bar} // Traversal${foo.bar()} // Method call${foo.bar().baz()} // Chained method call${foo.bar("arg1", true, 42)} // Method call with arguments${12 + 18.5} // Calculations are possible${foo == bar} // ... and comparisons${foo.bar(12+18.5, foo == bar)} // everything combined${[foo, bar]} // Array Literal${{foo: bar, baz: test}} // Object Literal !

Technical Details - Eel

147

Page 148: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Technical Details FlowQuery

148

Page 149: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - jQuery for Flow

• FlowQuery represents the idea of jQuery for Flow and as such has been strongly inspired by it

• FlowQuery is a way to process content (which is a TYPO3CR Node inside of Neos)in an Eel Context

• FlowQuery Operations are implemented through PHP Classes • the respective package containing a specific FlowQuery Operation has to be installed • each Package can add its own FlowQuery Operations • the TYPO3.Eel Package contains a set of basic operations

Technical Details - FlowQuery

149

Page 150: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - Examples

• access a Context Variable${myContextVariable}

• access the current node${node}

• access node properties${q(node).getProperty('foo')} // possible, but not recommended ${q(node).property('foo')} // better: use FlowQuery

• assign to a variable text = ${q(node).property('text')}

Technical Details - FlowQuery

150

Page 151: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - Examples

• discover all parent nodes of a node${q(node).parents()}

• discover the first node inside a sub-node with the name „left“${q(node).children('left').first()} ${q(node).children().filter('left').first()}

• discover all parent nodes and add the current node${node.parents().add(node)}

• discover the amount of nodes whose children inside of „comments“ having a property „spam“ set to „false“:numberOfComments = ${q(node).children('comments').children("[spam = false]").count()}

Technical Details - FlowQuery

151

Page 152: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - add Operation (TYPO3.Eel)

• the add operation adds an additional flowQuery Object to the current

• Example:items = ${q(node).add(q(node).parents())} Here, the current node is determined and all parent nodes are added. This, for example, is used to create a breadcrumb navigation. It is achieved by the help of the statement above which provides a rootline of the nodes.

Technical Details - FlowQuery

152

Page 153: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - count Operation (TYPO3.Eel)

• The count operation returns the amount of objects (or Array items)

• Example:test.value = ${q(node).add(q(node).parents()).count()}The rootline is determined and enumerated by count() whose value is returned.

Technical Details - FlowQuery

153

Page 154: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - first Operation (TYPO3.Eel)

• the „first“ operation returns the first object

• Example:test.value = ${q(node).add(q(node).parents()) .first().property('title')}At first the rootline is determined, afterwards the first element is selected by first() and this element's property 'title' is returned. If there are two pages: Home > Compendium, then „Compendium“ is returned.

Technical Details - FlowQuery

154

Page 155: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - get Operation (TYPO3.Eel)

• If FlowQuery is used, the result is again a FlowQuery object. The get operation "frees" the result from the "Flow Query".

• Example:test.value = ${q(node).add(q(node).parents()).first().get(0)}The rootline is determined and by first() the first element is selected. Using get() the result is now transformed into an array (without it would be a FlowQuery object) and the first element is returned.If there are two pages: Home > Compendium, the following is returned:Node /sites/demo/homepage/Compendium[TYPO3.Neos:Page]

Technical Details - FlowQuery

155

Page 156: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - if Operation (TYPO3.Eel)

• checks if at least one of the elements in the current context matches a given filter

• Example:test.value = ${q(node).if('[instanceof TYPO3.Neos:Page]') ? 'Page' : 'No Page'} The if operator first checks if the current node is an instance of type TYPO3.Neos:Page (a normal page). If that is the case "Page" is returned otherwise "No Page".

Technical Details - FlowQuery

156

Page 157: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - last Operation (TYPO3.Eel)

• the last operation returns the last object

• Example:test.value = ${q(node).add(q(node).parents()) .last().property('title')}At first the rootline is determined, afterwards the last element is selected by last() and this element's property 'title' is returned. If there are two pages: Home > Compendium, then „Home“ is returned.

Technical Details - FlowQuery

157

Page 158: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - slice Operation (TYPO3.Eel)

• applies the „Slice“ Operation to a Set of Results

• Beispiel:${q(site).find('fr/blog').children('[instanceof Namespace.Plugin.Blog:Post]').slice()}${q(site).find('fr/blog').children('[instanceoNamespace.Plugin.Blog:Post]').slice(2)}${q(site).find('fr/blog').children('[instanceofNamespace.Plugin.Blog:Post]').slice(0, 2)}The last two statements return the two last blog posts.

Technical Details - FlowQuery

158

Page 159: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - property Operation (TYPO3.Eel)

• the property operation returns a property of an object • if the property begins with _ (an underscore), internal values are returned, e.g.: • _path (Node Path)

• _nodeType.name (Node Type)

• Example:test.value = ${q(node).property('_path')}returns the property „title“ of the current node.

Technical Details - FlowQuery

159

Page 160: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - children Operation (TYPO3.Eel)

• The children operation returns the child objects of the current object. Inside a page these are the sections or content areas.

• It is possible to a filter option: ...children('main')...

• Example:test.value = ${q(node).children().property('_path')}Ergebnis: /sites/demo/homepage/Compendium/compendium1/main

Technical Details - FlowQuery

160

Page 161: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

FlowQuery - filter Operation (TYPO3.Eel)

• The filter operation limits the result‘s set of objects. The filter expression is noted in Fizzle and supports the following operators: • = (equality) • $= (value ends with the operand) • ^= (value begins with the operand) • *= (value contains the operand) • instanceof (checks if the value is an instance of the operator)

• Example:test.value = ${q(node).children().filter('main'). first().property('_path')}Returns the property „_path“ of the first child node in the path „main“.

Technical Details - FlowQuery

161

Page 162: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Technical Details Fizzle

162

Page 163: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Fizzle • filter Operations (e.g. filter() in FlowQuery) are written in Fizzle • Property Name Filters • This can be the first part of a filter, like foo, foo.bar or foo.bar.baz

• Attribute Filter • baz[foo] • baz[answer = 42] • baz[foo = "Bar"] • baz[foo = 'Bar'] • baz[foo ^= "Bar"] • baz[foo $= "Bar"] • baz[foo *= "Bar"]

• Operators • = (equality) • $= (value ends with the operand) • ^= (value begins with the operand) • *= (value contains the operand) • instanceof (checks if the value is an instance of the operator)

Technical Details - Fizzle

163

Page 164: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Technical Details NodeTypes.yaml

164

Page 165: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Structure of the File: NodeTypes.yaml

• Each TYPO3CR Node (subsequently just named Node) has a specific Node Type.

• Configuration of Node Types is done via the Package’s (resp. the Site’s) Configuration/NodeTypes.yaml

• Each Node can has one or more parent types. All Properties and Settings are inherited from the parents.

Technical Details - NodeTypes.yaml

165

Page 166: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: the body of a node

• Start-Declaration of a Node:'Namespace.PackageName:NodeName': resp. 'Namespace.SiteName:NodeName':

• The Start-Declaration can have the following properties: • superTypes: • childNodes: • abstract: • ui: • properties: • validation:

Technical Details - NodeTypes.yaml

166

Page 167: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: superTypes

• This is an Array of parent nodes which the current node extends. 'Namespace.PackageName:NodeName': resp. 'Namespace.SiteName:NodeName':

• Examples:'My.Package:SpecialHeadline': superTypes: ['TYPO3.Neos:Content'] 'TYPO3.Neos:Document': superTypes: - 'TYPO3.Neos:Node' - 'TYPO3.Neos:Hidable'

Technical Details - NodeTypes.yaml

167

Page 168: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: childNodes

• A list of child nodes that are automatically added when a Node of this type is added. For each child node the respective node type has to be specified.

• Examples:childNodes: someChild: type: 'TYPO3.Neos:ContentCollection''TYPO3.NeosDemoTypo3Org:Carousel': superTypes: ['TYPO3.Neos:Content'] childNodes: carouselItems: type: 'TYPO3.Neos:ContentCollection'

Technical Details - NodeTypes.yaml

168

Page 169: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: ui

• available options for the Node Type’sUI-Representation

• label: The label that is shown

• group: Name of the group inside the „New Content Element“ Dialog, in which the Element is sorted. Possible default values are: general, structure, plugins(Packages/Application/TYPO3.Neos/Configuration/Settings.yaml)

• icon: Defines the Icon - The Range is restricted to „Font Awesome“ (http://docs.pagelines.com/tutorials/font-awesome) - e.g. icon-align-center

• inlineEditable: indicates if a direct interaction possibility with the node

Technical Details - NodeTypes.yaml

169

Page 170: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: ui

• available options for the Node Type’sUI-Representation

• inspector: configures the Inspector inside the NEOS UI for this Node Type • groups:

defines an Inspector Group, for grouping the settings later • label:

the Label for the Inspector Group • position:

declares the position of the Inspector Group - the lower the number, the higher its position (and vice versa)

Technical Details - NodeTypes.yaml

170

Page 171: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: properties

• Contains a list of named properties. For each of these properties the following settings apply.

• type: Defines the Datentype of the property. Possible values are Simple Type (PHP), an FQCN (Fully qualified class name), or one of the three special types: data, reference or references. Use „data“ for DateTime, for a reference to other Nodes „reference“ (for one) or „references (für many).

• defaultValue: Default Value

• validation: Declaration of the validation class (e.g. TYPO3.Neos/Validation/NotEmptyValidator) - incl. their options !!

Technical Details - NodeTypes.yaml

171

Page 172: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: properties

• Contains a list of named properties. For each of these properties the following settings apply.

• ui: • label:

the label that is shown • reloadIfChanged:

Angabe, ob das Elemente bei Änderungen neu gerendert wird • inlineEditable:

direct changes of the element are possible • aloha:

configures the options of the Aloha-Editor (which functions are permitted and which are not) !

Technical Details - NodeTypes.yaml

172

Page 173: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: properties

• Contains a list of named properties. For each of these properties the following settings apply.

• ui: • inspector:

• group: the group, the Element will be sorted in (this is defined via ui.inspector.groups)

• position: position of the element - the lower the number, the higher its position

• editor: Name of the JavaScript Editor class

• editorOptions: Options for the Editor

Technical Details - NodeTypes.yaml

173

Page 174: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: Examples

Technical Details - NodeTypes.yaml

174

Page 175: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Node-Declaration: Examples

Technical Details - NodeTypes.yaml

175

Page 176: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Structure of the TYPO3 Neos Rendering

176

Page 177: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The directory structure of a TYPO3 Flow base:

The directory structure of a TYPO3 Flow base

Files for the build process (Behat, Phing, ...) Neos Configuration (Context, Routes, Settings, PackageStates...)Data (Logs, Setup-Key, Caches, ...) Packages (Application, Framework, Libraries, Sites) Tests (Selenium-Tests) Document Root

Flow Command Line Interface

177

Page 178: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The directory structure of a TYPO3 Neos Site:

The directory structure of a TYPO3 Neos Site

starting point of the TYPO3 Neos Site

Classes (e.g. regisitration Classes) Configuration (e.g. Node Types) Private Ressources (e.g. Content, Templates, TypoScript, ...) public Ressources (Assets, like CSS, Fonts, Images, JS, ...)

178

Page 179: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript - sequence of loading - Root.ts2 !• the rendering in TYPO3 Neos is completely realized in TypoScript 2 • At first the following file is loaded and its content interpreted:Packages/Application/TYPO3.Neos/Resources/Private/TypoScript/Root.ts2Warning: The resource path omits the „Resources“ part of the physical path! $mergedTypoScriptCode = $this->readExternalTypoScriptFile('resource://TYPO3.Neos/Private/TypoScript/Root.ts2') . $siteRootTypoScriptCode;

• Afterwards the following file is loaded - it contains the TypoScript Code of the own Site: Packages/Sites/[Vendor.Sitename]/Resources/Private/Typoscripts/Library/Root.ts2

TYPO3 Neos Internals: TypoScript Sequence of Execution

179

Page 180: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.Neos) !• the file Root.ts2 (Packages/Application/TYPO3.Neos/Resources/Private/TypoScript/Root.ts2) in the TYPO3.Neos Resources directory subsequently loads the following files:include: resource://TYPO3.TypoScript/Private/TypoScript/Root.ts2include: resource://TYPO3.Neos/Private/TypoScript/DefaultTypoScript.ts2include: resource://TYPO3.Neos/Private/TypoScript/RawContentMode.ts2include: resource://TYPO3.Neos.NodeTypes/Private/TypoScript/Root.ts2

TYPO3 Neos Internals: TypoScript Sequence of Execution

180

Page 181: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 1 !• The file Root.ts2 in the TYPO3.TypoScript Resources directory defines 9 classes for

the respective objects Array, RawArray, Template, Collection, Case, Matcher, Value, Tag and UriBuilder. The classes are located atPackages/TYPO3.TypoScript/Classes/TYPO3/TypoScript/TypoScriptObjects: prototype(TYPO3.TypoScript:Array).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\ArrayImplementation' prototype(TYPO3.TypoScript:RawArray).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\RawArrayImplementation' prototype(TYPO3.TypoScript:Template).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\TemplateImplementation' prototype(TYPO3.TypoScript:Collection).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\CollectionImplementation'

TYPO3 Neos Internals: TypoScript Sequence of Execution

181

Page 182: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 2 !• prototype(TYPO3.TypoScript:Case).@class = 'TYPO3\\TypoScript\\TypoScriptObjects

\\CaseImplementation' prototype(TYPO3.TypoScript:Matcher).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\MatcherImplementation' prototype(TYPO3.TypoScript:Value).@class = 'TYPO3\\TypoScript\\TypoScriptObjects\\ValueImplementation' prototype(TYPO3.TypoScript:Tag) { @class = 'TYPO3\\TypoScript\\TypoScriptObjects\\TagImplementation' attributes = RawArray }

TYPO3 Neos Internals: TypoScript Sequence of Execution

182

Page 183: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 3 !• # Renders attributes of a HTML tag

# # Usage: # attributes = TYPO3.TypoScript:Attributes { # foo = 'bar' # class = TYPO3.TypoScript:RawArray { # class1 = 'class1' # class2 = 'class2' # } # } # prototype(TYPO3.TypoScript:Attributes) { @class = 'TYPO3\\TypoScript\\TypoScriptObjects\\AttributesImplementation' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

183

Page 184: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 4 !• # Renders an HTML tag

# # Usage: # tag = TYPO3.TypoScript:Attributes { # tagName = 'h1' # attributes = { # class = 'some-class' # } # } # prototype(TYPO3.TypoScript:Tag) { @class = 'TYPO3\\TypoScript\\TypoScriptObjects\\TagImplementation' attributes = TYPO3.TypoScript:Attributes omitClosingTag = FALSE selfClosingTag = FALSE }

TYPO3 Neos Internals: TypoScript Sequence of Execution

184

Page 185: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 5 !• # Renders an URI pointing to a controller/action

# # Usage: # uri = TYPO3.TypoScript:UriBuilder { # package = 'Some.Package' # controller = 'Standard' # action = 'index' # } # prototype(TYPO3.TypoScript:UriBuilder) { @class = 'TYPO3\\TypoScript\\TypoScriptObjects\\UriBuilderImplementation' additionalParams = RawArray arguments = RawArray argumentsToBeExcludedFromQueryString = RawArray @exceptionHandler = 'TYPO3\\TypoScript\\Core\\ExceptionHandlers\\AbsorbingHandler' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

185

Page 186: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.TypoScript) - Part 6 !• # Renders an URI pointing to a resource

# # Usage: # fileUri = TYPO3.TypoScript:ResourceUri { # path = 'resource://Some.Package/Public/Images/SomeImage.png'# } # prototype(TYPO3.TypoScript:ResourceUri) { @class = 'TYPO3\\TypoScript\\TypoScriptObjects\\ResourceUriImplementation' localize = TRUE @exceptionHandler = 'TYPO3\\TypoScript\\Core\\ExceptionHandlers\\AbsorbingHandler' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

186

Page 187: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Hier werden zunächst die Prototypen-Definitionen geladen:

include: Prototypes/ContentCase.ts2 include: Prototypes/Document.ts2 include: Prototypes/Content.ts2 # Note: The TYPO3.Neos:Template prototype only exists for historical reasons and will be removed in a future version: include: Prototypes/Template.ts2 include: Prototypes/PrimaryContent.ts2 include: Prototypes/ContentCollection.ts2 include: Prototypes/Page.ts2 include: Prototypes/Shortcut.ts2 include: Prototypes/Breadcrumb.ts2 include: Prototypes/Menu.ts2 include: Prototypes/Plugin.ts2 include: Prototypes/PluginView.ts2 include: Prototypes/ConvertNodeUris.ts2 include: Prototypes/DocumentMetadata.ts2 include: Prototypes/ContentElementWrapping.ts2

TYPO3 Neos Internals: TypoScript Sequence of Execution

187

Page 188: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) - Beispiel !• Als Beispiel Prototypes/Breadcrumb.ts2

# TYPO3.Neos:Breadcrumb provides a basic breadcrumb navigation# prototype(TYPO3.Neos:Breadcrumb) < prototype(TYPO3.TypoScript:Template) { templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/BreadcrumbMenu.html' node = ${node} items = ${q(node).add(q(node).parents('[instanceof TYPO3.Neos:Document]'))} @exceptionHandler = 'TYPO3\\Neos\\TypoScript\\ExceptionHandlers\\NodeWrappingHandler' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

188

Page 189: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• next the default TYPO3.Neos TypoScript is loaded and interpreted • Here the Object TYPO3.Neos:ContentCase is inherited from the Object

TYPO3.TypoScript:Case and the properties @position, condition and type have default values applied.

• the "case" TypoScript Object renders its child elements # TYPO3.Neos:ContentCase inherits TYPO3.TypoScript:Case and overrides the default case # with a catch-all condition for the default case, setting the type variable to# the name of the current nodes' node type # prototype(TYPO3.Neos:ContentCase) < prototype(TYPO3.TypoScript:Case) { default { @position = 'end' condition = TRUE type = ${q(node).property('_nodeType.name')} } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

189

Page 190: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Document is inherited from TYPO3.TypoScript:Template and the

properties of node are set to the current node.# This is the base Document TypoScript object # It should be extended by all TypoScript objects which render documents or are based on node types extending # TYPO3.Neos:Document. # # Note: This object inherits from TYPO3.TypoScript:Template because most Document types are expected to contain a # Fluid template. If a Document-based TypoScript object should not render a template you should still extend this # prototype and override the @class property. # prototype(TYPO3.Neos:Document) < prototype(TYPO3.TypoScript:Template) { node = ${node} }

TYPO3 Neos Internals: TypoScript Sequence of Execution

190

Page 191: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Template is inherited from TYPO3.TypoScript:Template

# This is the base Content TypoScript object# It must be extended by all elements that are selectable in the backend# Note: This object inherits from TYPO3.TypoScript:Template cause most Content Elements are expected to contain a # Fluid template. If a Content Element does not render a template (like for the Plugin Content Elements)# you should still extend this prototype and override the @class property (see TYPO3.Neos:Plugin).prototype(TYPO3.Neos:Content) < prototype(TYPO3.TypoScript:Template) { node = ${node} attributes = TYPO3.TypoScript:Attributes attributes.class = '' # The following is used to automatically append a class attribute that reflects the underlying node type of a TypoScript object, # for example "typo3-neos-nodetypes-form", "typo3-neos-nodetypes-headline", "typo3-neos-nodetypes-html", "typo3-neos-nodetypes-image", "typo3-neos-nodetypes-menu" and "typo3-neos-nodetypes-text" # You can disable the following line with: # prototype(TYPO3.Neos:Content) # [email protected] > # } # in your site's TypoScript if you don't need that behavior. [email protected] = ${String.trim(value + ' ' + String.toLowerCase(String.pregReplace(q(node).property('_nodeType.name'), '/[[:^alnum:]]/', '-')))} # The following line must not be removed as it adds required meta data to all content elements in backend @process.contentElementWrapping = TYPO3.Neos:ContentElementWrapping @exceptionHandler = 'TYPO3\\Neos\\TypoScript\\ExceptionHandlers\\NodeWrappingHandler' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

191

Page 192: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Template is initialized (Deprecated!)

# This TypoScript object only exists as a reminder for migrating your code to the newer TypoScript object structure. # Please use TYPO3.TypoScript:Template instead or TYPO3.Neos:Content if you're creating a content element. # prototype(TYPO3.Neos:Template) { @class = 'TYPO3\\Neos\\TypoScript\\TemplateImplementation' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

192

Page 193: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:PrimaryContent is inherited from TYPO3.TypoScript:Case.

# Primary content should be used to render the main content of a site and# provides an extension point for other packages# prototype(TYPO3.Neos:PrimaryContent) < prototype(TYPO3.TypoScript:Case) { nodePath = 'to-be-defined-by-user' @override.nodePath = ${this.nodePath} @ignoreProperties = ${['nodePath']} default { prototype(TYPO3.Neos:ContentCollection) { nodePath = ${nodePath} } condition = TRUE type = 'TYPO3.Neos:ContentCollection' @position = 'end' } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

193

Page 194: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:ContentCollection is initialized, which itself can accept Content

Elements.# Default case for ContentCollection TS Object # prototype(TYPO3.Neos:ContentCollection) < prototype(TYPO3.Neos:Content) { @class = 'TYPO3\\Neos\\TypoScript\\ContentCollectionImplementation' nodePath = 'to-be-set-by-user' itemName = 'node' itemRenderer = TYPO3.Neos:ContentCase attributes.class = 'neos-contentcollection' @override.contentCollectionNode = ${q(node).is('[instanceof TYPO3.Neos:ContentCollection]') ? node : q(node).find(this.nodePath).get(0)} @process.contentElementWrapping node = ${contentCollectionNode} } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

194

Page 195: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 1: The Object TYPO3.Neos:Page is inherited from TYPO3.TypoScript:Array. # TYPO3.Neos:Page is the default object used for rendering in most sites# prototype(TYPO3.Neos:Page) > prototype(TYPO3.Neos:Page) < prototype(TYPO3.TypoScript:Array) { doctype = '<!DOCTYPE html>' doctype.@position = 'start 100' # Only the opening html tag for the page. This is done to avoid deep nesting of TypoScript paths for integrators. htmlTag = TYPO3.TypoScript:Tag { @position = 'start' tagName = 'html' omitClosingTag = TRUE attributes { version = 'HTML+RDFa 1.1' xmlns = 'http://www.w3.org/1999/xhtml' xmlns:typo3 = 'http://www.typo3.org/ns/2012/Flow/Packages/Neos/Content/' xmlns:xsd = 'http://www.w3.org/2001/XMLSchema#' } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

195

Page 196: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 2: The Object TYPO3.Neos:Page is inherited from TYPO3.TypoScript:Array. headerComment = TYPO3.TypoScript:Template { @position = 'before headTag' templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/NeosLicenseHeader.html' } # The opening head tag for the page. This is done to avoid deep nesting of TypoScript paths for integrators. headTag = TYPO3.TypoScript:Tag { @position = 'after htmlTag' tagName = 'head' omitClosingTag = TRUE }

TYPO3 Neos Internals: TypoScript Sequence of Execution

196

Page 197: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 3: The Object TYPO3.Neos:Page is inherited from TYPO3.TypoScript:Array.

# The content of the head tag, integrators can add their own head content in this array. head = TYPO3.TypoScript:Array { @position = 'after headTag' characterSetMetaTag = TYPO3.TypoScript:Tag { @position = 'start 10' tagName = 'meta' attributes { charset = 'UTF-8' } } titleTag = TYPO3.TypoScript:Tag { tagName = 'title' content = ${q(node).property('title')} } neosBackendHeader = TYPO3.TypoScript:Template { @position = 'end 10000' templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/NeosBackendHeaderData.html' node = ${node} } # Script includes in the head should go here javascripts = TYPO3.TypoScript:Array # Link tags for stylesheets in the head should go here stylesheets = TYPO3.TypoScript:Array }

TYPO3 Neos Internals: TypoScript Sequence of Execution

197

Page 198: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 4: The Object TYPO3.Neos:Page is inherited from TYPO3.TypoScript:Array.

closingHeadTag = '</head>' closingHeadTag.@position = 'after head' # The opening body tag for the page. This is done to avoid deep nesting of TypoScript paths for integrators. bodyTag = TYPO3.TypoScript:Tag { @position = '20' tagName = 'body' omitClosingTag = TRUE } # Required for the backend to work. neosBackendDocumentNodeData = TYPO3.Neos:DocumentMetadata { @position = 'before body' } # Content of the body tag. To be defined by the integrator. body = TYPO3.TypoScript:Template { @position = 'after bodyTag' node = ${node} # Script includes before the closing body tag should go here javascripts = TYPO3.TypoScript:Array # This processor appends the rendered javascripts Array to the rendered template @process.appendJavaScripts = ${value + this.javascripts} }

TYPO3 Neos Internas: TypoScript Reihenfolge

198

Page 199: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 5: The Object TYPO3.Neos:Page is inherited from TYPO3.TypoScript:Array.

# Required for the backend to work. neosBackendContainer = TYPO3.TypoScript:Template { @position = 'before closingBodyTag' templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/NeosBackendContainer.html' node = ${node} } # This enables redirecting to the last visited page after login lastVisitedNodeScript = Tag { @position = 'before closingBodyTag' tagName = 'script' attributes { data-neos-node = ${q(node).property('_identifier')} src = ResourceUri { path = 'resource://TYPO3.Neos/Public/JavaScript/LastVisitedNode.js' } } } closingBodyTag = '</body>' closingBodyTag.@position = 'end 100' closingHtmlTag = '</html>' closingHtmlTag.@position = 'end 200' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

199

Page 200: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Breadcrumb is inherited from TYPO3.TypoScript:Template.

# TYPO3.Neos:Breadcrumb provides a basic breadcrumb navigation# prototype(TYPO3.Neos:Breadcrumb) < prototype(TYPO3.TypoScript:Template) { templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/BreadcrumbMenu.html' node = ${node} items = ${q(node).add(q(node).parents('[instanceof TYPO3.Neos:Document]'))} @exceptionHandler = 'TYPO3\\Neos\\TypoScript\\ExceptionHandlers\\NodeWrappingHandler'}

• accompanying Template:{namespace neos=TYPO3\Neos\ViewHelpers} <f:if condition="{items}"> <ul class="breadcrumbs"> <f:for each="{items}" as="item" reverse="TRUE"> <f:if condition="{item.hiddenInIndex} == 0"> <li> <neos:link.node node="{item}">{item.label}</neos:link.node> </li> </f:if> </f:for> </ul></f:if>

TYPO3 Neos Internals: TypoScript Sequence of Execution

200

Page 201: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Menu is inherited from TYPO3.TypoScript:Template.

# TYPO3.Neos:Menu provides basic menu rendering# prototype(TYPO3.Neos:Menu) < prototype(TYPO3.TypoScript:Template) { @class = 'TYPO3\\Neos\\TypoScript\\MenuImplementation' templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/Menu.html' node = ${node} items = ${this.items} active.attributes = TYPO3.TypoScript:Attributes { class = 'active' } current.attributes = TYPO3.TypoScript:Attributes { class = 'current' } normal.attributes = TYPO3.TypoScript:Attributes { class = 'normal' } @exceptionHandler = 'TYPO3\\Neos\\TypoScript\\ExceptionHandlers\\NodeWrappingHandler' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

201

Page 202: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:Plugin is inherited from TYPO3.TypoScript:Content. # Abstract Plugin Implementation # This should be extended by all plugin Content Elements# prototype(TYPO3.Neos:Plugin) > prototype(TYPO3.Neos:Plugin) < prototype(TYPO3.Neos:Content) { @class = 'TYPO3\\Neos\\TypoScript\\PluginImplementation' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

202

Page 203: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:PluginView is inherited from TYPO3.TypoScript:Content. # PluginView Implementation # This represents a View that is always bound to a master Plugin# Usually you won't need to extend this # prototype(TYPO3.Neos:PluginView) > prototype(TYPO3.Neos:PluginView) < prototype(TYPO3.Neos:Content) { @class = 'TYPO3\\Neos\\TypoScript\\PluginViewImplementation' } !

TYPO3 Neos Internals: TypoScript Sequence of Execution

203

Page 204: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:ConvertNodeUris is initialized.# ConvertNodeUris implementation # # replaces all occurrences of "node://<UUID>" by proper URIs.# prototype(TYPO3.Neos:ConvertNodeUris) { @class = 'TYPO3\\Neos\\TypoScript\\ConvertNodeUrisImplementation' value = ${value} node = ${node} } !

TYPO3 Neos Internals: TypoScript Sequence of Execution

204

Page 205: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:DocumentMetadata is inherited TYPO3.TypoScript:Tag. # DocumentMetadata implementation # # Renders a meta tag with attributes about the current document node# prototype(TYPO3.Neos:DocumentMetadata) < prototype(TYPO3.TypoScript:Tag) { tagName = 'div' forceClosingTag = TRUE attributes { id = 'neos-page-metainformation' } @process.contentElementWrapping = TYPO3.Neos:ContentElementWrapping @process.onlyRenderMetadataWhenNotInLiveWorkspace = ${node.context.workspace.name != 'live' ? value : ''}

@process.onlyRenderMetadataWhenNotInLiveWorkspace.@position = 'end 9999' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

205

Page 206: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• The Object TYPO3.Neos:ContentElementWrapping is initialized.# ContentElementWrapping implementation # # Used as processor this adds metadata attributes to the corresponding TypoScript object # This is used to render required data-neos-* attributes to content elements in the backend # prototype(TYPO3.Neos:ContentElementWrapping) { @class = 'TYPO3\\Neos\\TypoScript\\ContentElementWrappingImplementation' node = ${node} value = ${value} } !

TYPO3 Neos Internals: TypoScript Sequence of Execution

206

Page 207: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Part 1: The Rendering is set up.

# The root matcher used to start rendering in Neos# The default is to use a render path of "page", unless the requested format is not "html" # in which case the format string will be used as the render path (with dots replaced by slashes) root = TYPO3.TypoScript:Case root { editPreviewMode { @position = 'end 9996' condition = ${editPreviewMode != null} renderPath = ${'/' + editPreviewMode} } layout { @position = 'end 9997' layout = ${q(node).property('layout') != null && q(node).property('layout') != '' ? q(node).property('layout') : q(node).parents('[subpageLayout]').first().property('subpageLayout')} condition = ${this.layout != null && this.layout != ''} renderPath = ${'/' + this.layout} }

TYPO3 Neos Internals: TypoScript Sequence of Execution

207

Page 208: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: DefaultTypoScript.ts2 (TYPO3.Neos) !• Teil 2: The Rendering is set up.

format { @position = 'end 9998' condition = ${request.format != 'html'} renderPath = ${'/' + String.replace(request.format, '.', '/')} }

default { @position = 'end 9999' condition = TRUE renderPath = '/page' } }

!

TYPO3 Neos Internals: TypoScript Sequence of Execution

208

Page 209: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: RawContentMode.ts2 (TYPO3.Neos) !

Configuration of RawContentMode (formely WireframeMode)prototype(TYPO3.Neos:RawContent) < prototype(TYPO3.Neos.NodeTypes:MultiColumn) { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/TypoScriptObjects/GeneralContentCollectionRendering.html' layout = '' columns { collection = ${q(node).children('[instanceof TYPO3.Neos:ContentCollection]')} itemRenderer { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/TypoScriptObjects/ContentCollectionTemplate.html' } } } rawContent = TYPO3.Neos:Page { head { stylesheets = TYPO3.TypoScript:Template { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/Page/Default.html' sectionName = 'headerIncludes' } } bodyAttributes.class = 'neos-raw-content-mode' body { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/Page/Default.html' sectionName = 'body' parts { menu = TYPO3.Neos:Menu { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/TypoScriptObjects/Menu.html' entryLevel = 1 maximumLevels = 4 } breadcrumb = TYPO3.Neos:Breadcrumb { templatePath = 'resource://TYPO3.Neos/Private/Templates/RawContentMode/TypoScriptObjects/BreadcrumbMenu.html' } } allContentCollections = TYPO3.Neos:PrimaryContent { nodePath = '.' default.type = 'TYPO3.Neos:RawContent' } } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

209

Page 210: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.Neos.NodeTypes) !• Part 1: NodeType Definition (e.g. a Menu which is added as a Content Element)

# Menu TS Object - extends TYPO3.Neos:Menu and is rendering menus inserted as content elements prototype(TYPO3.Neos.NodeTypes:Menu) { @class = 'TYPO3\\Neos\\TypoScript\\MenuImplementation' startingPoint = ${documentNode} entryLevel = ${q(node).property('startLevel')} [email protected] = ${String.toInteger(value)} maximumLevels = ${q(node).property('maximumLevels')} [email protected] = ${String.toInteger(value)} active.attributes = TYPO3.TypoScript:Attributes { class = 'active' } current.attributes = TYPO3.TypoScript:Attributes { class = 'current' } normal.attributes = TYPO3.TypoScript:Attributes { class = 'normal' } node = ${node} items = ${this.items} }

TYPO3 Neos Internals: TypoScript Sequence of Execution

210

Page 211: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.Neos.NodeTypes) !• Part 2: NodeType Definition (Elements, which are added as Content Elements)# Headline TS Object prototype(TYPO3.Neos.NodeTypes:Headline) { [email protected] = TYPO3.Neos:ConvertNodeUris } # Image TS Object prototype(TYPO3.Neos.NodeTypes:Image) { maximumWidth = 2560 maximumHeight = 2560 imageClassName = ${q(node).property('alignment') ? ('typo3-neos-alignment-' + q(node).property('alignment')) : ''} allowCropping = FALSE allowUpScaling = FALSE } # Text TS Object prototype(TYPO3.Neos.NodeTypes:Text) { [email protected] = TYPO3.Neos:ConvertNodeUris }

TYPO3 Neos Internals: TypoScript Sequence of Execution

211

Page 212: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.Neos.NodeTypes) !• Part 3: NodeType Definition (Elements, which are added as Content Elements) # TextWithImage TS Object prototype(TYPO3.Neos.NodeTypes:TextWithImage) < prototype(TYPO3.Neos.NodeTypes:Image) { [email protected] = TYPO3.Neos:ConvertNodeUris } # Basic implementation of a flexible MultiColumn element, not exposed directly but inherited by all specific MultiColumn content elementsprototype(TYPO3.Neos.NodeTypes:MultiColumn) < prototype(TYPO3.Neos:Content) { templatePath = 'resource://TYPO3.Neos.NodeTypes/Private/Templates/NodeTypes/MultiColumn.html' layout = ${q(node).property('layout')} attributes.class = ${'container columns-' + q(node).property('layout')} columns = TYPO3.TypoScript:Collection { collection = ${q(node).children('[instanceof TYPO3.Neos:ContentCollection]')} itemRenderer = TYPO3.Neos.NodeTypes:MultiColumnItem itemName = 'node' } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

212

Page 213: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 (TYPO3.Neos.NodeTypes) !• Part 4: NodeType Definition (Elements, which are added as Content Elements)

# Abstract render definition for a single content column in a multi column elementprototype(TYPO3.Neos.NodeTypes:MultiColumnItem) < prototype(TYPO3.TypoScript:Template) { node = ${node} templatePath = 'resource://TYPO3.Neos.NodeTypes/Private/Templates/NodeTypes/MultiColumnItem.html' attributes = TYPO3.TypoScript:Attributes { class = 'column' } columnContent = TYPO3.Neos:ContentCollection { nodePath = '.' } } # Two Column TS Object prototype(TYPO3.Neos.NodeTypes:TwoColumn) > prototype(TYPO3.Neos.NodeTypes:TwoColumn) < prototype(TYPO3.Neos.NodeTypes:MultiColumn)# Three Column TS Object prototype(TYPO3.Neos.NodeTypes:ThreeColumn) >prototype(TYPO3.Neos.NodeTypes:ThreeColumn) < prototype(TYPO3.Neos.NodeTypes:MultiColumn)# Four Column TS Object prototype(TYPO3.Neos.NodeTypes:FourColumn) > prototype(TYPO3.Neos.NodeTypes:FourColumn) < prototype(TYPO3.Neos.NodeTypes:MultiColumn)# Form TS Object prototype(TYPO3.Neos.NodeTypes:Form) { presetName = 'default' }

TYPO3 Neos Internals: TypoScript Sequence of Execution

213

Page 214: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 & Template of the Site (1/3) !• The TypoScript of the Site is evaluated. • it begins with the file Root.ts2 in the following Directory

Sites/[Vendor].[Sitename]/Resources/Private/TypoScripts/Library/

• by default (empty Website) the following code is inserted:namespace: TypoScript=TYPO3.TypoScript /** * Root TypoScript template for the NeosCompendiumTest Site */ page = Page { head { stylesheets = TypoScript:Template stylesheets { templatePath = 'resource://NeosCompendium.Test/Private/Templates/Page/Default.html' sectionName = 'stylesheets' } scripts = TypoScript:Template scripts { templatePath = 'resource://NeosCompendium.Test/Private/Templates/Page/Default.html' sectionName = 'scripts' } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

214

Page 215: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 & Template der Site (2/3) !• by default (empty Website) the following code is inserted:

... body { templatePath = 'resource://NeosCompendium.Test/Private/Templates/Page/Default.html' sectionName = 'body' parts { menu = Menu breadcrumb = Breadcrumb } // These are your content areas, you can define as many as you want, just name them and the nodePath. content { // Default content section main = PrimaryContent { nodePath = 'main' } } } }

TYPO3 Neos Internals: TypoScript Sequence of Execution

215

Page 216: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

TypoScript: Root.ts2 & Template der Site (3/3) !• The default HTML-Template looks like this:

<!DOCTYPE html> {namespace neos=TYPO3\Neos\ViewHelpers} {namespace ts=TYPO3\TypoScript\ViewHelpers}<html> <head> <f:section name="stylesheets"> <!-- put your stylesheet inclusions here, they will be included in your website by TypoScript --> </f:section> <f:section name="scripts"> <!-- put your scripts inclusions here, they will be included in your website by TypoScript --> </f:section></head> <body> <f:section name="body"> <nav class="menu"> {parts.menu -> f:format.raw()} </nav> <nav class="breadcrumb"> {parts.breadcrumb -> f:format.raw()} </nav> <div class="content"> {content.main -> f:format.raw()} </div></f:section> </body> </html> !

TYPO3 Neos Internals: TypoScript Sequence of Execution

216

Page 217: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

rebuild a TYPO3 Neos Website

217

Page 218: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

starting point • you can either reinstall TYPO3 Neos vom scratch • or (in case of resetting a test system): empty the database content • afterwards execute the following commands, it rebuilds all necessary database

tables and contents:./flow doctrine:migrate

• finally flush the cache ./flow flow:cache:flush

• an invocation of the frontendshould reveal the following:

Getting started: starting point

218

Page 219: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a user • to log into the system we need a user • this we can do on the shell by issuing the following command !

• ./flow user:create --roles Administrator admin password firstname lastname !

• USAGE:./flow user:create [<options>] <username> <password> <first name> <last name> ARGUMENTS:--username The username of the user to be created--password Password of the user to be created--first-name First name of the user to be created--last-name Last name of the user to be createdOPTIONS:--roles A comma separated list of roles to assign

Getting started: add a user

219

Page 220: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site • a website can be initialized in two different ways • using the Site Manager inside of Neos • via the TYPO3 Flow commandlinecd /path/to/Neos-Installation/ ./flow site:kickstart NeosCompendium.devmo Website./flow site:import --package-key NeosCompendium.devmo

• Syntax to add a site./flow site:kickstart <PackageKey> <SiteName>

• Syntax to import a Site in TYPO3 Neos./flow site:import --package-key <PackageKey> (the Import leads to a record in the table typo3_neos_domain_model_site )

• Syntax to list all Sites

Getting started: add a Site

220

Page 221: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site - Frontend • entering the website‘s url into the browser should bring the following:

Getting started: add a Site

221

Page 222: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site - created files • Inside of Packages/Sites the kickstarter created

the following structure inside the directory NeosCompendium.devmo incl. the below described files

• Sites.xml contains the Root Node Definition of the Website

• Default.html default Template

• Root.ts2 default TypoScript Code

Getting started: add a Site

222

Page 223: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site - creates files - Sites.xml • Sites.xml contains the Root Node Definition of the Website • <?xml version="1.0" encoding="UTF-8"?>

<root> <site nodeName="demo" type="TYPO3.Neos.NodeTypes:Page"> <properties> <name>Demo</name> <title><![CDATA[Home]]></title> <state>1</state> <siteResourcesPackageKey>NeosCompendium.devmo</siteResourcesPackageKey> </properties> <node type="TYPO3.Neos:ContentCollection" nodeName="main"> <node type="TYPO3.Neos.NodeTypes:Text" nodeName="text1"> <properties> <text><![CDATA[<p>This is the homepage</p>]]></text> </properties> </node> </node> <node type="TYPO3.Neos.NodeTypes:Page" nodeName="subpage"> <properties> <title>A sub page</title> </properties> <node type="TYPO3.Neos:ContentCollection" nodeName="main"> <node type="TYPO3.Neos.NodeTypes:Text" nodeName="text1"> <properties> <text><![CDATA[<p>This is the first sub page</p>]]></text> </properties> </node> </node> </node> </site> </root>

Getting started: add a Site - Sites.xml

223

Page 224: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site - MultiSite • if the system contains just one site it can already be accessed via the URL • but in case of multiple site they have to configured by the of Domain Entries • at first a list of all sites is requested

pats-macbook-air-2:TYPO3-Neos patricklobacher$ ./flow site:list !Name Node name Resources package ------------------------------------------------------------------------------------ TYPO3 Neos Demo Site neosdemotypo3org TYPO3.NeosDemoTypo3Org Demo demo NeosCompendium.devmo

NeosCompendiumTest test NeosCompendium.Test

Getting started: add a Site - MultiSite

224

Page 225: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

add a Site - MultiSite • for each "Node Name" you want to access later you add a Domain Entry./flow domain:add test neos.dev !

• Syntax./flow domain:add <node name> <domain>

• all Domains can be listed with ./flow domain:list

• finally flush the cache./flow flow:cache:flush --force

Getting started: add a Site - MultiSite

225

Page 226: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

minimal TypoScript

• at least the following TypoScript is needed - it takes care of importing the template file and return it as an (empty) HTML Websitepage = Page page.body.templatePath = 'resource://NeosCompendium.demo/Private/Templates/Page/Default.html'

• {title} can be used now - it is replaced by the title of the current page • you can also use the ViewHelper <ts:render path="parts.menu" />, which takes

care of rendering the TypoScript path page.body.parts.menu

Getting started: add a Site - minimal TypoScript

226

Page 227: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 • the file Root.ts2 (TypoScript 2.0) is initially parsed and interpreted

• at first an Object with the name "page" is created and assigned to a Page Objectpage = Page !

• amongst others the Page Object has two properties: • head (type TYPO3.TypoScript:Array) • body (type TYPO3.Neos:Template)

• these have been defined in TYPO3.Neos/Resources/Private/ TypoScript/DefaultTypoScript.ts2

Getting started: add a Site - Analysis of Root.ts2

227

Page 228: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Header section • the header section is filled with both required stylesheets and JavaScripts. • in both cases the template is loaded and jumped to the respective section

page = Page { head { stylesheets = TypoScript:Template stylesheets { templatePath = 'resource://NeosCompendium.Test/Private/Templates/Page/Default.html' sectionName = 'stylesheets' } scripts = TypoScript:Template scripts { templatePath = 'resource://NeosCompendium.Test/Private/Templates/Page/Default.html' sectionName = 'scripts' } }

Getting started: add a Site - Analysis of Root.ts2

228

Page 229: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Header section - Template • the Template (resource://NeosCompendium.demo/Private/Templates/Page/

Default.html) looks like this:<head> <f:section name="stylesheets"> <!-- put your stylesheet inclusions here, they will be included in your website by TypoScript --> </f:section> <f:section name="scripts"> <!-- put your scripts inclusions here, they will be included in your website by TypoScript --> </f:section> </head>

• Eventually only the code between the <f:section>-ViewHelper is returned. The <head>-Tag created and returned by TYPO3 Neos itself (because of page.head.stylesheets.sectionName and page.head.scripts.sectionName)

Getting started: add a Site - Analysis Of Root.Ts2

229

Page 230: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template • it continues by filling the <body> part - therefore a templated is loaded an jumped to

the „body“ section:page.body { templatePath = 'resource://NeosCompendium.demo/Private/Templates/Page/Default.html' sectionName = 'body'

• accordingly the surroundings of the associated Template look like this :<body> <f:section name="body"> ... </f:section> </body>

• again, only content between the <f:section>-ViewHelper is interpreted

Getting started: add a Site - Analysis Of Root.Ts2

230

Page 231: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template • inside page.body two objects are defined - namely menu of type Menu and breadcrumb of type Breadcrumb:page.body { parts { menu = Menu breadcrumb = Breadcrumb }

• Inside the template you access these by the paths parts.menu resp. parts.breadcrumb : <nav class="menu"> {parts.menu -> f:format.raw()} </nav> <nav class="breadcrumb"> {parts.breadcrumb -> f:format.raw()} </nav>

Getting started: add a Site - Analysis Of Root.Ts2

231

Page 232: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template - Menu • responsbile for the rendering of the menu via menu = Menu is the TypoScript under

TYPO3.Neos/Private/Templates/TypoScript/DefaultTypoScript.ts2 and hence the Template templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/Menu.html': {namespace neos=TYPO3\Neos\ViewHelpers} {namespace ts=TYPO3\TypoScript\ViewHelpers} <ul{attributes -> f:format.raw()}> <f:render section="itemsList" arguments="{item: item}" /></ul> <f:section name="itemsList"> <f:for each="{items}" as="item"> <li{ts:render(path:'{item.state}.attributes') -> f:format.raw()}> <neos:link.node node="{item.node}">{item.label}</neos:link.node> <f:if condition="{item.subItems}"> <ul> <f:render section="itemsList" arguments="{items: item.subItems}" /> </ul> </f:if> </li> </f:for></f:section>

Getting started: add a Site - Analysis Of Root.Ts2

232

Page 233: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template - Menu • the TypoScript for the Prototype Menu:

# TYPO3.Neos:Menu provides basic menu rendering# prototype(TYPO3.Neos:Menu) < prototype(TYPO3.TypoScript:Template) { @class = 'TYPO3\\Neos\\TypoScript\\MenuImplementation' templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/Menu.html' node = ${node} items = ${this.items} active.attributes = TYPO3.TypoScript:Attributes { class = 'active' } current.attributes = TYPO3.TypoScript:Attributes { class = 'current' } normal.attributes = TYPO3.TypoScript:Attributes { class = 'normal' } @exceptionHandler = 'TYPO3\\Neos\\TypoScript\\ExceptionHandlers\\NodeWrappingHandler'}

Getting started: add a Site - Analysis Of Root.Ts2

233

Page 234: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analyse Root.ts2 - Body-Bereich & Template - Menu • this is how the class menu (in extracts) looks like:

class MenuImplementation extends \TYPO3\TypoScript\TypoScriptObjects\TemplateImplementation { const MAXIMUM_LEVELS_LIMIT = 100; const STATE_NORMAL = 'normal'; const STATE_CURRENT = 'current'; const STATE_ACTIVE = 'active'; protected $items; protected $currentNode; public function getEntryLevel() { return $this->tsValue('entryLevel'); } public function getMaximumLevels() { $maximumLevels = $this->tsValue('maximumLevels'); if ($maximumLevels > self::MAXIMUM_LEVELS_LIMIT) { $maximumLevels = self::MAXIMUM_LEVELS_LIMIT; } return $maximumLevels; } ...

Getting started: Site anlegen - Analyse Root.ts2

234

Page 235: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template - Breadcrumb • responsbile for the rendering of the menu via breadcrumb = Breadcrumb is the TypoScript

under TYPO3.Neos/Private/Templates/TypoScript/DefaultTypoScript.ts2 and hence the Template templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/BreadcrumbMenu.html': {namespace neos=TYPO3\Neos\ViewHelpers} <f:if condition="{items}"> <ul class="breadcrumbs"> <f:for each="{items}" as="item" reverse="TRUE"> <f:if condition="{item.hiddenInIndex} == 0"> <li> <neos:link.node node="{item}">{item.label}</neos:link.node> </li> </f:if> </f:for> </ul></f:if>

Getting started: add a Site - Analysis Of Root.Ts2

235

Page 236: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template - Breadcrumb • the TypoScript for the Prototype Breadcrumb:

prototype(TYPO3.Neos:Breadcrumb) < prototype(TYPO3.Neos:Template)prototype(TYPO3.Neos:Breadcrumb) { templatePath = 'resource://TYPO3.Neos/Private/Templates/TypoScriptObjects/BreadcrumbMenu.html' items = ${q(node).add(q(node).parents())}}

• there is no seperate menu class defined

Getting started: add a Site - Analysis Of Root.Ts2

236

Page 237: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Analysis of Root.ts2 - Body section & Template • the Content object is defined inside of page.body:page.body { content { main = ContentCollection main.nodePath = 'main' }

• likewise it is accessed via the path content.main:<div class="content"> {content.main -> f:format.raw()}</div>

• the first Content Collection is auto- matically named main, subsequentContent Collections can be namedindependently

Getting started: add a Site - Analysis Of Root.Ts2

237

Page 238: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Extension of the Site Simple Plugin 1

238

Page 239: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag to declare a Canonical URL

• Intention: TYPO3 Neos shall be extended in a way to make it possible to enter a Canoical URL in the Backend that is rendered in the Frontend as follows:<link rel="canonical" href="http://www.NeosCompendium.dev/canonical" />

• this requires a Flow Package that is used as a Neos Plugin !

• Step 1: add a Flow Package - in this case the Vendor is „NeosCompendium“ and the name of the package „Canonical“./flow kickstart:package NeosCompendium.Canonical

Example For Plugin 1

239

Page 240: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag to declare a Canonical URL

• Step 2: add the file „NodeTypes.yaml“ in Packages/Application/NeosCompendium.Canonical/Configuration/ # add a field to the page properties 'TYPO3.Neos.NodeTypes:Page': superTypes: ['TYPO3.Neos:Document'] properties: canonicalUrl: type: string ui: label: 'Canonical URL' reloadIfChanged: TRUE inspector: group: 'metaOptions' ui: inspector: groups: metaOptions: label: 'Canonical Information' position: 180

Example For Plugin 1

IMPORTANT:The Code isindented usingtwo space chars!

240

Page 241: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag to declare a Canonical URL

• Step 3: add a TypoScript directory inside of Resources mkdir -p Packages/Application/NeosCompendium.Canonical/Resources/Private/TypoScripts

• Step 4: create the file Root.ts2 which extends the head-section of a website with a template in which the CanonicalUrl is shownpage.head.metadata { canonicalTag = TYPO3.TypoScript:Template canonicalTag { templatePath = 'resource://NeosCompendium.Canonical/Private/Templates/TypoScript/CanonicalTag.html' canonicalUrl = TYPO3.TypoScript:Value canonicalUrl.value = ${q(node).property('canonicalUrl')} }

Example For Plugin 1

241

Page 242: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag to declare a Canonical URL

• Step 5: add a TypoScript directory inside of Templates mkdir -p Packages/Application/NeosCompendium.Canonical/Resources/Private/Templates/TypoScript

• Step 6: create the file CanonicalTag.html {namespace ts=TYPO3\TypoScript\ViewHelpers} <link rel="canonical" href="{ts:render(path: 'canonicalUrl')}" />

• Reader‘s exercise: let the tag only be rendered if a Canonical URL has been entered

Example For Plugin 1

242

Page 243: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag to declare a Canonical URL

• Step 7: insertion of the TypoScript file Packages/Sites/NeosCompendium.demo/Resources/Private/TypoScripts/Library/Root.ts2 include: resource://NeosCompendium.Canonical/Private/TypoScripts/Root.ts2

• Background Knowledge:Page Properties are saved in the table typo3_typo3cr_domain_model_nodedata at the field properties a:7:{s:4:"name";s:20:"TYPO3 Neos Demo Site";s:5:"title";s:4:"Home";s:6:"layout";s:11:"landingPage";s:13:"subpageLayout";s:0:"";s:5:"state";s:1:"1";s:23:"siteResourcesPackageKey";s:22:"TYPO3.NeosDemoTypo3Org";s:12:"canonicalUrl";s:20:"http://www.google.de";}

Example For Plugin 1

243

Page 244: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Meta-Tag zur Angabe einer Canonical URL

• Step 8: Insertion of a Marker in the TemplatePackages/Sites/NeosCompendium.Demo/Resources/Private/Templates/Page/Default.html ... <head> <f:section name="metadata"> ... {canonicalTag -> f:format.raw()} </f:section> ... </head> ....

Plugin 1 Beispiel

244

Page 245: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Extension of the Site Simple Plugin 2

245

Page 246: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Intention: TYPO3 Neos shall be extended in a way to make it possible to insert a quotation content element - consisting of a quoted text (editable inline), a source and a URL (both manageable via the Inspector)

• this requires a Flow Package that is used as a Neos Plugin !

• Step 1: add a Flow Package - in this case the Vendor is „NeosCompendium“ and the name of the package „Quote“./flow kickstart:package NeosCompendium.Quote

Example For Plugin 2

246

Page 247: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

Example For Plugin 2

247

Page 248: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 2: add the file „NodeTypes.yaml“ in Packages/Application/NeosCompendium.Quote/Configuration/ 'NeosCompendium.Quote:Quote': superTypes: ['TYPO3.Neos:Content'] ui: label: 'Zitat' inspector: groups: quoteproperties: label: 'Zitat Optionen' position: 5 icon: 'icon-file-text'

• to be continued on the next pages...

Example For Plugin 2

IMPORTANT:The Code isindented usingtwo space characters!

248

Page 249: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 2: ...continued („properties“ is indented with 2 spaces): properties: blockquote: type: string ui: label: 'Quote' inlineEditable: true reloadIfChanged: true sourcetitle: type: string defaultValue: 'Source of Quote' ui: label: 'Source of Quote' inspector: group: 'quoteproperties' reloadOnChange: true

Example For Plugin 2

IMPORTANT:The Code isindented usingtwo space characters!

249

Page 250: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 2: ...continued („sourceurl“ is indented with 4 spaces): sourceurl: type: string ui: label: 'URL of the source of Qoute' inspector: group: 'quoteproperties' reloadIfChanged: true groups: quoteproperties: ui: label: 'Quote Options' priority: 10

Example For Plugin 2

IMPORTANT:The Code isindented usingtwo space characters!

250

Page 251: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 3: add a TypoScript directory inside of Resources mkdir -p Packages/Application/NeosCompendium.Quote/Resources/Private/TypoScripts

• Step 4: create the file Root.ts2 which defines the TypoScript Object Quote:# Quote TypoScript Object prototype(NeosCompendium.Quote:Quote) < prototype(TYPO3.Neos:Content) { templatePath = 'resource://NeosCompendium.Quote/Private/Templates/TypoScriptObjects/Quote.html' blockquote = ${q(node).property('blockquote')} sourceurl = ${q(node).property('sourceurl')} sourcetitle = ${q(node).property('sourcetitle')}}

Example For Plugin 2

251

Page 252: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element) • Step 5: add a TypoScriptObjects directory inside of Templates

mkdir -p Packages/Application/NeosCompendium.Quote/Resources/Private/Templates/TypoScriptObjects

• Step 6: create the file Quote.html {namespace t=TYPO3\Neos\ViewHelpers} <t:contentElement node="{node}"> <blockquote cite="{f:uri.external(uri: '{sourceurl}', defaultScheme: 'http')}"> <t:contentElement.editable property="blockquote"> {blockquote} </t:contentElement.editable> </blockquote> <f:if condition="{sourceurl}"> <f:then> <f:link.external uri="{sourceurl}" defaultScheme="http">{sourcetitle}</f:link.external> </f:then> <f:else> {sourcetitle} </f:else> </f:if> </t:contentElement>

Example For Plugin 2

252

Page 253: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 7: insertion of the TypoScript file (preferably close to the top)Packages/Sites/NeosCompendium.demo/Resources/Private/TypoScripts/Library/Root.ts2 include: resource://NeosCompendium.Quote/Private/TypoScripts/Root.ts2

• Step 8: extend the Demo Site‘s structure with two directoriesmkdir Packages/Sites/NeosCompendium.demo/Resources/Publicmkdir Packages/Sites/NeosCompendium.demo/Resources/Public/Stylesheets or with one command:mkdir -p Packages/Sites/NeosCompendium.demo/Resources/Public/Stylesheets

Example For Plugin 2

253

Page 254: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 9: create the file Quote.css in:Packages/Application/NeosCompendium.Quote/Resources/Public/Stylesheets/ blockquote { background:#f9f9f9; border-left:10px solid #ccc; margin:1.5em 10px; padding:.5em 10px; quotes:"\201C""\201D""\2018""\2019"; } blockquote:before { color:#ccc; content:open-quote; font-size:4em; line-height:.1em; margin-right:.25em; vertical-align:-.4em; } blockquote p { display:inline; }

Example For Plugin 2

254

Page 255: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Plugin: Quote-FCE (Flexible Content Element)

• Step 10: refer to this stylesheet in the file: Packages/Sites/NeosCompendium.Demo/Resources/Private/Templates/Page/Default.html <f:section name="stylesheets"> <!-- put your stylesheet inclusions here, they will be included in your website by TypoScript --> <link rel="stylesheet" href="{f:uri.resource(path: 'Stylesheets/Quote.css', package: 'NeosCompendium.Quote')}" media="all" /></f:section>

Example For Plugin 2

255

Page 256: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Neos Command Line Interface

256

Page 257: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - Domain • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:domain:add (adds a Domain) • Arguments • --site-node-name

Node Name of the Root Node e.g. neostypo3org • --host-pattern

pattern of host e.g. neos.typo3.org

• typo3.neos:domain:delete (deletes a Domain) • Arguments • --host-pattern

pattern of host which is to be deleted e.g. neos.typo3.org

• typo3.neos:domain:list (lists all domains) • Arguments • --host-pattern

optional pattern for a host that is to be looked up e.g. neos.typo3.org

Neos Command Line Interface

257

Page 258: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - Site • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:site:export (export a Site into XML) • Arguments • --site-name

name of a site that is to be exported, if empty, all sites are exported

• typo3.neos:site:import (import a Site from XML) • Arguments • --package-key

Package-Key where the content shall be imported to • --file-name

filename containing an exported TYPO3 Neos Site in XML

Neos Command Line Interface

258

Page 259: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - Site • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:site:list (list all sites) • Arguments

• none !

• typo3.neos:site:prune (delete the content of site) • Optionen • --confirmation

get the user‘s confirmation if deletion shall be done

Neos Command Line Interface

259

Page 260: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - User/Role • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:user:addrole (add a role to a user) • Arguments • --username

user the role is added to • --role

role to be added like "TYPO3.Neos:Editor" or "TYPO3.Neos:Administrator"

• typo3.neos:user:removerole (remove a role from the user) • Arguments • --username

user from which the role is taken • --role

role to be removed like "TYPO3.Neos:Editor" oder "TYPO3.Neos:Administrator"

Neos Command Line Interface

260

Page 261: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - User • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:user:create (add a user) • Arguments • --username

username • --password

password • --first-name

firstname • --last-name

lastname • Options • --roles

A comma separated list of roles to assign

Neos Command Line Interface

261

Page 262: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Neos Command Line Interface - User • CLI (Command Line interface) Commands are always executed using ./flow

e.g. ./flow typo3.neos:domain:add ...

• typo3.neos:user:setpassword (set a password for a user) • Arguments • --username

username the password is set for • --password

the new password

Neos Command Line Interface

262

Page 263: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Contribute to TYPO3 Neos

263

Page 264: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

We need you!! !

• Join the TYPO3 Neos and Flow Team!

• Everybody is needed: Programmer, Architects, UX-Experts, Designer, Documentation, Tester, JS-Specialists, ...

• contact robert[AT]typo3.org

Contribute to TYPO3 Neos: We need you!!

264

Page 265: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Customers wanted! !

• firsthand contribution • give early feedback to new Functions, User Interfaces, ... • direct contact und discussion with the developers • if meaningful and resonable, the feedback is adapted !

• advantages • take part in the design of the WCMS of the future • have influence in the development • access to developers, architects and UX‘er • networking with other NEOS Customers

• Contact • rasmus[at]typo3.org

Contribute to TYPO3 Neos: Customers wanted

265

Page 266: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Neos Literature

266

Page 267: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

The Neos Book !

• In February 2014 Dan Frost started a Initiative calling itself „The Neos Book“ • Their objective is to release an (english) book for TYPO3 Neos. It is expected to be

released in the late summer of 2014 • More than 30 Core Developers and Authors will contribute content. • (crowd-)funded via kickstarter.com

• Website: http://www.theneosbook.com/

Neos Literatur

267

Page 268: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

Articles (in german)

• web & mobile DEVELOPER (Author Patrick Lobacher) • Ausgabe 11 / 2013: TypoScript, FlowQuery und Eel in TYPO3 Neos • Ausgabe 03 / 2014: TYPO3 Neos in Praxiseinsatz (in the field) • Ausgabe 04 / 2014: Erweiterung von TYPO3 Neos (extend TYPO3 Neos) • Ausgabe 05 / 2014: Plugin-Erstellung für TYPO3 Neos (plugin creation for TYPO3 Neos)

• Screenguide (Author Patrick Lobacher) • Ausgabe 20 / 2014: TYPO3 Neos - ein Überblick (an overview)

!!!If you know more articles - get in touch with me and provide details

Neos Literatur

268

Page 269: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

List of References

269

Page 270: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

List of References !

• TYPO3 Neos Websitehttp://neos.typo3.org/

• TYPO3 Neos Downloadhttp://neos.typo3.org/download.html

• TYPO3 Flow Websitehttp://flow.typo3.org/

• TYPO3 Neos Documentationhttp://docs.typo3.org/neos/TYPO3NeosDocumentation/Index.html

• TYPO3 Flow Documentationhttp://flow.typo3.org/documentation.html

List of References

270

Page 271: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

List of References !

• TYPO3 Neos Project at forgehttp://forge.typo3.org/projects/typo3neos

• TYPO3 Flow Project at forgehttp://forge.typo3.org/projects/flow3

• Cheatsheet for Fluid (coming soon for Flow)http://www.NeosCompendium.dev/de/kompetenzen/typo3/

List of References

271

Page 272: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium LOBACHER.

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

List of References !

• GitHub Account of Lelesys (Pankaj Lele / http://www.lelesys.com/) https://github.com/lelesys

• IRC Log from the channel #typo3-neos at Freenodehttp://riesvantwisk.com/cms/home/irc-logs/typo3-neos-irc-log.html

List of References

272

Page 273: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.

Questions? Or perfectly confused?

273

Page 274: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.about the contributors

Patrick LobacherManagement // Consulting // Training

Veröffentlichungen:

• 43 years, happily married, resident in Munich • Author of 10 tech textbooks und > 50 Technical Articles regarding TYPO3

and web development • self employed in the area of web development since 1994 • Certified TYPO3 Integrator since 2009 • until 2012 Member of the TYPO3 Core-Teams:

Certification, Extbase and Content Editorial • until 2012 Member of the Expert Advisory Board of the

TYPO3 Association (EAB) • Co-Organizer of the TYPO3camp Munich 2008-2013 and the T3DD12 • Speaker at national and international Congresses • Lecturer at leading training institutes and Munich „Volkshochschule“

(adult education centre / adult evening classes)

274

Page 275: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

TYPO3 Neos - the Compendium

(c) 2014 - Patrick Lobacher | TYPO3 Neos 1.0.2 - the Compendium | 2014-03-07 | www.lobacher.de

LOBACHER.about the contributors

Roland Schenke

• 34 years, single, resident in Lüneburg • convinced uncle, respected brother-in-law, beloved brother • devoted to languages, linguistics and communication theory • freelancer in the area of web development since 2007 • self employed with 3 associate partners since 2013 • first experience with TYPO3 at Version 3.8 • Bronze Member of the TYPO3 Association since 2012 • Member of the TYPO3 Editorial Team since 2012

Head of Web Development at BuildingPossibilities©

275

Page 276: translated into english LOBACHER. · 2014-04-26 Roland Schenke Head of Web Development translated into english Patrick Lobacher LOBACHER. TYPO3 Neos 1.0.2 The Compendium

Thank you foryour Attention

LOBACHER.