Использование регулярных выражений ('r'
в качестве 3-го параметра для ?replace
) является ключом. Обратите внимание, что из-за сложности синтаксиса URL нам необходимо обработать два крайних случая (skrLocale
- первый параметр, а skrLocale
- единственный параметр), которые выполняет приведенная ниже функция. Однако он не обрабатывает %xx
экранирования в имени параметра (что может вас не волновать):
<#function removeSkrLocale url>
<#return url?replace(r'([&\?])skrLocale=[^&]*&?', '$1', 'r')?remove_ending('?')>
</#function>
${removeSkrLocale(pageUrlWithParams)}
Конечно, вы можете сделать это и без #function
, прямо внутри ${}
, но это можно использовать многократно и более самодокументировано.