【问题标题】:Skip controller and action in url generation在 url 生成中跳过控制器和操作
【发布时间】:2015-12-15 12:52:30
【问题描述】:

TYPO3 版本是 7.6.0。

生成链接:

<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

【问题讨论】:

标签: url action typo3 realurl typo3-7.x


【解决方案1】:

您可以使用realurl 扩展名来获得干净的网址。 安装后,编辑位于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'
    )
)

【讨论】:

    【解决方案2】:

    转到您的扩展文件夹。

    在配置->TypoScript->setup.txt 中写下代码:

    plugin.tx_[your_extensionname].features.skipDefaultArguments = 1
    

    警告:这仅适用于您不在 flexform 中使用 switchableControllerActions 的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多