Updated HMENU

An HMENU with the property special = updated will create a menu of the most recently updated pages.

By default the most recently updated page is displayed on top.

Mount pages are supported.

Properties

special.value

Property

special.value

Data type

list of page ids /stdWrap

Description

This will generate a menu of the most recently updated pages from the branches in the tree starting with the uid's (uid=35 and uid=56) listed.

EXT:site_package/Configuration/TypoScript/setup.typoscript
20 = HMENU
20.special = updated
20.special.value = 35, 56

special.mode

Property

special.mode

Data type

string

Default

SYS_LASTCHANGED

Description

The field in the database which should be used to get the information about the last update from.

The following values are possible:

SYS_LASTCHANGED: Is updated to the youngest tstamp of the records on the page when a page is generated.

crdate: Uses the "crdate"-field of the pagerecord.

tstamp: Uses the "tstamp"-field of the pagerecord, which is set automatically when the record is changed.

manual or lastUpdated: Uses the field "lastUpdated", which can be set manually in the page-record.

starttime: Uses the starttime field.

Fields with empty values are generally not selected.

special.depth

Property

special.depth

Data type

integer

Default

20

Description

Defines the tree depth.

The allowed range is 1-20.

A depth of 1 means only the start id, depth of 2 means start-id + first level.

Note: "depth" is relative to "beginAtLevel".

special.beginAtLevel

Property

special.beginAtLevel

Data type

integer

Default

0

Description

Determines starting level for the page trees generated based on .value and .depth.

0 is default and includes the start id.

1 starts with the first row of subpages,

2 starts with the second row of subpages.

Note: "depth" is relative to this property.

special.maxAge

Property

special.maxAge

Data type

integer +calc

Description

Only show pages, whose update-date at most lies this number of seconds in the past. Or with other words: Pages with update-dates older than the current time minus this number of seconds will not be shown in the menu no matter what.

By default all pages are shown. You may use +-*/ for calculations.

special.limit

Property

special.limit

Data type

integer

Default

10

Description

Maximal number of items in the menu. Default is 10, max is 100.

special.excludeNoSearchPages

Property

special.excludeNoSearchPages

Data type

boolean

Default

0 (false)

Description

If set, pages marked "No search" are not included.

[tsref:(cObject).HMENU.special = updated]

Example

Recently updated pages styled with Fluid

The content element Recently Updated Pages provided by the system extension EXT:fluid_styled_content is configured with a MenuProcessor which is based on the options of the HMENU and provides all its properties:

EXT:fluid_styled_content/Configuration/TypoScript/ContentElement/MenuRecentlyUpdated.typoscript
# Recently updated pages:
# ...
#
# CType: menu_recently_updated

tt_content.menu_recently_updated =< lib.contentElement
tt_content.menu_recently_updated {
    templateName = MenuRecentlyUpdated
    dataProcessing {
        10 = menu
        10 {
            special = updated
            special {
                value.field = pages
                maxAge = 3600*24*7
                excludeNoSearchPages = 1
            }
            dataProcessing {
                10 = files
                10 {
                    references.fieldName = media
                }
            }
        }
    }
}

The following Fluid template can be used to style the menu:

EXT:fluid_styled_content/Resources/Private/Templates/MenuRecentlyUpdated.html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">

    <f:if condition="{menu}">
        <ul>
            <f:for each="{menu}" as="page">
                <li>
                    <a href="{page.link}"{f:if(condition: page.target, then: ' target="{page.target}"')}{f:if(condition: page.current, then: ' aria-current="page"')} title="{page.title}">
                        <span>{page.title}</span>
                    </a>
                </li>
            </f:for>
        </ul>
    </f:if>

</f:section>
</html>