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.