Хотя ваш вопрос неясен, я постараюсь ответить на него так, как я думаю, что будет иметь смысл.
Разбиение на страницы: это представление похоже на книгу, где вам действительно нужно пролистывать каждую «страницу». Если вы находитесь на странице 2, вы не увидите, что на странице 1.
LoadMore: вы начинаете со страницы 1, а затем добавляете результаты страницы 2 в представление, где находится страница 1. Таким образом, вы можете просматривать страницу 1 и страницу 2 на одной странице, создавая стопку страниц.
Для LoadMore, который вы спросили.
Вам нужна переменная js var currentPage = 1;
для хранения текущей страницы, которая будет загружена с сервера. Каждый раз, когда вы запрашиваете данные, вам необходимо указывать текущую страницу, на которой вы находитесь. Логически что-то вроде этого
- Вы визуализируете свою страницу с загруженной Page1; currentPage = 1;
- кнопка OnClickingLoadMore; CurrentPage ++;
- Отправьте запрос через ajax.
var url = 'server.com/posts/pull?page='+currentPage;
- Добавить возвращенные данные в текущем представлении.
PostsController.php
добавить имя метода к разрешенному действию
private static $allowed_actions = [
'pull',
];
Создайте метод с именем «pull» с приведенным ниже кодом.
$oListings = BlogPost::get();
$oList = new PaginatedList( $oListings, $this->request );
$oList->setPageLength( $limit );
$oList->setCurrentPage( $page );
И, наконец, ваш rout.yml (упрощенно)
SilverStripe\Control\Director:
rules:
'posts//$Action/$ID/$OtherID': 'PostsController'
Наконец, используя jQuery, вы можете ПРИЛОЖИТЬ [http://api.jquery.com/append/], чтобы добавить больше контента на вашу страницу.
Надеюсь, это поможет