我在页面中配置了扩展名tt_address。我需要按年份过滤地址。所以我建立了一个选择框。我需要将一些查询参数及其URL附加到控制器中以实现过滤器。 该功能已成功完成。但是realurl不适用于此特定功能。
main.js
function initYearFilter() {
var selectedItem = sessionStorage.getItem('year');
if (selectedItem !== null) {
$('.year-filter select').val(selectedItem);
}
$('.year-filter select').on('change', function () {
var loc = location.href.match(/.*people\/alumni\/+/)[0],
url;
if ($(this).val() == 'reset') {
url = loc + '?no_cache=1';
} else {
url = loc + '?ts_address[year]=' + $(this).val() + '&no_cache=1';
}
sessionStorage.setItem("year", $(".year-filter select").first().val());
window.location.href = url;
});
}
我的realurl配置
'postVarSets' => array(
'_DEFAULT' => array(
'year' => array(
array(
'GETvar' => 'ts_address[year]',
),
),
),
)
答案 0 :(得分:1)
不要像在Javascript中那样,在前端手动生成urls
。
我的建议是生成url后端并将其附加到选项属性(data-reset-url
,data-url
)上。
// maybe a foreach here
$GLOBALS['TSFE']->cObj->typolink_URL([
'parameter' => '_PAGEUID_',
'additionalParams' => '?ts_address[year]=' . $year, // suppose in foreach have year var
'no_cache' => true
]);
答案 1 :(得分:0)
如果您认为ext:realurl是停用ext:realurl的罪魁祸首,然后看看它是否有效。
我认为它仍然无法正常工作,但是您会在url中看到一些可以给您必要提示的信息。
您可能偶然发现了TYPO3的安全功能:cHash
。
使用cHash URL参数TYPO3可以保护其URL避免注入不相关的参数来存储页面的缓存版本。如果TYPO3构建URL,则它会哈希所有参数并将此哈希值附加到URL。如果在URL中找到这样的cHash,则将从数据库中获取参数,并且将忽略所有当前URL参数。特别是任何其他参数。因此,缓存的页面与给定的URL匹配。
如果使用ext:realurl,则此cHash参数隐藏在“常规” URL路径中。如果您像在javascript中那样添加参数,则会将其删除,因为它们未在cHash中进行编码,而cHash是在口语URL中进行编码。
在您的情况下,附加参数将更改页面的内容。如果cHash中包含其他参数,则可以缓存此页面。
在这里,您必须帮助realurl来构建不带cHash的URL,或者构建包含以下各个cHashes的URL:
您可以构建可用年份的菜单,还可以配置年份的路径细分。通过这种方式,您可以每年获得单独的哈希值。您需要更改JavaScript以添加路径段而不是参数。