Ok, hat sich erledigt. Habe das Problem dadurch gelöst, indem ich RealURL ein wenig umprogrammiert habe, so dass es nun den QUERY_STRING aus den dekodierten GET-Parametern rekonstruiert. Der neue QUERY_STRING enthält dann alle Parameter - sowohl die aus der Speaking URL als auch weitere übergebene Parameter, die nicht von RealURL gehandhabt werden - außer den "id="-Parameter, der aber eh via typolink gesetzt wird.
Wen es interessiert, hier der nötige PHP-Code für class.tx_realurl.php:
Die Funktion decodeSpURL_doDecode() folgendermaßen anpassen (Einfügen vor dem Kommentar "// cHash handling:":sad:
PHP-Code:
// Re-create QUERY_STRING from Get vars for use with typoLink()
$_SERVER['QUERY_STRING'] = $this->decodeSpURL_createQueryString($cachedInfo['GET_VARS']);[/b]
PHP-Code:
/**
* Generates a parameter string from an array recursively
*
* @param array Array to generate strings from
* @param string path to prepend to every parameter
* @return array Array with parameter strings
*/
function decodeSpURL_createQueryStringParam($paramArr, $prependString = '') {
if (!is_array($paramArr))
return array($prependString.'='.$paramArr);
if (count($paramArr) == 0)
return array();
$paramList = array();
foreach ($paramArr as $var => $value) {
$paramList = array_merge($paramList, $this->decodeSpURL_createQueryStringParam($value, $prependString.'['.$var.']'));
}
return $paramList;
}
/**
* Re-creates QUERY_STRING for use with typoLink()
*
* @param array List of Get vars
* @return string QUERY_STRING value
*/
function decodeSpURL_createQueryString($getVars) {
if (!is_array($getVars) || count($getVars) == 0)
return '';
$parameters = array();
foreach ($getVars as $var => $value) {
$parameters = array_merge($parameters, $this->decodeSpURL_createQueryStringParam($value, $var));
}
if (!empty($_SERVER['QUERY_STRING']))
array_push($parameters, $_SERVER['QUERY_STRING']);
return implode('&', $parameters); ;
}