TYPO3 RealUrl - 将 extbase 详细路径缩短到二级
TYPO3 RealUrl - shorten extbase detail path to second level
我有一个自己的工作插件,带有列表和显示视图(在同一页面上)。
我在 realurl_conf.php 中的 "postVarSets" 中输入了参数(按 "job-view" 分组),因此我的链接如下所示:
/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路径缩短到二级?
仔细查看文档:https://github.com/dmitryd/typo3-realurl/wiki/Configuration-reference#fixedpostvars
也许这可以帮到你。
我从来不需要更改 decode/encode 函数来获得我需要的东西。
您可以在 real_conf.php 文件中使用 encodeSpURL_postProc
和 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']);
}
使用 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]
就这些了。
我有一个自己的工作插件,带有列表和显示视图(在同一页面上)。 我在 realurl_conf.php 中的 "postVarSets" 中输入了参数(按 "job-view" 分组),因此我的链接如下所示:
/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路径缩短到二级?
仔细查看文档:https://github.com/dmitryd/typo3-realurl/wiki/Configuration-reference#fixedpostvars 也许这可以帮到你。
我从来不需要更改 decode/encode 函数来获得我需要的东西。
您可以在 real_conf.php 文件中使用 encodeSpURL_postProc
和 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']);
}
使用 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]
就这些了。