TYPO3 version is 7.6.0.
Generate link:
<f:link.action action="single" class="title" pageUid="{settings.pidDetails}" additionalParams="{unid: '{unid}'}" noCacheHash="true">Link text</f:link.action>
Result:
http://example.com/property/flats/?unid=12345&tx_ext_extp1%5Baction%5D=single&tx_ext_extyp1%5Bcontroller%5D=Ext
Need:
Skip controller and action in url generation - http://example.com/property/flats/?unid=12345
You can use realurl extension for clean url. After installation, edit realurl_autoconf.php file which located in typo3conf folder.
function user_encodeSpURL_postProc(&$params, &$ref) {
$params['URL'] = str_replace('blog/post/article/', 'blog/post/', $params['URL']);
}
function user_decodeSpURL_preProc(&$params, &$ref) {
$params['URL'] = str_replace('blog/post/', 'blog/post/article/', $params['URL']);
}
$GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array (
'_DEFAULT' => array (
'init' => array (
'enableCHashCache' => '1',
'appendMissingSlash' => 'ifNotFile',
'enableUrlDecodeCache' => '1',
'enableUrlEncodeCache' => '1'
),
'redirects' => array (
),
'preVars' => array (
'0' => array (
'GETvar' => 'no_cache',
'valueMap' => array (
'nc' => '0'
),
'noMatch' => 'bypass',
),
'1' => array (
'GETvar' => 'L',
'valueMap' => array (
'de' => '0',
'en' => '1'
),
'noMatch' => 'bypass'
),
'2' => array (
'GETvar' => 'cHash',
'noMatch' => 'bypass',
),
),
'pagePath' => array (
'type' => 'user',
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'spaceCharacter' => '-',
'languageGetVar' => 'L',
'rootpage_id' => '1' // your root UID
),
'fixedPostVars' => array(
),
'postVarSets' => array(
'_DEFAULT' => array(
'controller' => array(
array(
'GETvar' => 'tx_news_pi1[action]',
'noMatch' => 'bypass'
),
array(
'GETvar' => 'tx_news_pi1[controller]',
'noMatch' => 'bypass'
)
),
'authentication' => array(
array(
'GETvar' => 'tx_eventmanagementtool_ext1[action]',
),
),
'dateFilter' => array(
array(
'GETvar' => 'tx_news_pi1[overwriteDemand][year]',
),
array(
'GETvar' => 'tx_news_pi1[overwriteDemand][month]',
),
),
'page' => array(
array(
'GETvar' => 'tx_news_pi1[@widget_0][currentPage]',
),
),
),
),
'fileName' => array (
//'defaultToHTMLsuffixOnPrev' => '.html',
'acceptHTMLsuffix' => 1,
'index' => array (
'rss.xml' => array (
'keyValues' => array (
'type' => '100'
),
),
'rss091.xml' => array (
'keyValues' => array (
'type' => '101'
),
),
'rdf.xml' => array (
'keyValues' => array (
'type' => '102'
),
),
'atom.xml' => array (
'keyValues' => array (
'type' => '103'
),
),
'sitemap.xml' => array (
'keyValues' => array (
'type' => '776'
),
),
),
),
)
);
You can use bypass method to remove controller and action from url like:
'controller' => array(
array(
'GETvar' => 'tx_news_pi1[action]',
'noMatch' => 'bypass'
),
array(
'GETvar' => 'tx_news_pi1[controller]',
'noMatch' => 'bypass'
)
)