Я не думаю, что есть простой, чистый способ сделать это. Страница не является реальными новостями, поэтому технически она не отображается. Я могу придумать 3 возможных решения:
На самом деле технически отображать запись новостей на странице с пустым шаблоном (за исключением n:excludeDisplayedNews
ViewHelper), поэтому он ничего не показывает. Я не уверен, будет ли это работать с новостями "внутренней ссылки", но если это так, то это самый простой способ.
Вы можете сделать это, используя следующий TypoScript:
lib.displayedNews = USER
lib.displayedNews {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
extensionName = News
pluginName = Pi1
vendorName = GeorgRinger
switchableControllerActions {
News {
1 = detail
}
}
views =< plugin.tx_news.view
view {
templateRootPaths.200 = path/to/template/with/only/excludeDisplayedNews/
}
settings =< plugin.tx_news.settings
settings {
singleNews.current = 1
useStdWrap = singleNews
insertRecord = 1
}
}
В шаблоне вашей страницы вы можете использовать:
<f:for each="{displayedNews}" as="newsItem">
<f:cObject typoscriptObjectPath="lib.displayedNews" data="{newsItem.data.uid}" />
</f:for>
И ваш News/Detail.html
шаблон будет просто:
<n:excludeDisplayedNews newsItem="{newsItem.uid}" />
Получите объект записи новостей с помощью пользовательского ViewHelper или DataProcessor, чтобы вы могли заполнить его в n:excludeDisplayedNews
ViewHelper. На мой взгляд, это самое чистое решение, но также требует наибольшей работы.
Создайте пользовательскую функцию для заполнения глобального массива, который расширение новостей использует для отслеживания отображаемых записей новостей, например: $GLOBALS['EXT']['news']['alreadyDisplayed'][$newsUid] = $newsUid;