在 Silverstripe 4 博客模块中加载更多 Ajax

Doing a Load More Ajax in Silverstripe 4 Blog module

目前我正在使用 SS4 博客模块。 我们使用了分页风格的博客。

现在我们需要加载更多内容 ajax。

知道如何在 SS4 中执行此操作吗?

我正在寻找这方面的示例,但社区无法给我答案。

虽然你的问题不是很清楚,但我会尽量按照我认为合理的方式来回答。

分页:此视图就像一本书,您实际上必须逐一翻阅 "Page"。如果您在第 2 页,您将看不到第 1 页的内容。

LoadMore:您从第 1 页开始,然后将第 2 页的结果附加到第 1 页所在的视图。这样您就可以在创建页面堆栈的同一页面上查看第 1 页和第 2 页。

对于您要求的 LoadMore。 您需要一个 js 变量 var currentPage = 1; 来保存要从服务器加载的当前页面。每次请求数据时,您都需要提供您所在的当前页面。逻辑上是这样的

  1. 您在加载 Page1 的情况下呈现您的页面;当前页面 = 1;
  2. OnClickingLoadMore 按钮;当前页面++;
  3. 通过ajax发送请求。 var url = 'server.com/posts/pull?page='+currentPage;
  4. 在当前视图上追加返回的数据。

PostsController.php

将方法名称添加到 allowed-action

private static $allowed_actions = [ 'pull', ];

使用下面的代码创建一个名为 "pull" 的方法。

$oListings = BlogPost::get(); $oList = new PaginatedList( $oListings, $this->request ); $oList->setPageLength( $limit ); $oList->setCurrentPage( $page );

最后是你的routes.yml(简体)

SilverStripe\Control\Director: rules: 'posts//$Action/$ID/$OtherID': 'PostsController'

最后,您可以使用 jQuery APPEND [http://api.jquery.com/append/] 向您的页面添加更多内容。

希望对您有所帮助