При генерации Главной с коротким списком ИЭ (пусть речь об ИС) у вас выводятся, допустим, 3 самые свежие новости.
Вы генерируете этот блок новостей контроллером показа ИС с использованием XSL.
Сразу советую, чтобы переиспользовать XSL, в XSL генерировать список эл-ов, но не сам контейнер:
<ul id="list-news"><?
$limit = 3;
... создание и настройка контроллера - ИЭ сортируем в порядке убывания id
...
$oController // контроллер генерирует список из 3-х эл-ов <li>....</li>
->offset(0)
->limit($limit)
->show();
?>
</ul>
Далее, в настройках динамической страницы Главной (так удобнее, не надо создавать отдельный узел для генерации ajax-ответа)
вы генерируете ajax-ответ состоящий, допустим, из 3-х эл-тов:
<?php
if (!is_null($offset = Core_Array::getRequest('get-another-news'))
{
$limit = 3;
ob_start();
... настройки контроллера - сортируем в порядке убывания id ИЭ
$oController
->offset($offset)
->limit($limit)
->show();
$message = ob_get_clean();
Core_Page::instance()->response
->header('Content-type', 'application/json; charset=utf-8')
->header('Pragma', "no-cache")
->header('Cache-Control', "private, no-cache")
->header('Vary', "Accept")
->header('Last-Modified', gmdate('D, d M Y H:i:s', time()) . ' GMT')
->header('X-Powered-By', 'HostCMS')
->header('Content-Disposition', 'inline; filename="files.json"')
->body(json_encode(array(
'message' => $message
)))
->sendHeaders()
->showBody();
exit();
}
Внизу страницы, за пределами контейнера ставим кнопку:
...
<button id="add-news">Показать еще</button>
В js привязываем обработчик:
$(function(){
var container = $('#list-news');
var button = $('#add-news');
button.on('click',function(){
var count = container.find('li').length;
$.ajax({
url: '?get-another-news=' + count,
type: 'POST',
data: '',
dataType: 'json',
context: context
}).done(function(data){
$(data['message']).appendTo(container);
if (container.find('li').length >= 20)
{
button.hide();
}
});
});
});
Как-то так
Естественно, приведенный выше код условно рабочий - требуется его отладка