Realurl: mit Userfunc eine eigene URL generieren

Ich wollte mal austesten, ob ich es mit UserFunc hinbekomme, meine URLs selber zusammenzubauen. Darum habe ich meinem Entry ein neues Feld „url“ gegeben, aus dem RealUrl zunächst den Wert für die URL auslesen soll. Ist dieser leer, soll der title hergenommen und wie gehabt von RealUrl bereinigt werden.

Damit aus „Das ist ein Test“ dann „das-ist-ein-test“ wird, bietet der UrlEncoder von RealUrl die Funktion cleanUpAlias.

Hier mein Auszug aus der realurl_conf.php:

'fixedPostVars' => array(
    141 => array(
        array('GETvar' => 'tx_ophipage_entrydetail[controller]', 'noMatch' => 'bypass'),
        array('GETvar' => 'tx_ophipage_entrydetail[action]', 'noMatch' => 'bypass'),
        array(
            'GETvar' => 'tx_ophipage_entrydetail[entry]',
            'userFunc' => 'Ophi\OphiPage\UserFunctions\RealUrl->getUrl',
            'lookUpTable' => array(
                'table' => 'tx_ophipage_domain_model_entry',
                'id_field' => 'uid',
                'alias_field' => 'coalesce(NULLIF(url, ""), title)',
                'addWhereClause' => ' AND deleted != 1',
                'useUniqueCache' => 1,
                'useUniqueCache_conf' => array(
                    'strtolower' => 1,
                    'spaceCharacter' => '-',
                ),
                'languageGetVar' => 'L',
                'languageField' => 'sys_language_uid',
                'transOrigPointerField' => 'l10n_parent',
                'enable404forInvalidAlias' => 1,
            ),
        )
    ),
)

Und die PHP Datei sieht so aus:

namespace Ophi\OphiPage\UserFunctions;

class RealUrl {

    public function getUrl(&$params, $ref){
        $res = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('url, title', 'tx_ophipage_domain_model_entry', 'uid='.$params['value']);
        return $res['url'] ? $res['url'] : $ref->cleanUpAlias($ref->getOriginalUrlParameters(), $res['title']);
    }
}

Klappt bisher erstaunlich gut.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.