在 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 时有效。