The Page TSconfig primarily concerns configuration of the modules in the TYPO3 backend. It may also relate to values in the frontend display occasionally.
The Page TSconfig for a page is accumulated from the root and extends to cover the whole branch of subpages as well (unless values are overridden further out).
This is an example of the TSconfig field with a snippet of configuration for the Rich Text Editor. Precisely the Rich Text Editor is quite a good example of the usefulness of 'Page TSconfig'. The reason is that you may need the RTE to work differently in different parts of the website. For instance you might need to offer other style-classes in certain parts of the website. Or some options might need to be removed in other parts. The 'Page TSconfig' is used to configure this.
The "TSconfig" field here is available in the page headers:
If you need to check out the actual configuration for a certain branch in the website, use the 'Web>Info' module (extension "info_pagetsconfig"):
Page TSconfig is designed to be individual for branches of the page tree. However it can be very handy to set global values that will be initialized from the root of the tree.
In extensions this is easily done by the extension API function, t3lib_extMgm::addPageTSConfig(). In the (ext_)localconf.php file you can call it like this to set default configuration:
t3lib_extMgm::addPageTSConfig('
RTE.default {
proc.preserveTables = 1
showButtons = cut,copy,paste,fontstyle,fontsize,textcolor
hideButtons = class,user,chMode
}
');
This API function simply adds the content to $TYPO3_CONF_VARS[BE]['defaultPageTSconfig']
This is the Page TSconfig Top Level Objects (TLOs):
Property: | Data type: | Description: | Default: |
|---|---|---|---|
mod | ->MOD | Options for the backend modules. Notice that these options are merged with settings from User TSconfig (TLO: mod) which takes precedence. | |
RTE | ->RTE | This defines configuration for the Rich Text Editor. Please refer to the RTE section in the "TYPO3 Core API" document. | |
TCEMAIN | ->TCEMAIN | Configuration for the TYPO3 Core Engine (TCEmain) | |
TCEFORM | ->TCEFORM | Extra configuration for the form fields rendered by the TCEforms-class in general. | |
TSFE | ->TSFE | Options for the TSFE front end object. | |
user | This is for custom purposes. Deprecated, use "tx_*" below from extensions | ||
tx_[extension key with no underscore] | This is reserved space for extensions. |
[page]
Configuration for backend modules. Generally the syntax is [module_name].[property]. The module name is defined in the conf.php files for the module.
Most of the modules in TYPO3 has a "function menu" selector box and this menu is usually configurable so you are able to remove menu items in specific sections of the page tree (or by overriding via User TSconfig, you could disable an option totally for a specific user/group).
In this case the main menu of the Web>Info module looks like this:
By adding this Page TSconfig we can remove the "Page TSconfig" item:
mod.web_info.menu.function {tx_infopagetsconfig_webinfo = 0
}
The function menu will now look like this:
The 'Page TSconfig' option is simply disabled by setting this Page TSconfig!
All you need to know in order to disable function menu items in the backend modules is, which modules support it and what the key of the menu item is (in the above example it was 'tx_infopagetsconfig_webinfo'). Modules extending the class "t3lib_SCbase" will most likely provide this out-of-the-box since it's a part of the base class in t3lib_SCbase::menuConfig().
Examples from the TYPO3 core is listed in the table below (Testsite package):
Property: | - | Description: |
|---|---|---|
web_layout.menu.function | Web > Page module
Option tags: <select name="SET[function]"> <option value="1">Columns</option> <option value="0">QuickEdit</option> <option value="2">Languages</option> <option value="3">Page information</option> </select> Example: # Disables all items except the "QuickEdit" item: mod.web_layout.menu.function {1 = 0 2 = 0 3 = 0 } | |
web_info.menu.function | Web > Info module
Option tags: <select name="SET[function]"> <option value="tx_cms_webinfo_page">Pagetree overview</option> <option value="tx_belog_webinfo">Log</option> <option value="tx_infopagetsconfig_webinfo">Page TSconfig</option> <option value="tx_cms_webinfo_hits">Hit Statistics</option> <option value="tx_indexedsearch_modfunc1">Indexed search</option> </select> Example: # Disables the item "Hit Statistics": mod.web_info.menu.function {tx_cms_webinfo_hits = 0 } | |
web_func.menu.function | Web > Functions module
Option tags: <select name="SET[function]"> <option value="tx_funcwizards_webfunc">Wizards</option> </select> | |
web_func.menu.wiz | Web > Functions module, Wizards sub module This is the 2nd-level Function Menu in the Web > Functions module. Instead of the "function" key of the main menu it just uses the key "wiz" instead.
Option tags: <select name="SET[wiz]"> <option value="tx_wizardcrpages_webfunc_2">Create multiple pages</option> <option value="tx_wizardsortpages_webfunc_2">Sort pages</option> </select> Example: # Disables the sub-item "Create multiple pages": mod.web_func.menu.wiz {tx_wizardcrpages_webfunc_2 = 0 } | |
web_ts.menu.function | Web > Template module
Option tags: <select name="SET[function]"> <option value="tx_tstemplateceditor">Constant Editor</option> <option value="tx_tstemplateinfo">Info/Modify</option> <option value="tx_tstemplateobjbrowser">TypoScript Object Browser</option> <option value="tx_tstemplateanalyzer">Template Analyzer</option> <option value="tx_tstemplatestyler_modfunc1">CSS Styler</option> </select> | |
user_task.menu.function | User > Task Center This is slightly different because the Task Center does not provide a selector box function menu. But behind the scene it uses the same functionality of saving "states" and therefore you can also blind items in the Task Center. There is one tricky thing thought: The Task Center is not depending on a page in the page tree! So you either have to set default Page TSconfig or User TSconfig to blind options here!
Keys are: tx_sysnotepad = Quick Notetx_taskcenterrecent = Recent Pagestx_taskcenterrootlist = Web>List module / roottx_taskcentermodules = Pluginstx_sysaction = Actionstx_systodos = Tasks Example: Set this as User TSconfig: # Task Center configuration: mod.user_task.menu.function {# Disable "Recent Pages" display: tx_taskcenterrecent = 0 # Disable "Action" list tx_sysaction = 0 } |
[page:mod; beuser:mod]
Since function menu items can be provided from extensions it is not possible to create a complete list of menu keys. (The list in the table above is what is installed by default in the Testsite package.)
Therefore, if you want to blind a menu item the only sure way of doing it is to look in the HTML source of the backend module and find the selector box with the function menu and extract the key from the <option> tags. This listing is a cleaned-up version of a function menu. The keys are the values of the option tags:
<select>
<option value="tx_cms_webinfo_page">Pagetree overview</option>
<option value="tx_belog_webinfo">Log</option>
<option value="tx_infopagetsconfig_webinfo">Page TSconfig</option>
</select>
As you can see this is where the key for the example before was found:
mod.web_info.menu.function {tx_infopagetsconfig_webinfo = 0
}
WARNING:
Blinding Function Menu items is not hardcore access control! All it does is to hide the possibility of accessing that module functionality from the interface. It might be possible for users to hack their way around it and access the functionality anyways. You should use the option of blinding elements mostly to remove otherwise distracting options.
In all standard modules the Page TSconfig values of the “mod.” branch may be overridden by the same branch of values set for the backend user.
To illustrate this feature lets consider the case from above where a menu item in the Web>Info module was disabled in the Page TSconfig by this value:
mod.web_info.menu.function {tsconf = 0
}
If however we set this configuration in the TSconfig of a certain backend user (eg. the admin user), that user would still be able to select this menu item because the value of his User TSconfig overrides the same value set in the Page TSconfig:
mod.web_info.menu.function {tsconf = 1
}
Here's another example where the value 'mod.web_layout.editFieldsAtATime' has been overridden by User TSconfig to the value '5' instead of '1'. The image shows you how to check the Page TSconfig (the upper image) and also see if User TSconfig of the current user (the logged in user) has altered anything from this configuration (lower image):
Property: | Data type: | Description: | Default: |
|---|---|---|---|
colPos_list | (list of integers, blank = don't do anything.) | This option lets you specify which columns of tt_content elements should be displayed in the 'Columns' view of the modules, in particular Web>Page. By default there are four columns, Left, Normal, Right, Border. However most websites use only the Normal column, maybe another also. In that case the remaining columns are not needed. By this option you can specify exactly which of the columns you want to display. Each column has a number which ultimately comes from the configuration of the table tt_content, field 'colPos' found in the tables.php file. This is the values of the four default columns: Left: 1 Normal: 0 Right: 2 Border: 3 Example: This results in only the Normal and Border column being displayed: mod.SHARED.colPos_list = 0,3 | |
defaultLanguageLabel | string | Alternative label for "Default" when language labels are shown in the interface. Used on Web>List, Web>Page and TemplaVoilas page module. | |
defaultLanguageFlag | string | Flag icon filename from gfx/flags/ for default language User in Web>List and TemplaVoila page module. |
[page:mod.SHARED; beuser:mod.SHARED]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
tt_content.colPos_list | (list of integers, blank = don't do anything.) | See mod.SHARED.colPos_list for details. If non-blank, this list will override the one set by mod.SHARED.colPos_list. Example: This results in only the Normal and Border column being displayed: mod.web_layout.tt_content.colPos_list = 0,3 | |
tt_content.fieldOrder | list of field names from tt_content table | This allows you to specify (and thereby overrule) the preferred order of the fieldnames of the "Quick Edit" editing forms of the tt_content table (Content Elements). Just specify the list of fields, separated by comma. Then these fields will be listed first and all remaining fields thereafter in their original order. Example: This results in the 'Text' field and thereafter 'Header' field being display as the very first fields instead of the 'Type' field. mod.web_layout.tt_content {fieldOrder = bodytext, header } | |
editFieldsAtATime | int+ | Specifies the number of subsequent content elements to load in the editform when clicking the editicon of a content element in the 'Columns' view of the module. Example: mod.web_layout {editFieldsAtATime = 2 } | 1 |
noCreateRecordsLink | boolean | If set, the link in the bottom of the page, "Create new record", is hidden. | |
QEisDefault | boolean | If set, then the QuickEditor is the first element in the Function Menu in the top of the menu in Web>Page | |
disableSearchBox | boolean | Disables the search box in Columns view. | |
disableBigButtons | boolean | Disables the large buttons in top of the Columns view. These are the buttons that are hidden by this option:
| |
disableAdvanced | boolean | Disables the clear cache advanced function in the bottom of the page in the module, including the "Create new record" link. | |
disableNewContentElementWizard | boolean | Disables the fact that the new-content-element icons links to the content element wizard and not directly to a blank “NEW” form. | |
defaultLanguageLabel | string | Alternative label for "Default" when language labels are shown in the interface. Overrides the same property from mod.SHARED if set. | |
defLangBinding | boolean | If set, translations of content elements are bound to the default record in the display. This means that within each column with content elements any translation found for exactly the shown default content element will be shown in the language column next to. This display mode should be used depending on how the frontend is configured to display localization. The frontend must display localized pages by selecting the default content elements and for each one overlay with a possible translation if found. | |
disableIconToolbar | boolean | Disables the topmost icon toolbar with the "view"-Icon and the icon toolbar below. |
[page:mod.web_layout; beuser:mod.web_layout]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
noCreateRecordsLink | boolean | If set, the link in the bottom of the page, "Create new record", is hidden. Example: mod.web_list {noCreateRecordsLink = 1 } | |
alternateBgColors | boolean | If set, the background colors of elements will alternate. Example: mod.web_list {alternateBgColors = 1 } The result is alternating background colors for each element:
| |
disableSingleTableView | boolean | If set, then the links on the table titles which shows a single table listing only will not be available (including sorting links on columns titles, because these links jumps to the table-only view). | |
listOnlyInSingleTableView | boolean | If set, then records will be listed only when the single table view is enabled. This is very practical for pages containing many records from many tables! Example: mod.web_list {listOnlyInSingleTableView = 1 } The result will be that records from tables are listed only in the single-table mode and the default view will just show number of table records in page and the table description if available:
| |
allowedNewTables | list of tablenames | If this list is set, then only tables listed here will have a link to “create new” in the page and subpages. This also affects "db_new.php" (the display of “Create new record”) Note: Technically records can be created (eg. by copying/moving), so this is "pseudo security". The point is to reduce the number of options for new records visually. Example: mod.web_list {allowedNewTables = pages, tt_news } Only pages and tt_news table elements will be linked to in the New record screen:
| |
newWizards | boolean | If set, then the new-link over the control panel of the pages and tt_content listings in the List module will link to the wizards and not create a record in the top of the list. | |
showClipControlPanelsDespiteOfCMlayers | boolean | If set, then the control- and clipboard panels of the module is shown even if the context-popups (ClickMenu) are available. Normally the control- and clipboard panels are disabled (unless extended mode is set) in order to save bandwidth. | |
newPageWiz.overrideWithExtension newContentWiz.overrideWithExtension | string | If set to an extension key, (eg. “templavoila”) then the “mod1/index.php” file of that extension will be used for creating new elements on the page. "newContentWiz" will likewise use the "mod1/db_new_content_el.php" for creating new content elements. Also see “options.overridePageModule” | |
clickTitleMode | string | Keyword which defines what happens when a user clicks the title in the list. Default is that pages will go one level down while other records have no link at all. Keywords: edit = Edits record info = Shows information show = Shows page/content element in frontend |
[page:mod.web_list; beuser:mod.web_list]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
type | int+ | Enter the value of the &type parameter passed to the webpage. Example: By this configuration frontend pages will be shown with "index.php?id=123&type=1" from the Web > View module: mod.web_view {type = 1 } |
[page:mod.web_view; beuser:mod.web_view]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
allowTVlisting | boolean | If set the Technical and Validation listings are available in the EM. Those will evaluate ALL available extensions and that can take many seconds (up to 30) depending on number of extensions. Example: mod.tools_em.allowTVlisting = 1 Enables these options in the Extension Manager:
|
[beuser:mod.tools_em]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
disableDocSelector | boolean | If set, the document selector is disabled Example: mod.xMOD_alt_doc {disableDocSelector = 1 disableCacheSelector = 1 } The result is that both the document and cache action selector is hidden in the form page:
(The interesting part is what is missing...) | |
disableCacheSelector | boolean | If set, the cache/save/close selector is disabled. See example above. |
[page:mod.xMOD_alt_doc; beuser:mod.xMOD_alt_doc]
Property: | Data type: | Description: |
|---|---|---|
table.[tablename] default | ->TCEMAIN_tables | Options for each table. |
permissions.userid permissions.groupid | int+ | Hardcodes the default owner Backend User / Group UID of new and copied pages. (The default owner is the backend user that creates / copies the record. The default user group is the "main group" of the backend user - the group in the very top of the users group-list.) Example: TCEMAIN { # Owner be_users UID for new pages: permissions.userid = 2 # Owner be_groups UID for new pages: permissions.groupid = 3 } Backend User with UID 2 is "test" and the Backend Group with UID 3 is "test_group". With the configuration above a new page would be created with this user/group setting instead of the defaults:
|
permissions.user permissions.group permissions.everybody | list of string/int[0-31] | Default permissions set for owner-user, owner-group and everybody. Keylist: show,edit,delete,new,editcontent Alternatively you can specify an integer from 0 to 31 indicating which bits corresponding to the keylist should be set. (Bits in keylist: show=1,edit=2,delete=4,new=8,editcontent=16) Defaults from $TYPO3_CONF_VARS: "user" => "show,edit,delete,new,editcontent", “group" => "show,edit,new,editcontent", "everybody" => "" Example: TCEMAIN.permissions {# User can do anything (default): user = 31 # Group can do anything # (normally "delete" is disabled) group = 31 # Everybody can at least see the page # (normally everybody can do nothing) everybody = show } The page "Test (copy 3)" was created with the settings above for permissions. Compared to the two other pages created with default permissions you can see the effect: The Backend Group can now also delete the page by default and Everybody has read access:
|
clearCacheCmd | List of values (integers, "all", "pages") | This can allow you to have the cache for additional pages cleared when saving to some page or branch of the page tree. Examples: # Will clear the cache for page ID 12 and 23 # when saving a record in this page: TCEMAIN.clearCacheCmd = 12,23 # Will clear all pages cache: TCEMAIN.clearCacheCmd = pages # Will clear ALL cache: TCEMAIN.clearCacheCmd = all |
clearCache_pageSiblingChildren | boolean | If set, then children of all siblings of a page being edited will have the page cache cleared. (Default is that when a page record is edited, the cache for itself and siblings (same level) is cleared.) |
clearCache_pageGrandParent | boolean | If set, then the grand parent of a page being edited will have the page cache cleared. |
clearCache_disable | boolean | If set, then the automatic clearing of page cache when records are edited etc. is disabled. This also disables the significance of the two "clearCache_page*" options listed above. |
translateToMessage | string | Defines the string that will be prepended to every field value if you copy an element to another language version. The special string “%s" will be replaced with the language title. Default ist "Translate to [language title]:". Example: TCEMAIN {# Set a German label: translateToMessage = Bitte in "%s" übersetzen: } |
[page:TCEMAIN]
Processing options for a $TCA configured table.
Property: | Data type: | Description: |
|---|---|---|
history.maxAgeDays | int+ | The number of days elements are in the history at most. Takes precedence over keepEntries. Default is 7 days. Range 0-200. Zero turns the magAgeDays of. |
disablePrependAtCopy | boolean | Disables the “prependAtCopy” feature (if configured for table in $TCA) (The word "prepend" is misguiding - the "(copy)" label is appended to (put after) the record title! Sorry for that mistake, it isn't the only time I have made that.) Example: TCEMAIN.table.pages { # Pages will NOT have "(copy)" appended: disablePrependAtCopy = 1 # Pages will NOT be hidden upon copy: disableHideAtCopy = 1 } These settings means that a page copied (say, the last page in this tree, labeled "Test") will neither have "(copy X)" appended nor be hidden. This effect is shown in the first sub page here, labeled "Test". It appears exactly like the third page that was copied. The page in the middle, labeled "Test (copy 3)" is the default mode where the page is hidden and the "(copy X)" suffix is added if another page with the same named existed already.
|
disableHideAtCopy | boolean | Disables the “hideAtCopy” feature (if configured for table in $TCA) For example, see "disablePrependAtCopy" above. |
[page:TCEMAIN.default/TCEMAIN.table.(tablename)/->TCEMAIN_tables]
Allows detailed configuration of how TCEforms are rendered for a page tree branch and for individual tables if you like. You can enable and disable options, blind options in selector boxes etc.
Property: | Data type: | Description: |
|---|---|---|
[tablename].[field] [tablename].[field].types.[type] | ->TCEFORM_confObj | These objects contain additional configuration of the TCEFORM interface. For the properties available, refer to the table below. This is a description of how you can customize in general and override for specific types. TCEFORM.[tablename].[field] - configures the field in TCEFORM for all types. TCEFORM.[tablename].[field].types.[type] - configures the field in TCEFORM in case the 'type'-value of the field matches type. |
[page:TCEFORM]
Properties for the TCEFORM configuration object (see introduction above).
Property: | Data type: | Description: |
|---|---|---|
disabled | boolean | If set, the field is not rendered. Example: TCEFORM.pages.title {# You cannot edit the Page title field now: disabled = 1 } |
removeItems | list of values | (applies to select-types only) This removes the items from the list which has a value found in this comma list of values. Example: TCEFORM.pages.doktype { # Remove the "Recycler" and "Spacer" page type options: removeItems = 199, 255 } |
addItems.[itemValue] | string (label, LS) | (applies to select-types only) This will add elements to the list. Notice that the added elements might be removed if the selector represents records. In that case only still existing records will be preserved. Example: TCEFORM.pages.doktype { # Creates a new page type option: addItems.123 = New Page type! # Creates yet a page type with "locallang" title: addItems.124 = LLL:EXT:lang/locallang_tca.php:title } This example extends the options for Page types with two new items:
Warning: This example shows the principle of adding adhoc-items to a selector box in TYPO3 but you should not add new page types or Content Element types this way! |
disableNoMatchingValueElement | boolean | (applies to select-types only) If set, the element "CURRENT VALUE IS NOT AVAILABLE" will not be added to the list. Example: If a selector box value is not available among the options in the box the default behavior of TYPO3 is to preserve the value and show a label that warns about this special state:
Setting this option disables that behavior: TCEFORM.pages.doktype { # "CURRENT VALUE IS NOT ..." label will never show up: disableNoMatchingValueElement = 1 } ... and the selector box will default to the first element in the selector box:
|
noMatchingValue_label | string (LS) | (applies to select-types only) Allows for an alternative label the “noMatchingValue” element. You can insert the placeholder "%s" to insert the value. If you supply a blank value the label will be blank. Example: TCEFORM.pages.doktype { # Alternative "CURRENT VALUE IS NOT ..." label: noMatchingValue_label = VALUE "%s" was not available! } The result will be:
|
altLabels.[item_value] | string (LS) | (applies to select-types only) This allows you to enter alternative labels for the items in the list. Example: TCEFORM.pages.doktype { # Setting alternative labels: altLabels.1 = STANDARD page type altLabels.2 = ADVANCED page type altLabels.254 = System Folder (for various elements) # Sets the default labels for Recycler (via "locallang"): altLabels.255 = LLL:EXT:lang/locallang_tca.php:doktype.I.2 } Result will be:
|
PAGE_TSCONFIG_ID | integer | (applies to select-types with foreign table) When the select-types are used with foreign-table the where-query has four markers (see description of $TCA in the “Inside TYPO3” document.) The value of three of these markers may be set from Page TSconfig. |
PAGE_TSCONFIG_IDLIST | comma list of integers | (applies to select-types with foreign table) See above |
PAGE_TSCONFIG_STR | string | (applies to select-types with foreign table) See above |
itemsProcFunc.[...] | (custom) | (applies to select-types with itemsProcFunc) The properties of this key is passed on to the itemsProcFunc in the parameter array by the key “TSconfig”. |
RTEfullScreenWidth | int+/% | (applies for RTE text fields only with the RTE wizard configured) The width of the RTE full screen display. If nothing is set, the whole width is used which means “100%”. If you set an integer value, that indicates the pixels width. |
linkTitleToSelf | boolean | (all fields) If set, then the title of the field in the forms links to alt_doc.php editing ONLY that field. Works for existing records only - not new records. Extra property: .returnUrl = boolean; if set, then the return URL is also set. Example: TCEFORM.pages.title {# The label for the "title" field will link itself linkTitleToSelf = 1 # From the form with "title", return to full form: linkTitleToSelf.returnUrl = 1 } The result is that the label for the title field will be a link:
Clicking the link brings you to a form where only this field is shown:
|
[page:TCEFORM.(tablename).(field)/TCEFORM.(tablename).(field).types.(type)]
Property: | Data type: | Description: | Default: |
|---|---|---|---|
jumpUrl_transferSession | boolean | If set, the jumpUrl redirection to the URL will be prepended with a parameter that transfers the current fe_users session to that URL. This URL should be the TYPO3 frontend in the same database, just at another domain (else it makes no sense). You can implement it in your own links if you like. This is how you do: You must send the parameter 'FE_SESSION_KEY' as GET or POST. The parameter looks like this: [fe_user-session-id]-[a hash made to prevent misuse] The parameter can be calculated like this: $param = '&FE_SESSION_KEY='.rawurlencode( $GLOBALS['TSFE']->fe_user->id.'-'. md5( $GLOBALS['TSFE']->fe_user->id.'/'. $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey'] ) ); | |
constants | [TypoScript Frontend Constants defaults] | Defaults for TypoScript Template constants! This features allows you to pass some amount of information (in the form of TypoScript Template constants) to the frontend. The specific use of this should be information which you want to configure for both frontend and backend. For instance you could have a backend module which should act in a certain way depending on in which branch of the page tree it operates. The change of behavior is set by Page TSconfig as always but since you need the same setting applied somewhere in the frontend you don't want the redundancy of specifying the value twice. In such a case you can use this feature. Example: TSFE.constants.websiteConfig.id = 123 In the TypoScript templates you can now insert this constant as {$websiteConfig.id}
In the backend module (in the Web main module) you can reach the value by a few codelines like these: $PageTSconfig = t3lib_BEfunc::getPagesTSconfig($this->pObj->id); $websiteID = $PageTSconfig['TSFE.']['constants.']['websiteConfig.']['id']; Notice: In the frontend the setting of default constants will only apply to a branch of the tree if a template record is found on that page (or if a template record is set for “next level”). In other words: If you want the Page TSconfig constant defaults to affect only a certain branch of the page tree, make sure to create a template record (a blank one will do) on the page that carries the Page TSconfig information. |
[page:TSFE]