TYPO3 9.5
Привет,
Я реализовал расширение новостей и изменил свой шаблон в отношении документации, как можно увидеть здесь: https://docs.typo3.org/p/georgringer/news/master/en-us/AdministratorManual/Templates/AjaxBasedPagination/Index.html
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть 2 списка просмотра плагина на одной странице с разными категориями для отображения. Когда я запускаю функцию «следующий» или в моем случае «загрузить больше», которая выполнит запрос Ajax, все новости с той же страницы будут обработаны. Я использую jquery бесконечная прокрутка для выполнения запроса ajax.
My JS выглядит следующим образом:
$(document).ready(function () {
$('.c-news-list--pagination-enabled').infiniteScroll({
// options
path: '.c-news-list-load-more__action-link',
button: '.c-news-list-load-more__action',
append: '.c-news-list__item',
history: false,
// prevent loading on scroll
scrollThreshold: false,
debug: true,
});
});
Шаблон моего списка:
{namespace n=GeorgRinger\News\ViewHelpers}
<f:layout name="General" />
<!--
=====================
Templates/News/List.html
-->
<f:section name="content">
<f:if condition="{news}">
<f:then>
<f:if condition="{settings.templateLayout} == 'NewsModal'">
<f:then>
<div class="row news-list-view c-news-list c-news-list--modal-container">
</f:then>
<f:else>
<div class="row news-list-view c-news-list {f:if(condition: settings.hidePagination, then:' c-news-list--pagination-disabled', else: ' c-news-list--pagination-enabled')}" id="news-container-{contentObjectData.uid}">
</f:else>
</f:if>
<f:if condition="{settings.hidePagination}">
<f:then>
<f:for each="{news}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</f:then>
<f:else>
<n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}"
initial="{offset:settings.offset,limit:settings.limit,recordId:contentObjectData.uid}">
<f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
</f:for>
</n:widget.paginate>
</f:else>
</f:if>
<f:if condition="{settings.templateLayout} == 'NewsModal'">
<f:else>
<div class="c-news-list-load-more">
<button role="button" class="c-news-list-load-more__action">Mehr</button>
</div>
</f:else>
</f:if>
</div>
</f:then>
<f:else>
<div class="no-news-found">
<f:translate key="list_nonewsfound" />
</div>
</f:else>
</f:if>
</f:section>
Я добавил индекс Ajax. php к своим шаблонам и не сделал там слишком много, просто удалил прежние ссылки, поскольку они мне действительно не нужны для моей функциональности, но я предполагаю, что должен измените параметр URL для следующих записей, чтобы загрузить, но я не знаю, как или какой аргумент передать, чтобы я мог достичь того, что мне нужно.
Индекс Ajax. html:
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
xmlns:t="http://typo3.org/ns/Helhum/TyposcriptRendering/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:if condition="{configuration.insertAbove}">
<f:render section="paginator" arguments="{pagination: pagination,configuration:configuration,recordId:recordId}" />
</f:if>
<f:renderChildren arguments="{contentArguments}" />
<f:if condition="{configuration.insertBelow}">
<f:render section="paginator" arguments="{pagination: pagination,configuration:configuration,recordId:recordId}" />
</f:if>
<f:section name="paginator">
<n:extensionLoaded extensionKey="typoscript_rendering">
<f:then>
<f:if condition="{pagination.numberOfPages} > 1">
<f:if condition="{settings.list.paginate.prevNextHeaderTags}">
<f:if condition="{pagination.nextPage}">
<n:headerData>
<link rel="next" href="{f:widget.uri(useCacheHash:1, arguments: {currentPage: pagination.nextPage})}" />
</n:headerData>
</f:if>
</f:if>
<div class="c-news-list-load-more">
<f:if condition="{pagination.displayRangeStart} > 1">
<f:widget.link class="first c-news-list-load-more__action-link" data="{container:recordId,link:'{t:uri.ajaxAction(contextRecord:\'tt_content:{recordId}\', pluginName: \'pi1\',additionalParams:\'{n:widget.ajax.paginateAdditionalParams(page:1)}\')}'}">1</f:widget.link>
</f:if>
<f:if condition="{pagination.displayRangeEnd} < {pagination.numberOfPages}">
<f:widget.link class="last c-news-list-load-more__action-link" useCacheHash="1" arguments="{currentPage: pagination.numberOfPages}" data="{container:recordId,link:'{t:uri.ajaxAction(contextRecord:\'tt_content:{recordId}\', pluginName: \'pi1\',additionalParams:\'{n:widget.ajax.paginateAdditionalParams(page:pagination.numberOfPages)}\')}'}">{pagination.numberOfPages}</f:widget.link>
</f:if>
<f:if condition="{pagination.nextPage}">
<f:widget.link class="last next c-news-list-load-more__action-link" useCacheHash="1" arguments="{currentPage: pagination.nextPage}" data="{container:recordId,link:'{t:uri.ajaxAction(contextRecord:\'tt_content:{recordId}\', pluginName: \'pi1\',additionalParams:\'{n:widget.ajax.paginateAdditionalParams(page:pagination.nextPage)}\')}'}">
<f:translate key="paginate_next" />
</f:widget.link>
</f:if>
</div>
</f:if>
</f:then>
<f:else>
<div class="alert alert-danger">The extension <code>typoscript_rendering</code> must be installed!</div>
</f:else>
</n:extensionLoaded>
</f:section>
</html>
Может ли кто-нибудь указать мне правильное направление? Заранее спасибо!