Project

General

Profile

Actions

Bug #35069

open

addQueryString.exclude should take precedence over config.linkVars

Added by Anonymous about 12 years ago. Updated over 1 year ago.

Status:
Under Review
Priority:
Should have
Assignee:
-
Category:
TypoScript
Target version:
-
Start date:
2012-03-21
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
4.7
PHP Version:
Tags:
Complexity:
hard
Is Regression:
No
Sprint Focus:

Description

Getting rid of an URL parameter when creating a typolink seems to be impossible using addQueryString.exclude when the parameter is set to the list of config.linkVars.

config.linkVars = L(int)
somelink = TEXT
someline {
    value = this link keeps the L parameter
    typolink {
        parameter.data = TSFE:id
        addQueryString = 1
        addQueryString.method = GET
        addQueryString.exclude = L
    }
}

the generated link will contain the parameter L whenever it is set in the calling URL.

the following seems to kinda work as a workaround when RealURL is active and configured to drop an empty L:

somelink.typolink.additionalParams = &L=

the problem can be tracked down to the method linkData() in class.t3lib_tstemplate.php where all the linkVars are being added to the URL:

1379                         // linkVars
1380                 if ($GLOBALS['TSFE']->config['config']['uniqueLinkVars']) {
1381                         if ($addParams) {
1382                                 $LD['linkVars'] = t3lib_div::implodeArrayForUrl('', t3lib_div::explodeUrl2Array($GLOBALS['TSFE']->linkVars . $addParams), '', FALSE, TRUE);
1383                         } else {
1384                                 $LD['linkVars'] = $GLOBALS['TSFE']->linkVars;
1385                         }
1386                 } else {
1387                         $LD['linkVars'] = $GLOBALS['TSFE']->linkVars . $addParams;
1388                 }

linkData() is being called from class.tslib_content.php AFTER gotten rid of the unwanted parameter:
5745       // Query Params:
5746       $addQueryParams = $conf['addQueryString'] ? $this->getQueryArguments($conf['addQueryString.']) : '';
5747       $addQueryParams .= isset($conf['additionalParams.'])
5748              ? trim($this->stdWrap($conf['additionalParams'], $conf['additionalParams.']))
5749              : trim($conf['additionalParams']);
5750       if ($addQueryParams == '&' || substr($addQueryParams, 0, 1) != '&') {
5751               $addQueryParams = '';
5752       }

...

5885        } else { // Internal link or current domain's linking scheme should be used
5886              if ($forceTarget) {
5887                      $target = $forceTarget;
5888              }
5889              $LD = $GLOBALS['TSFE']->tmpl->linkData(
5890                    $page,
5891                    $target,
5892                    $conf['no_cache'],
5893                    '',
5894                    '',
5895                    $addQueryParams,
5896                    $theTypeP,
5897                    $targetDomain
5898              );

i encountered this behaviour in TYPO3 4.5, the source above is from 4.7 though.

Actions

Also available in: Atom PDF