Спасибо - этот комментарий к кузнице был от меня. Btw. Это так же, как мой пример из моего первоначального вопроса выше, если это «хорошая практика» или если это можно сделать лучше.
менное условие
Расширение ext: список новостей находится на странице www.domain.com/news [ID 9], а подробное описание - на сайте www.domain.com/article [ID 39].
Следуя официальному примеру (docs.typo3.org)Я попробовалПример "Extbase Plugin Enhancer" описания функции, но это вызвало некоторые проблемы:
Ссылка на страницу 2 на странице 2 имеет cHash: news / list / 2? CHash = 123456789Ссылка для просмотра страниц со страницы 2 на страницу 1 содержит множество параметров get: news? Tx_news_pi1% 5Baction% 5D = list & tx_news_pi1% 5Bcontroller% 5D = News & cHash = 123456789. Без routeEnhancer это были бы просто «новости» без каких-либо параметров get.Ссылка на подробный вид имеет cHash: article / blog / 9? CHash = 52e8a4b7c6318cfe0273e7eab374e9aeURL имеют нежелательные сегменты («список» + «блог»)URL-адрес статьи не содержит заголовок новостиОдной из причин некоторых из этих проблем может быть то, что paginator не указывает контроллер в своих ссылках: news? Tx_news_pi1 [@ widget_0] [currentPage] = 2 & cHash = 123456789
Мой подход, который уже исправляет упомянутые проблемыЯ разделил это на два отдельных routeEnhancers (Extbase + Plugin), удалил сегменты, «defaultController», «defaults», «require» и добавил «аспекты»:
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'
Мои опасения по поводу этого подхода:
Я не уверен, будет ли иметь преимущество (производительность или безопасность), чтобы добавить некоторые «значения по умолчанию» и «требования», и если это действительно хорошая практика, разделить это на два отдельных routeEnhancers.Это ограничивает количество страниц представления списка максимум 1000 (я признаю, что это много). Более высокое значение приведет к ошибке:Ассортимент превышает 1000 наименований.Если в заголовке новости есть косая черта (например, «Ежемесячный отчет 2018/07»), автоматически сгенерированный сегмент path_ будет также содержать косую черту («month-report-2018/07»), что приведет к следующей ошибке в представлении списка. :Параметр "tx_news_pi1__news" для маршрута "tx_news_pi1_0" должен совпадать с "[^ /] ++" (указан "ежемесячный отчет-2018/07"), чтобы создать соответствующий URL.