Georgringer / News Ajax Пагинация загружает только новости из запрошенного элемента контента - PullRequest
0 голосов
/ 04 мая 2020

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>

Может ли кто-нибудь указать мне правильное направление? Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...