Fix static search results not redirecting as expected

This commit is contained in:
Björn Fromme
2019-06-19 14:32:42 +02:00
parent bb9391b63b
commit 79906e4ce5
11 changed files with 61 additions and 34 deletions
+15 -7
View File
@@ -124,17 +124,25 @@ routeEnhancers:
limitToPages: limitToPages:
- 41 - 41
routes: routes:
-
routePath: '/ergebnis/{filter_settings}'
_controller: 'Search::searchresult'
_arguments:
filter_settings: filterSettings
- -
routePath: '/ergebnis' routePath: '/ergebnis'
_controller: 'Search::searchresult' _controller: 'Search::searchresult'
requirements:
filter_settings: '[A-Z0-9%\-]+'
defaultController: 'Search::searchresult' defaultController: 'Search::searchresult'
StaticResultsPlugin:
type: Extbase
extension: EpProducts
plugin: staticresult
limitToPages:
- 1757
routes:
-
routePath: '/{filter_settings}'
_controller: 'Search::staticresult'
_arguments:
filter_settings: encodedFilterSettings
defaultController: 'Search::staticresult'
requirements:
filter_settings: '[A-Z\d%\-]+'
ResellerPlugin: ResellerPlugin:
type: Extbase type: Extbase
extension: EpProducts extension: EpProducts
@@ -122,11 +122,25 @@ class SearchController extends ActionController
$this->view->assignMultiple([ $this->view->assignMultiple([
'detailPageUid' => $this->settings['detailPageUid'], 'detailPageUid' => $this->settings['detailPageUid'],
'referringPageUid' => $GLOBALS['TSFE']->id, 'referringPageUid' => $this->settings['defaultSearchPageUid'],
'filterSettings' => $filterSettings, 'filterSettings' => $filterSettings,
]); ]);
} }
/**
* @param string $encodedFilterSettings
* @throws StopActionException
*/
public function staticresultAction($encodedFilterSettings)
{
$this->forward(
'searchresult',
null,
null,
['filterSettings' => $encodedFilterSettings]
);
}
/** /**
* @param SearchParams $searchParams * @param SearchParams $searchParams
*/ */
@@ -42,7 +42,7 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
use DbConnectionTrait; use DbConnectionTrait;
const PREFIX_PATH_SEGMENT = 'reiseauswahl'; const PREFIX_PATH_SEGMENT = 'reiseauswahl';
const SEARCH_RESULT_URI = '/skireisen/suche/ergebnis/'; const SEARCH_RESULT_URI = '/skireisen/auswahl/';
const REDIRECT_RESPONSE_CODE = 302; const REDIRECT_RESPONSE_CODE = 302;
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
@@ -17,6 +17,12 @@ call_user_func(function () {
'Suchergebnis' 'Suchergebnis'
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts',
'staticresult',
'statisches Suchergebnis'
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
'EP.EpProducts', 'EP.EpProducts',
'product_detail', 'product_detail',
@@ -20,6 +20,8 @@ plugin.tx_epproducts {
snowReportStoragePid = snowReportStoragePid =
# cat=plugin.tx_epproducts//a; type=string; label=Default search page UID # cat=plugin.tx_epproducts//a; type=string; label=Default search page UID
defaultSearchPageUid = defaultSearchPageUid =
# cat=plugin.tx_epproducts//a; type=string; label=Default static search page UID
defaultStaticSearchPageUid =
# cat=plugin.tx_epproducts//a; type=string; label=Default product detail page UID # cat=plugin.tx_epproducts//a; type=string; label=Default product detail page UID
defaultDetailPageUid = defaultDetailPageUid =
# cat=plugin.tx_epproducts//a; type=string; label=Exclude products with concept UIDs from search result (CSV) # cat=plugin.tx_epproducts//a; type=string; label=Exclude products with concept UIDs from search result (CSV)
@@ -27,6 +27,7 @@ plugin.tx_epproducts {
destinationsStoragePid = {$plugin.tx_epproducts.settings.destinationsStoragePid} destinationsStoragePid = {$plugin.tx_epproducts.settings.destinationsStoragePid}
snowReportStoragePid = {$plugin.tx_epproducts.settings.snowReportStoragePid} snowReportStoragePid = {$plugin.tx_epproducts.settings.snowReportStoragePid}
defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid} defaultSearchPageUid = {$plugin.tx_epproducts.settings.defaultSearchPageUid}
defaultStaticSearchPageUid = {$plugin.tx_epproducts.settings.defaultStaticSearchPageUid}
defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid} defaultDetailPageUid = {$plugin.tx_epproducts.settings.defaultDetailPageUid}
excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids} excludedConceptUids = {$plugin.tx_epproducts.settings.excludedConceptUids}
excludedRegionUids = {$plugin.tx_epproducts.settings.excludedRegionUids} excludedRegionUids = {$plugin.tx_epproducts.settings.excludedRegionUids}
@@ -39,6 +40,7 @@ plugin.tx_epproducts {
googleMapsApiKey = {$plugin.tx_eptheme.settings.googleMapsApiKey} googleMapsApiKey = {$plugin.tx_eptheme.settings.googleMapsApiKey}
resellerExportPageUid = {$plugin.tx_epproducts.settings.resellerExportPageUid} resellerExportPageUid = {$plugin.tx_epproducts.settings.resellerExportPageUid}
ratingPageUid = {$plugin.tx_eptheme.settings.ratingPageUid} ratingPageUid = {$plugin.tx_eptheme.settings.ratingPageUid}
searchPageHeaderImage = {$plugin.tx_eptheme.settings.searchPageHeaderImage}
datePickerPresets { datePickerPresets {
1 { 1 {
label = Silvester label = Silvester
@@ -57,6 +59,7 @@ plugin.tx_epproducts {
} }
} }
} }
features.requireCHashArgumentForActionArguments = 0
} }
config.tx_extbase.persistence.classes { config.tx_extbase.persistence.classes {
@@ -57,6 +57,17 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks'][\EP\EpProducts\T
] ]
); );
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.' . $_EXTKEY,
'staticresult',
[
'Search' => 'staticresult',
],
[
'Search' => 'staticresult',
]
);
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin( \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'EP.' . $_EXTKEY, 'EP.' . $_EXTKEY,
'product_detail', 'product_detail',
@@ -1,18 +0,0 @@
lib.searchresult = USER
lib.searchresult {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = EpProducts
pluginName = searchresult
vendorName = EP
controller = Search
action = searchresult
switchableControllerActions {
Search {
1 = searchresult
}
}
settings =< plugin.tx_epproducts.settings
settings.searchPageHeaderImage = {$plugin.tx_eptheme.settings.searchPageHeaderImage}
persistence =< plugin.tx_epproducts.persistence
view =< plugin.tx_epproducts.view
}
@@ -8,7 +8,6 @@
@import "EXT:ep_theme/Configuration/TypoScript/Library/SearchBar.typoscript" @import "EXT:ep_theme/Configuration/TypoScript/Library/SearchBar.typoscript"
@import "EXT:ep_theme/Configuration/TypoScript/Library/SearchBox.typoscript" @import "EXT:ep_theme/Configuration/TypoScript/Library/SearchBox.typoscript"
@import "EXT:ep_theme/Configuration/TypoScript/Library/SearchResult.typoscript"
@import "EXT:ep_theme/Configuration/TypoScript/Library/Sitemap.typoscript" @import "EXT:ep_theme/Configuration/TypoScript/Library/Sitemap.typoscript"
@import "EXT:ep_theme/Configuration/TypoScript/Library/DynamicContent.typoscript" @import "EXT:ep_theme/Configuration/TypoScript/Library/DynamicContent.typoscript"
@import "EXT:ep_theme/Configuration/TypoScript/Library/ParseFunc.typoscript" @import "EXT:ep_theme/Configuration/TypoScript/Library/ParseFunc.typoscript"
@@ -5,7 +5,7 @@
<f:layout name="Page/Search"/> <f:layout name="Page/Search"/>
<f:section name="Content"> <f:section name="Content">
<f:cObject typoscriptObjectPath="lib.searchresult"/> <f:cObject typoscriptObjectPath="lib.dynamicContent" data="{pageUid: '{data.uid}', colPos: '0'}" />
</f:section> </f:section>
</html> </html>
@@ -23,11 +23,13 @@
</f:for> </f:for>
</div> </div>
<f:if condition="{settings.showMoreLink}"> <f:if condition="{settings.showMoreLink}">
<p class="text-right"><f:link.action pageUid="{settings.defaultSearchPageUid}" <p class="text-right">
class="button" <f:link.action pageUid="{settings.defaultStaticSearchPageUid}" class="button"
action="searchresult" action="staticresult" controller="Search"
controller="Search" arguments="{encodedFilterSettings: '{filterSettings -> ep:filterSettingsEncoder()}'}">
arguments="{filterSettings: '{filterSettings -> ep:filterSettingsEncoder()}'}">Alle anzeigen</f:link.action></p> Alle anzeigen
</f:link.action>
</p>
</f:if> </f:if>
</f:if> </f:if>
</f:section> </f:section>