TYPO3 RealUrl - 将extbase详细信息路径缩短到第二级

时间:2017-05-20 12:50:37

标签: typo3 extbase realurl

我有一个自己的作业插件,带有一个列表和一个show view(在同一页面上)。 我在realurl_conf.php中的“postVarSets”中输入了我的参数(按“作业视图”分组),因此我的链接如下所示:

/ jobs - 列表视图

/ jobs / job-view / show / Job / testjob - 详情视图

现在我可以使用“encodeSpURL_postProc”缩短我的路径:

$params['URL'] = str_replace('job-view/show/Job', 'job-detail', $params['URL']);

并按

解码
$params['URL'] = str_replace('job-detail', 'job-view/show/Job', $params['URL']);

/ jobs - 列表视图

/ jobs / job-detail / testjob - 详情视图

但我希望我的细节视图看起来像:

/作业/ testjob

但我不能用

$params['URL'] = str_replace('jobs/job-view/show/Job', 'jobs', $params['URL']);

因为解码

$params['URL'] = str_replace('jobs', 'jobs/job-view/show/Job', $params['URL']);

也会尝试重新解码列表视图。

那么,是否可以将详细信息页面的URL路径缩短到第二级?

3 个答案:

答案 0 :(得分:1)

使用fixedPostVars和TS条件的组合很容易实现。

假设您的扩展程序的参数类似tx_jobs_list,那么您将在realurl配置中包含以下内容:

'fixedPostVars' => [
   $jobDetailPagePid => [
        [
            'GETvar' => 'tx_jobs_list[uid]',
            'lookUpTable' => [
                ...
            ]
        ],
        [
            'GETvar' => 'tx_jobs_list[controller]',
            'noMatch' => 'bypass'
        ],
        [
            'GETvar' => 'tx_jobs_list[action]',
            'noMatch' => 'bypass'
        ],
   ],
],

$jobDetailPagePid必须是网页ID。你不能在这里使用_DEFAULT

您还需要详细信息页面的TS条件:

[globalString = GP:tx_jobs_list|uid = /\d+\]
config.defaultGetVars {
    tx_jobs_list {
        controller = List
        action = single
    }
}
[global]

这就是全部。

答案 1 :(得分:0)

仔细查看文档:{​​{3}} 也许这可以帮到你。

我从来没有必要改变解码/编码功能来获得我需要的东西。

答案 2 :(得分:0)

您可以在real_conf.php文件中使用encodeSpURL_postProcdecodeSpURL_preProc,如下所示。

'encodeSpURL_postProc' => array('user_encodeSpURL_postProc'),
'decodeSpURL_preProc' => array('user_decodeSpURL_preProc'),

function user_encodeSpURL_postProc(&$params, &$ref) {
   $params['URL'] = str_replace('jobs', 'job-view/show/Job/', $params['URL']);
}
function user_decodeSpURL_preProc(&$params, &$ref) {
   $params['URL'] = str_replace('job-view/show/Job/', 'jobs', $params['URL']);
}