Neos Fusion In Action - Part 1

We published the first part of the Hitchhiker's Guide To Neos Fusion last week. It would be great to put all that knowledge to a test-drive, wouldn't it? Before diving into Neos and starting to build your next awesome project, take a break and solve these exercises to sharpen your Fusion skills.

If you haven't done so before, have a look at the Hitchhiker's Guide Part 1 before trying to solve these exercises. If you are brave, just go ahead and try your luck.

Hello world with simple values

Let's start by generating output with a simple value declaration. That's a string, number or boolean literal. You'll get some prepared Fusion code that you need to modify to solve the exercises. Just press the "Run" button and inspect the output. Messages will give you a hint if something was wrong. If the button is green, you have correctly solved the exercise!

Adjust the code, so that you get Hello world! as the output by using a string value

The next exercise is to output the number 42 (the answer to life, the universe and everything)

Objects are great

Let's go ahead and build something more sophisticated. An object can express much more and is the main building block in Fusion. Let's see how to use objects for different purposes. We start with the Array object that will render all individual properties and evaluates to the combined output.

Output Hello world! without using the string value 'Hello world!'

Did you notice the Array and string values in Fusion take whitespace literally?

Object declarations can be extended at any time - that's a true advantage of using a declarative style for the view. For this case a property can be declared or overridden by using the path syntax output.hello = 'Hello'.

Extend the existing object declaration to produce the output Hello world!

Fun with expressions

Objects are already much more powerful than simple values. But the real flexibility in Fusion comes from the built-in expression engine that is called Eel. They can be used for every property, so simple values, object values and expressions are very much interchangeable in Fusion.

A valid Eel expression is basically JavaScript syntax without functions and control statements (if, for, while).

Let's combine two strings to generate the output Hello world!

Eel comes with a selection of helpers that can be used for different purposes. The String, Array, Math and Configuration helpers include many useful functions to work with data in expressions.

Let's invoke a helper function to get only some part of a string. The String.substr function should do what we want. You can have a look at the MDN reference to learn more about the arguments it accepts. If you compare the Eel version with the JavaScript one, you'll note that we pass the string value itself as the first argument in the expression. This is needed because all the functions in Eel are static and do not work on instances.

Modify the function arguments to get the exact substring 'Hello world!'

In Eel we can use numeric, string, array or object values like in JavaScript. One useful function is String.split to create an array from a string value by splitting it by a given separator. Remember that items of an array can be accessed with the arrayValue[x] syntax (no matter if it's a function call or any other expression).

Output 'Hello world!' by using split with a correct separator and accessing the correct array index

The Array.join or Array.reverse functions work just like their counterparts in JavaScript, but their first argument is the array value that they should operate on. Array values can be specified with the ['apple', 'pear'] syntax. Let's have a look at how that works.

We mixed up the values here, apply Array.reverse(x) to get them in the right order

Collect the badge

Neos Fusion Hello world!

Neos Fusion Hello world!

Rewarded for solving code examples about Fusion basic syntax. The earner knows how to use simple values, extend object declarations and use simple expressions to manipulate string or array values.

...And cut!

We hope you enjoyed our interactive tour through some of the TypoScript 2 features. The next In Action article will feature context values, working with nodes (your content) and shows you the magic of FlowQuery.

Update (March, 2018): Renamed TypoScript 2 to Fusion 

comments powered by Disqus