在 url 代中跳过控制器和操作
Skip controller and action in url generation
TYPO3 版本为 7.6.0。
生成 link:
<f:link.action action="single" class="title" pageUid="{settings.pidDetails}" additionalParams="{unid: '{unid}'}" noCacheHash="true">Link text</f:link.action>
结果:
http://example.com/property/flats/?unid=12345&tx_ext_extp1%5Baction%5D=single&tx_ext_extyp1%5Bcontroller%5D=Ext
需要:
在 url 代中跳过控制器和操作 - http://example.com/property/flats/?unid=12345
您可以使用 realurl 扩展来清理 url。
安装后,编辑位于 typo3conf 文件夹中的 realurl_autoconf.php 文件。
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'
),
),
),
),
)
);
您可以使用旁路方法从 url 中删除控制器和操作,例如:
'controller' => array(
array(
'GETvar' => 'tx_news_pi1[action]',
'noMatch' => 'bypass'
),
array(
'GETvar' => 'tx_news_pi1[controller]',
'noMatch' => 'bypass'
)
)
转到您的扩展文件夹。
在 Configuration –>TypoScript –> setup.txt 中写入以下代码:
plugin.tx_[your_extensionname].features.skipDefaultArguments = 1
警告:这仅在您不在 flexform 中使用 switchableControllerActions 时有效。
TYPO3 版本为 7.6.0。
生成 link:
<f:link.action action="single" class="title" pageUid="{settings.pidDetails}" additionalParams="{unid: '{unid}'}" noCacheHash="true">Link text</f:link.action>
结果:
http://example.com/property/flats/?unid=12345&tx_ext_extp1%5Baction%5D=single&tx_ext_extyp1%5Bcontroller%5D=Ext
需要:
在 url 代中跳过控制器和操作 - http://example.com/property/flats/?unid=12345
您可以使用 realurl 扩展来清理 url。 安装后,编辑位于 typo3conf 文件夹中的 realurl_autoconf.php 文件。
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'
),
),
),
),
)
);
您可以使用旁路方法从 url 中删除控制器和操作,例如:
'controller' => array(
array(
'GETvar' => 'tx_news_pi1[action]',
'noMatch' => 'bypass'
),
array(
'GETvar' => 'tx_news_pi1[controller]',
'noMatch' => 'bypass'
)
)
转到您的扩展文件夹。
在 Configuration –>TypoScript –> setup.txt 中写入以下代码:
plugin.tx_[your_extensionname].features.skipDefaultArguments = 1
警告:这仅在您不在 flexform 中使用 switchableControllerActions 时有效。