[TYPO3-german] Typo3 7.6.5 userfunc funktioniert nicht

Manuel Bachl m.bachl at finndrop.de
Fri Apr 22 04:48:07 CEST 2016


Hallo da draussen,

vielleicht kann mir hier ja jemand weiterhelfen. Ich versuche über eine userfunc dem Body die zugewiesenen Kategorien (zumindest die Kategorien die Unterkategorien einer bestimmten Kategorie sind) als Klasse übergeben. Allerdings nicht alle Kategorien, sondern die hinterlegte Kategorie nur dann, wenn es nur eine Kategorie gibt, sollte "neutral" ausgegeben werden. Um es deutlicher zu formulieren möchte ich folgendes erreichen: Es gibt eine Kategorie "Schulzweige" unter dieser Kategorie sind vier weitere Kategorien eingeordnet. Sollte die Seite genau eine oder gar keine dieser vier Kategorien zugewiesen bekommen haben soll der Body die Klasse "neutral" bekommen. So weit bin ich aber noch gar nicht, hierbei benötige ich später noch Hilfe, daher erwähne ich es schon einmal.

Mein aktuelles Problem:

Ich habe anhand diverser Dokumentationen und Tutorials versucht die userfunc vie Taposcript aufzurufen. Nun scheint dies nicht zu funktionieren. selbst ein einfaches `die('test')` innerhalb der aufgerufenen funktion wird nicht ausgeführt. Daher vermute ich dass der Aufruf nicht funktioniert.

mein Code:


Typoscript:
```
bodyTag >
bodyTagCObject = USER
bodyTagCObject {
	userFunc = Finndrop\FdsCommon\Util\BodyTagHelper->buildBodyTag
	fallbackClass = 'neutral'
}
```

BodyTagHelper.php:
```
<?php
namespace Finndrop\FdsCommon\Util;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\Category\Collection\CategoryCollection;

class BodyTagHelper {
    /**
     * @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
     */
    public $cObj;

    /**
     * Generate body tag with categories as classes
     *
     * @param $conf array Configuration parameters
     * @return string
     */
    public function buildBodyTag($conf) {

        $query = $GLOBALS['TYPO3_DB']->SELECTquery(
            '*',
            'sys_category',
            'uid IN (' . intval($GLOBALS['TSFE']->id) . ')'
        );

        $bodyClass = '';
        $rows = $this->selectThem($query);

        if (count($rows) == 1) {
            foreach ($rows as $key => $row) {
                $bodyClass .= $row . ' ';
            }
        } else {
            $bodyClass = $conf['default'];
        }

        return '<body class="' . $bodyClass . '" id="page-' . $GLOBALS['TSFE']->id . '">'
    }

    /**
     * Select the pages categories
     *
     * @param $query string SQL query
     * @return array Array with pages categories
     */
    protected function selectThem($query) {
        $res = $GLOBALS['TYPO3_DB']->sql_query($query);
        $output = array();
        while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
            $output[] = $row['header'];
        }
        return $output;
    }
}
```

Die Datei BodyTagHelper.php liegt in einer Extension in `Classes/Util`

Ich wäre wahnsinnig Happy wenn hier jemand weiterhelfen könnte.

Danke schonmal und liebe Grüße
Manuel Bachl


More information about the TYPO3-german mailing list