typo3typoscripttypolink

Typoscript: how do I add a parameter to all links in the RTE?


I want to add a parameter to all links entered in the RTE by the user.

My initial idea was to do this:

lib.parseFunc_RTE.tags.link {
    typolink.parameter.append = TEXT
    typolink.parameter.append.value = ?flavor=lemon
}

So for example:

http://domain.com/mypage.php

becomes

http://domain.com/mypage.php?flavor=lemon

which sounds great -- as long as the link does not already have a query string! In that case, I obviously end up with two question marks in the URL

So for example:

http://domain.com/prefs.php?id=1234&unit=moon&qty=300

becomes

http://domain.com/prefs.php?id=1234&unit=moon&qty=300?flavor=lemon

Is there any way to add my parameter with the correct syntax, depending on whether the URL already has a query string or not? Thanks!


Solution

  • For anyone interested, here's a solution that worked for me using the replacement function of Typoscript. Hope this helps.

    lib.parseFunc_RTE.tags.link {
    
        # Start by "replacing" the whole URL by itself + our string
        # For example: http://domain.com/?id=100    becomes http://domain.com/?id=100?flavor=lemon
        # For example: http://domain.com/index.html becomes http://domain.com/index.html?flavor=lemon
    
        typolink.parameter.stdWrap.replacement.10 {
    
            #this matches the whole URL
            search = #^(.*)$#i
    
            # this replaces it with itself (${1}) + our string
            replace =${1}?flavor=lemon
    
            # in this case we want to use regular expressions
            useRegExp = 1
        }
    
        # After the first replacement is done, we simply replace
        # the first '?' by '?' and all others by '&'
        # the use of Option Split allow this
        typolink.parameter.stdWrap.replacement.20 {
            search = ?
            replace = ? || & || &
            useOptionSplitReplace = 1
        }
    
    }