我有一个自己的插件乔布斯与一个列表和一个秀视图(在同一页)。我在postVarSets中输入了realurl_conf.php中的params (按“作业视图”分组),所以我的链接如下所示:
/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 -详细视图
但我希望我的细节视图看起来像:
/jobs/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路径缩短到第二层呢?
发布于 2017-05-21 22:45:14
这是非常容易实现的结合使用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]
就这样。
发布于 2017-05-20 05:01:29
仔细看看文档:https://github.com/dmitryd/typo3-realurl/wiki/Configuration-reference#fixedpostvars也许可以帮助您。
我从来不需要改变解码/编码函数来得到我所需要的东西。
发布于 2017-05-21 21:03:44
您可以在您的encodeSpURL_postProc
文件中使用decodeSpURL_preProc
和decodeSpURL_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']);
}
https://stackoverflow.com/questions/44086076
复制