protected function tt_content_drawFooter(PageLayoutView $parentObject, array $row)
    {
        $content = '';
        // Get processed values:
        $info = [];
        $parentObject->getProcessedValue('tt_content', 'starttime,endtime,fe_group,space_before_class,space_after_class', $row, $info);

        // Content element annotation
        if (!empty($GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']) && !empty($row[$GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']])) {
            $info[] = htmlspecialchars($row[$GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']]);
        }

        // Call drawFooter hooks
        foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawFooter'] ?? [] as $className) {
            $hookObject = GeneralUtility::makeInstance($className);
            if (!$hookObject instanceof PageLayoutViewDrawFooterHookInterface) {
                throw new \UnexpectedValueException($className . ' must implement interface ' . PageLayoutViewDrawFooterHookInterface::class, 1404378171);
            }
            $hookObject->preProcess($parentObject, $info, $row);
        }

        // Display info from records fields:
        if (!empty($info)) {
            $content = '<div class="t3-page-ce-info">
				' . implode('<br>', $info) . '
				</div>';
        }
        // Wrap it
        if (!empty($content)) {
            $content = '<div class="t3-page-ce-footer">' . $content . '</div>';
        }
        return $content;
    }
protected function tt_content_drawFooter(PageLayoutView $parentObject, array $row)
    {
        $content = '';
        // Get processed values:
        $info = [];
        $parentObject->getProcessedValue('tt_content', 'starttime,endtime,fe_group,space_before_class,space_after_class', $row, $info);

        // Content element annotation
        if (!empty($GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']) && !empty($row[$GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']])) {
            $info[] = htmlspecialchars($row[$GLOBALS['TCA']['tt_content']['ctrl']['descriptionColumn']]);
        }

        // Call drawFooter hooks
        foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['cms/layout/class.tx_cms_layout.php']['tt_content_drawFooter'] ?? [] as $className) {
            $hookObject = GeneralUtility::makeInstance($className);
            if (!$hookObject instanceof PageLayoutViewDrawFooterHookInterface) {
                throw new \UnexpectedValueException($className . ' must implement interface ' . PageLayoutViewDrawFooterHookInterface::class, 1404378171);
            }
            $hookObject->preProcess($parentObject, $info, $row);
        }

        // Display info from records fields:
        if (!empty($info)) {
            $content = '<div class="t3-page-ce-info">
				' . implode('<br>', $info) . '
				</div>';
        }
        // Wrap it
        if (!empty($content)) {
            $content = '<div class="t3-page-ce-footer">' . $content . '</div>';
        }
        return $content;
    }
protected function tt_content_drawFooter ( PageLayoutView $ parentObject , array $ row ) { $ content = '' ; // Get processed values: $ info = [ ] ; $ parentObject -> getProcessedValue ( 'tt_content' , 'starttime,endtime,fe_group,space_before_class,space_after_class' , $ row , $ info ) ; // Content element annotation if ( ! empty ( $ GLOBALS [ 'TCA' ] [ 'tt_content' ] [ 'ctrl' ] [ 'descriptionColumn' ] ) && ! empty ( $ row [ $ GLOBALS [ 'TCA' ] [ 'tt_content' ] [ 'ctrl' ] [ 'descriptionColumn' ] ] ) ) { $ info [ ] = htmlspecialchars ( $ row [ $ GLOBALS [ 'TCA' ] [ 'tt_content' ] [ 'ctrl' ] [ 'descriptionColumn' ] ] ) ; } // Call drawFooter hooks foreach ( $ GLOBALS [ 'TYPO3_CONF_VARS' ] [ 'SC_OPTIONS' ] [ 'cms/layout/class.tx_cms_layout.php' ] [ 'tt_content_drawFooter' ] ?? [ ] as $ className ) { $ hookObject = GeneralUtility :: makeInstance ( $ className ) ; if ( ! $ hookObject instanceof PageLayoutViewDrawFooterHookInterface ) { throw new \ UnexpectedValueException ( $ className . ' must implement interface ' . PageLayoutViewDrawFooterHookInterface :: class , 1404378171 ) ; } $ hookObject -> preProcess ( $ parentObject , $ info , $ row ) ; } // Display info from records fields: if ( ! empty ( $ info ) ) { $ content = '<div class="t3-page-ce-info">
				' . implode ( '<br>' , $ info ) . '
				</div>' ; } // Wrap it if ( ! empty ( $ content ) ) { $ content = '<div class="t3-page-ce-footer">' . $ content . '</div>' ; } return $ content ; }
Draw the footer for a single tt_content element

@param PageLayoutView $parentObject : The parent object that triggered this hook
@param array $row Record array
@return string HTML of the footer
@throws \UnexpectedValueException
Draw the footer for a single tt_content element