Реальный URL не работает для сборки URL с помощью JavaScript TYPO3 - PullRequest
0 голосов
/ 05 декабря 2018

Я настроил расширение 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]',
                    ),
                ),
              ),
              )

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Не позволяйте urls генерироваться вручную во внешнем интерфейсе, как вы делаете в Javascript.

Мой совет здесь заключается в том, чтобы сгенерировать внутреннюю сторону 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
  ]);
0 голосов
/ 05 декабря 2018

Если вы думаете, что ext: realurl является виновником деактивации ext: realurl и посмотрите, сработает ли это тогда.

Я думаю, что это все равно не будет работать, но вы увидите что-то в URL, которое должно дать вамнеобходимая подсказка.
Возможно, вы наткнулись на функцию безопасности TYPO3: cHash.
С параметром URL-адреса cHash TYPO3 защищает свои URL-адреса от внедрения несвязанных параметров для кэшированной версии страницы.Если TYPO3 создает URL, он хэширует все параметры и добавляет этот хэш к URL.Если такой URL-адрес обнаружен в URL-адресе, параметры выбираются из базы данных, а все текущие параметры URL-адреса игнорируются.особенно любые дополнительные параметры.Таким образом, кэшированная страница соответствует указанному URL.

Если вы используете ext: realurl, этот параметр cHash будет скрыт в обычном URL-пути.Если вы добавляете параметры, как в вашем javascript, они удаляются, так как они не закодированы в cHash, который закодирован в говорящем URL.

В вашем случае дополнительный параметр изменил бы содержимое страницы.Эта страница может быть кэширована, если дополнительный параметр включен в cHash.
Здесь вы должны помочь realurl либо создать URL-адрес без cHash, либо создать URL-адреса, содержащие эти отдельные cHashes:
Вы можете создать меню из доступныхлет, а также настроить сегмент пути для года.Таким образом, вы можете получить отдельные денежные призы за каждый год.Вам нужно изменить свой javascript для добавления сегмента пути вместо параметра.

...