Le plugin ext: news list view est sur la page www.domain.com/news [ID 9] et la vue détaillée sur www.domain.com/article [ID 39].
En suivant l'exemple officiel (docs.typo3.org)
J'ai essayé le " Extbase Plugin Enhancer "exemple de la description de la fonctionnalité, mais cela a causé quelques problèmes:
Une des causes de certains de ces problèmes peut être que le paginateur ne spécifie pas le contrôleur dans ses liens: news? tx_news_pi1 [@ widget_0] [currentPage] = 2 & cHash = 123456789
J'ai divisé ceci en deux routeEnhancers séparés (Extbase + Plugin), supprimé les segments, "defaultController", "defaults", "requirements" et ajouté "aspects":
routeEnhancers: NewsDetail: type: Extbase limitToPages: [39] extension: News plugin: Pi1 routes: - { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} } aspects: news_title: type: PersistedAliasMapper tableName: 'tx_news_domain_model_news' routeFieldName: 'path_segment' NewsList: type: Plugin limitToPages: [9] routePath: '/{@widget_0/currentPage}' namespace: 'tx_news_pi1' aspects: '@widget_0/currentPage': type: StaticRangeMapper start: '1' end: '1000'
Mes préoccupations concernant cette approche:
3 Réponses :
oui, vous pouvez les avoir tous les deux dans la même routeEnhancer - sans les segments indésirables:
routeEnhancers: NewsPlugin: type: Extbase limitToPages: - 9 - 39 extension: News plugin: Pi1 routes: - routePath: '/{page}' _controller: 'News::list' _arguments: page: '@widget_0/currentPage' - routePath: '/{news_title}' _controller: 'News::detail' _arguments: news_title: news defaultController: 'News::list' defaults: page: '0' aspects: news_title: type: PersistedAliasMapper tableName: tx_news_domain_model_news routeFieldName: path_segment page: type: StaticRangeMapper start: '1' end: '999'
Merci pour votre réponse! Cela entraîne le même problème que ma première approche ci-dessus: le lien paginateur de la page 2 à la page 1 a beaucoup de paramètres get: news? Tx_news_pi1% 5Baction% 5D = list & tx_news_pi1% 5Bcontroller% 5 D = News & cHash = 1234567 89
J'ai édité ma question initiale. Ce que j'imagine avec "ma première approche ci-dessus" est maintenant "Problèmes lorsque l'on suit l'exemple officiel".
quelle version typo3 utilisez-vous? ma configuration fonctionne (pas de paramètres get dans la pagination, le détail ou l'archive) dans 9.5.3
9.5.4.Les paramètres get n'apparaissent dans le paginateur de la vue liste que si vous n'êtes pas sur la page 1 et cliquez sur le lien vers la page 1 comme indiqué dans forge.typo3.org/issues/86895
Merci d'avoir fait remarquer cela. J'ai en effet manqué cette affaire.
Voici une copie de la configuration YAML créée par Georg Ringer:
routeEnhancers: PageTypeSuffix: type: PageType default: '/' index: '/' map: '/': 0 NewsPlugin: type: Extbase extension: News plugin: Pi1 limitToPages: [33,59] routes: # Detail view: - routePath: '/{news_title}' _controller: 'News::detail' _arguments: {'news_title': 'news'} # Categories: - routePath: '/{category}' _controller: 'News::list' _arguments: {'category': 'overwriteDemand/categories'} # Tags: - routePath: '/{tag_name}' _controller: 'News::list' _arguments: {'tag_name': 'overwriteDemand/tags'} # Pagination: - routePath: '/{page}' _controller: 'News::list' _arguments: {'page': '@widget_0/currentPage'} # Archive: - routePath: '/{localized_archive}/{year}/{month}' _controller: 'News::archive' # Date: - routePath: '/{year}-{month}' _controller: 'News::list' _arguments: year: overwriteDemand/year month: overwriteDemand/month defaultController: 'News::list' defaults: page: '0' year: '' month: '' requirements: page: '\d+' news_title: '^[a-zA-Z0-9].*$' aspects: page: type: StaticRangeMapper start: '1' end: '100' news_title: type: PersistedPatternMapper tableName: tx_news_domain_model_news routeFieldPattern: '^(?P<path_segment>.+)$' routeFieldResult: '{path_segment}' category: type: PersistedAliasMapper tableName: 'sys_category' routeFieldName: 'title' tag_name: type: PersistedAliasMapper tableName: 'tx_news_domain_model_tag' routeFieldName: 'title' localized_archive: type: LocaleModifier default: 'archive' routeFieldName: 'title' localeMap: - languageId: 'de_.*' value: 'archiv' - languageId: 'fr_.*' value: 'archives' year: type: StaticRangeMapper start: '1970' end: '2099' month: type: StaticValueMapper map: january: '01' february: '02' march: '03' april: '04' may: '05' june: '06' july: '07' august: '08' september: '09' october: 10 november: 11 december: 12 localeMap: - locale: 'de_.*' map: januar: '01' februar: '02' maerz: '03' april: '04' mai: '05' juni: '06' juli: '07' august: '08' september: '09' oktober: 10 november: 11 dezember: 12 - locale: 'fr_.*' map: janvier: '01' février: '02' mars: '03' avril: '04' mai: '05' juin: '06' juillet: '07' aout: '08' septembre: '09' octobre: 10 novembre: 11 décembre: 12
Avec les modifications suivantes:
rootPageId: 1 base: 'http://t3-master.vm/' languages: - title: German enabled: true languageId: '0' base: / typo3Language: de locale: de iso-639-1: de navigationTitle: DE hreflang: '' direction: ltr flag: de googleAnalyticsReportClientId: xxx googleAnalyticsReportSiteId: yyyy - languageId: '1' title: English siteTitle: '' navigationTitle: English base: /en/ locale: en iso-639-1: en hreflang: en direction: '' typo3Language: default flag: gb fallbackType: strict errorHandling: { } baseVariants: { } xxxx: "as\r\ndas\"\r\nas" routes: { } googleTagManager: '' logo: '' googleAnalyticsReportClientId: 778798369619-fl4nav20thdvfv2hag2lntf2cg1o2d79.apps.googleusercontent.com googleAnalyticsReportSiteId: 'ga:136091502' routeEnhancers: NewsPlugin: type: Extbase limitToPages: - 25 extension: News plugin: Pi1 routes: - routePath: '/{news_title}' _controller: 'News::detail' _arguments: news_title: news - routePath: '/page/{page}' _controller: 'News::list' _arguments: page: '@widget_0/currentPage' - routePath: '/time/{year}-{month}' _controller: 'News::list' _arguments: year: overwriteDemand/year month: overwriteDemand/month - routePath: '/category/{category}' _controller: 'News::list' _arguments: category: overwriteDemand/categories defaultController: 'News::list' defaults: page: '0' year: '' month: '' requirements: news_title: '^[a-zA-Z0-9].*$' page: \d+ aspects: news_title: type: PersistedAliasMapper tableName: tx_news_domain_model_news routeFieldName: path_segment page: type: StaticRangeMapper start: '1' end: '100' year: type: StaticRangeMapper start: '1970' end: '2020' month: type: StaticValueMapper map: january: '01' february: '02' march: '03' april: '04' may: '05' june: '06' july: '07' august: '08' september: '09' october: 10 november: 11 december: 12 category: type: PersistedPatternMapper tableName: sys_category routeFieldPattern: '^(?P<title>.+)-(?P<uid>\d+)$' routeFieldResult: '{title}-{uid}'
Je vous remercie. Cela entraîne le même problème que l'autre réponse (de @ roman-abt) et ma première approche: le lien paginateur de la page 2 à la page 1 a toujours des paramètres get: news? Tx_news_pi1% 5Baction% 5D = list & tx_news_pi1% 5Bcontroller% 5 D = Actualités & cHash = 1234567 89
Je crois que c'est un bug dans TYPO3, et pas tellement dans la configuration. Voir ici: forge.typo3.org/issues/86895
@Ben j'ai édité ma réponse, car je viens de trouver le code affiché ci-dessus, cela pourrait aussi vous aider. Comme indiqué, il y a un bogue avec la pagination au moment de l'écriture qui n'est pas corrigé, même avec le code fourni par l'auteur du module de nouvelles. Il est préférable de passer à autre chose et d'attendre une mise à jour principale pour résoudre ce problème.
Merci, oui, cela aide à comprendre le problème de la pagination. Ma version ci-dessus avec deux routeEnhancers séparés n'a en fait pas le problème de pagination, donc je considérerais la mienne comme un correctif et peut-être la meilleure solution concernant la pagination pour le moment et je suppose que votre réponse en est une bonne explication. Ce n'est toujours pas parfait - il y a toujours le problème avec le nombre limité de pages vues de liste.
Pouvez-vous rendre cela plus lisible en supprimant les parties non pertinentes du code? Tout sauf routeEnhancers n'est pas pertinent ici et crée de la confusion car il peut être très différent (par exemple, les langues) et souvent créé automatiquement en premier lieu.
Salut @SybillePeters J'ai ajouté la version de Georg Ringer, et ma propre variante de celle-ci, dans le but d'aider quiconque rencontre ce message et pourrait nous trouver utile. J'énonce clairement ce qui a changé et pourquoi. Et ajouté des commentaires sur des parties qui pourraient être déroutantes à première vue. La partie de date et de langue que je pensais était auto-explicative. Ils sont tous liés au module de nouvelles, et à ses sous-modules (dates, catégories, balises). C'est quelque chose que j'aurais aimé quand j'ai commencé mes premières recherches sur le sujet. Pour cette raison, je ne veux pas recadrer des parties de l'exemple. J'espère que tu comprends.
Ok, désolé pour ça. En fin de compte, c'est à vous, bien sûr.
Cela a bien résolu le problème (en bas): https: // forge. typo3.org/issues/86895#note-9
Merci - ce commentaire sur forge venait de moi. Btw. C'est la même chose que mon exemple de ma question initiale ci-dessus si c'est une "bonne pratique" ou si cela peut être mieux fait.