This provides a way to load the array $GLOBALS['TSFE']->register[] with values. It does not return anything!

The register is working like a stack: With each call new content can be put on top of the stack. RESTORE_REGISTER can be used to remove the element at the topmost position again. The registers are processed in the reverse order. The register with the highest number will be processed as the first, and the register with the lowest number will be processed as the last one. This corresponds to the stack principle Last In – First Out (LIFO).

With the advent of Fluid templating, registers are used less often than they used to be. In the Core they are not being used anymore.


(array of field names)

array of field names
Data type

string / stdWrap


This sets contentWidth, label and head.

page.27 {
  contentWidth = 500

  label.field = header

  head = some text
  head.wrap = <b> | </b>


1.param.cObject = TEXT
1.param.cObject.stdWrap.data = GP:the_id
# To avoid SQL injections we use intval - so the parameter
# will always be an integer.
1.param.cObject.stdWrap.intval = 1

10.table = tx_my_table
10.select {
  pidInList = this
  orderBy = sorting
  # Now we use the registered parameter
  where = uid = {REGISTER:param}
  where.insertData = 1
10.renderObj = COA
10.renderObj {
  10 = TEXT
  10.stdWrap.field = tx_my_text_field

In this example we first load a special value, which is given as a GET/POST parameter, into the register. Then we use a CONTENT object to render content based on this value. This CONTENT object loads data from a table tx_my_table and looks up the entry using the value from the register as a unique id. The field tx_my_text_field of this record will be rendered as output.

For an example in combination with RESTORE_REGISTER see the example on the page RESTORE_REGISTER.