PAGE Examples 

A simple "Hello World" Example 

Demonstrates:
EXT:site_package/Configuration/Sets/Main/setup.typoscript
# Default PAGE object:
page = PAGE
page.10 = TEXT
page.10.value = HELLO WORLD!
Copied!

A page using a Fluid template 

Demonstrates:
EXT:site_package/Configuration/Sets/Main/setup.typoscript
page = PAGE
page.10 = FLUIDTEMPLATE
page.10 {
  templateName = Default
  layoutRootPaths {
    10 = EXT:sitepackage/Resources/Private/Layouts
  }
  partialRootPaths {
    10 = EXT:sitepackage/Resources/Private/Partials
  }
  templateRootPaths {
    10 = EXT:sitepackage/Resources/Private/Templates
  }
  variables {
    foo = TEXT
    foo.value = bar
  }
}
Copied!

A page type used for ajax requests 

Demonstrates:

While many examples found in the internet promote to set config.no_cache = 1 it is better to only disable the cache for objects where it absolutely needs to be disabled, leaving all other caches untouched. This can be achieved for example by using a non-cacheable array, the COA_INT.

EXT:site_package/Configuration/Sets/Main/setup.typoscript
myAjax = PAGE
myAjax {
  typeNum = 1617455214
  config {
    disableAllHeaderCode = 1
    admPanel = 0
    debug = 0
  }
  # Prevent caching if necessary
  10 = COA_INT
  10 < plugin.tx_myextension_myajaxplugin
}
Copied!

A page type used for JSON data 

To create a page type in the format json an additional header with Content-type:application/json has to be set:

EXT:site_package/Configuration/Sets/Main/setup.typoscript
json = PAGE
json {
  typeNum = 1617455215
  10 =< tt_content.list.20.tx_myextension_myjsonplugin
  config {
    disableAllHeaderCode = 1
    additionalHeaders.10.header = Content-type:application/json
    admPanel = 0
  }
}
Copied!

The built-in JsonView can be used to create the content via Extbase.