RECORDS
This object is meant for displaying lists of records from a variety of
tables. Contrary to the CONTENT object, it does
not allow very fine selections of records (as it has no 
        select
property).
The register key SYS_ is updated with the 
        tstamp field of
the records selected which has a higher value than the current.
Note
Records with parent ids (pid's) for non-accessible pages (that is hidden, timed or access-protected pages) are normally not selected. Pages may be of any type, except recycler. Disable the check with the dontCheckPid option.
Properties
| Name | Type | 
|---|---|
| records-list / stdWrap | |
| categories-list / stdWrap | |
| list of tables / stdWrap | |
| cObject | |
| boolean / stdWrap | |
| wrap / stdWrap | |
| ->stdWrap | |
| cache | 
source
- 
                            
- Type
 - records-list / stdWrap
 
List of record id's, optionally with prepended table names.
Example:
source = tt_content_34, 45, tt_links_56Copied! 
categories
- 
                            
- Type
 - categories-list / stdWrap
 
Comma-separated list of system categories uid's. Records related to these categories will be retrieved and made available for rendering.
Only records from the tables defined in the tables property will be retrieved.
Warning
If both
sourceandcategoriesproperties are defined, thesourceproperty will take precedence, as it is considered more precisely targeted. 
categories.relation
- 
                        
Name of the categories relation field to use for building the list of categorized records, as there can be several such fields on a given table.
 
tables
- 
                            
- Type
 - list of tables / stdWrap
 
List of accepted tables. For items listed in the source property which are not prepended with a table name, the first table will be used.
Records from tables configured in conf are also allowed.
Example:
tables = tt_content, tt_address, tt_links conf.tx_myexttable = TEXT conf.tx_myexttable.value = Hello worldCopied!This adds the tables
tt_,content tt_,address tt_andlinks tx_.myexttable  
conf.[*table name*]
dontCheckPid
wrap
stdWrap
cache
- 
                            
- Type
 - cache
 
See cache function description for details.
 
Examples
Selection with source
The following example would display some related content referenced from the page properties.
page.42 = RECORDS
page.42 {
   source.field = tx_examples_related_content
   tables = tt_content
}
    Since no 
        conf property is defined, the rendering will
look for a top-level TypoScript object bearing the name of the
table to be rendered (e.g. 
        tt_).
Selection with source II
20 = RECORDS
20 {
	source = 10,12
	dontCheckPid = 1
	tables = tt_content
}
    This example loads the content elements with the UIDs 10 and 12 no matter where these elements are located and whether these pages are accessible for the current user.
Selection with categories
If you want to display categorized content with a 
        RECORDS object
you could do it like this:
categorized_content = RECORDS
categorized_content {
	categories.field = selected_categories
	categories.relation.field = category_field
	tables = tt_content
	conf.tt_content = TEXT
	conf.tt_content {
		stdWrap.field = header
		stdWrap.typolink.parameter = {field:pid}#{field:uid}
		stdWrap.typolink.parameter.insertData = 1
		stdWrap.wrap = <li>|</li>
	}
	wrap = <ul>|</ul>
}
    Contrary to the previous example, in this case the 
        conf property
is present and defines a very simple rendering of each content element
(i.e. the header with a direct link to the content element).
However, the same can be achieved with a FLUIDTEMPLATE and
data processing. This way templating is much more flexible. See the following
example from the system extension fluid_:
tt_content.menu_categorized_content =< lib.contentElement
tt_content.menu_categorized_content {
   templateName = MenuCategorizedContent
   dataProcessing {
      10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
      10 {
         table = tt_content
         selectFields = tt_content.*
         groupBy = uid
         pidInList.data = leveluid : 0
         recursive = 99
         join.data = field:selected_categories
         join.wrap = sys_category_record_mm ON uid = sys_category_record_mm.uid_foreign AND sys_category_record_mm.uid_local IN(|)
         where.data = field:category_field
         where.wrap = tablenames='tt_content' and fieldname='|'
         orderBy = tt_content.sorting
         as = content
      }
   }
}