Attention

TYPO3 v6 has reached its end-of-life April 18th, 2017 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.

There is no further ELTS support. It is strongly recommended updating your project.

optionSplit

optionSplit is a very tricky function. It's primarily used in the menu objects where you define properties of a whole bunch of items at once. Here the value of properties would be parsed through this function and depending on your setup you could e.g. let the last menu- item appear with another color than the others.

Syntax

The syntax is like this:

|*| splits the value in parts first, middle and last.

|| splits each of the parts first, middle and last in subparts.

The four rules

The following four rules are used by optionSplit:

  1. The priority is last, first, middle.

  2. If the middle-value is empty (""), the last part of the first- value is repeated.

  3. If the first - and middle value are empty, the first part of the last-value is repeated before the last value.

  4. The middle value is repeated.

Example:

first1 || first2 |*| middle1 || middle2 || middle3 |*| last1 || last2

Examples:

This is very complex and you might think that this has gone too far. But it's actually useful.

Now consider a menu with five items:

Introduction

Who are we?

Business

Contact

Links

... and a configuration like this:

temp.topmenu.1.NO {
  backColor = red
  ....
}

If you look in this reference (see later) at the linkWrap property of the GMENU object, you'll discover that all properties of .NO are parsed through optionSplit. This means that before the individual menu items are generated, the properties are split by this function. Now lets look at some examples:

Subparts ||

Example:

All items take on the same value. Only the first -part is defined and thus it's repeated to all elements

TS:        backColor = red

Introduction (red)

Who are we? (red)

Business (red)

Contact (red)

Links (red)

Example:

Here the first- part is split into subparts. The third subpart is repeated because the menu has five items.

TS:        backColor = red || yellow || green

Introduction (red)first, subpart 1

Who are we? (yellow) first, subpart 2

Business (green) first, subpart 3

Contact (green) first, subpart 3 (repeated)

Links (green) first, subpart 3 (repeated)

Parts |*|

Example:

Now a middle-value is also defined ("white"). This means that after the first two menu-items the middle-value is used.

TS:        backColor = red || yellow |*| white

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

Contact (white) middle

Links (white) middle

Example:

Now a last-value is also defined ("blue || olive"). This means that after the first two menu-items the middle-value is used.

TS:        backColor = red || yellow |*| white |*| blue || olive

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we expand the menu a bit (middle-value is repeated!)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (white) middle

.... (white) middle

.... (white) middle

.... (white) middle

.... (white) middle

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we contract the menu to only four items (the middle -value is discarded as it's priority is the least)

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

... and if we contract the menu to only 3 items (the last subpart of the first-value is discarded as it's priority is less than the last-value)

Introduction (red) first, subpart 1

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"1: The priority is last, first, middle"

Now the last two examples showed that the last-value has the highest priority, then the first-value and then the middle -value.

"2: If the middle-value is empty, the last part of the first-value is repeated"

Example:

The middle-value is left out now. Then subpart 2 of the first value is repeated. Please observe that no space must exist between the two |*||*|!

TS:        backColor = red || yellow |*||*| blue || olive

Introduction (red) first, subpart 1

Who are we? (yellow) first, subpart 2

Business (yellow) first, subpart 2 (repeated)

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"3: If the first - and middle value are empty, the first part of the last-value is repeated before the last value"

Example:

The middle-value and first-value are left out now. Then the subpart 1 of the last value is repeated. Please observe that no space must exist between the two |*||*|!

TS:        backColor = |*||*| blue || olive

Introduction (blue) last, subpart 1 (repeated)

Who are we? (blue) last, subpart 1 (repeated)

Business (blue) last, subpart 1 (repeated)

Contact (blue) last, subpart 1

Links (olive) last, subpart 2

"4: The middle value is repeated"

Example:

TS:        backColor = red |*| yellow || green |*|

Introduction (red) first

Who are we? (yellow) middle, subpart 1

Business (green) middle, subpart 2

.... (yellow) middle, subpart 1

.... (green) middle, subpart 2

.... (yellow) middle, subpart 1

.... (green) middle, subpart 2

Contact (yellow) middle, subpart 1

Links (green) middle, subpart 2

Overview with abstract examples

The following table gives you a condensed overview of how the optionSplit rules work together:

optionSplit

Resulting items

Rule

a

a a a a

a || b || c

a b c c c ...

a || b |*| c

a b c c c ...

a || b |*| c |*| d || e

a b c c ... c c d e

Rule 1

a || b |*| c |*| d || e

a b d e

Rule 1

a || b |*| c |*| d || e

a d e

Rule 1

a || b |*||*| c || d

a b ... b c d

Rule 2

|*||*| a || b

a a ... a b

Rule 3

a |*| b || c |*|

a b c b c b c ... b c

Rule 4