1
votes

RouteEnhancer pour TYPO3 v9 indexed_search

Je souhaite réécrire l'URL du résultat de la recherche dans indexed_search mais cela ne fonctionne pas. Rien n'arrive. J'ai ajouté RouteEnhancer à mon config.yaml

routeEnhancers:
  IndexedSearchPlugin:
    type: Extbase
    limitToPages:
      - 38
    extension: IndexedSearch
    plugin: Pi2
    routes:
      - routePath: '/page/{page}'
        _controller: 'Search::search'
        _arguments:
          page: '@widget_0/currentPage'
    defaultController: 'Search::search'
    defaults:
      page: '0'
    requirements:
      page: \d+
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'

Peut-être que quelqu'un a une idée?


0 commentaires

3 Réponses :


1
votes

Je n'utilise pas beaucoup index_search, mais j'ai jeté un coup d'œil rapide au code du navigateur de pages. Le navigateur de pages pour indexed_search se fait à l'aide d'un formulaire et de JavaScript, pas de liens directs. Ainsi, lorsque vous cliquez sur une page dans le navigateur de pages, un champ masqué est défini et le formulaire est soumis. Les améliorations d'itinéraire ne fonctionneront que pour les liens générés par TYPO3. Je ne sais pas pourquoi cela est fait de cette façon, mais sans changer le fonctionnement du navigateur de page, vous ne pouvez pas améliorer ces URL.


0 commentaires

0
votes

Rudy Gnodde a raison: il n'y a pas de paramètre "page", vous n'avez donc pas besoin de le configurer.

Il vous suffit d'utiliser routeEnhancer pour avoir une URL comme www.domain.com/my-search-page/ rechercher où ma-page-de-recherche est la page contenant le plugin indexed_search.

routeEnhancers:
  IndexedSearchPlugin:
    type: Extbase
    extension: IndexedSearch
    plugin: Pi2
    routes:
      - routePath: '/search'
        _controller: 'Search::search'
    defaultController: 'Search::search'


0 commentaires

0
votes

Je suppose que cela dépend de ce que vous essayez d'embellir. Dans mon cas, j'utilise ce config.yaml pour obtenir une URL propre pour les résultats de la recherche (le champ de recherche est généré par TypoScript) et pouvoir effectuer une recherche par requête.

Disons que nous ' re avoir une page https: example.de/search/ avec le plugin indexed_search placé dessus.

À présent, la recherche à partir de n'importe quelle page avec le champ de recherche aboutira à cet uri: https:example.de/search/results

Et vous pouvez créer un lien profond vers un résultat de recherche spécial (ici nous recherchons 'lorem') en utilisant simplement cet uri: https:example.de/search/query/lorem

routeEnhancers:
  IndexedSearchPlugin:
    type: Extbase
    namespace: tx_indexedsearch_pi2
    routes:
      - routePath: '/results'
        _controller: 'Search::search'
        _action: 'search::search'
      - routePath: '/query/{search/sword}'
        _controller: 'Search::search'
        _action: 'search::search'
        requirements:
          - search/sword: '[^/=?]*'
    defaultController: 'Search::search'
    defaultAction: 'search::search'

Au moins cela a fonctionné pour moi dans TYPO3 v10.4.8 (sans tester la pagination ou recherche avancée).


1 commentaires

Si quelqu'un sait comment unir ces deux routes et ajouter la valeur de publication à l'URI, n'hésitez pas à laisser un commentaire.