Всем доброго вечера. Недавно начал осваивать hostcms. Решил сделать аякс пагинацию в результате поиска по примеру информационной системы. В информационной системе все работает, в вот в результате поиска что то не получается...
Вот подкорректировал ТДС поиска, взятого с демо-сайта (настройка страницы):
<?php
if (Core::moduleIsActive('search'))
{
// Autocomplete
if (!is_null(Core_Array::getGet('autocomplete')) && !is_null(Core_Array::getGet('query')))
{
//$iShopId = 1;
$sQuery = Core_Str::stripTags(strval(Core_Array::getGet('query')));
$aJSON = array();
$aJSON['query'] = $sQuery;
$aJSON['suggestions'] = array();
$oShop_Items = Core_Entity::factory('Shop_Item');
$oShop_Items->queryBuilder()
->select('shop_items.*')
->join('shops', 'shop_items.shop_id', '=', 'shops.id')
->where('shops.site_id', '=', CURRENT_SITE)
->where('shop_items.name', 'LIKE', '%' . $sQuery . '%')
->limit(10);
$aShop_Items = $oShop_Items->findAll();
foreach ($aShop_Items as $oShop_Item)
{
$aJSON['suggestions'][] = array(
'value' => $oShop_Item->name,
'price' => $oShop_Item->price,
'data' => $oShop_Item->id
);
}
Core_Page::instance()->response
->status(200)
->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"');
Core_Page::instance()->response
->body(json_encode($aJSON))
->header('Content-type', 'application/json; charset=utf-8');
Core_Page::instance()->response
->sendHeaders()
->showBody();
exit();
}
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
$Search_Controller_Show = new Search_Controller_Show($oSite);
$Search_Controller_Show
->limit(Core_Page::instance()->libParams['itemsOnPage'])
->parseUrl()
->len(Core_Page::instance()->libParams['maxlen'])
->query(Core_Array::getGet('text'));
if (!is_null(Core_Array::getPost('ajax_offset'))) {
$Search_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'informationsystemAjaxXsl'))
)
->offset(intval(Core_Array::getPost('ajax_offset')))
->show();
exit;
}
$text = Core_Array::getGet('text');
if (!is_null($text))
{
Core_Page::instance()->title(
Core::_('Search.frontend_title', $text)
);
}
Core_Page::instance()->object = $Search_Controller_Show;
}
Интересует участок кода:
$oSite = Core_Entity::factory('Site', CURRENT_SITE);
$Search_Controller_Show = new Search_Controller_Show($oSite);
$Search_Controller_Show
->limit(Core_Page::instance()->libParams['itemsOnPage'])
->parseUrl()
->len(Core_Page::instance()->libParams['maxlen'])
->query(Core_Array::getGet('text'));
if (!is_null(Core_Array::getPost('ajax_offset'))) {
$Search_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'informationsystemAjaxXsl'))
)
->offset(intval(Core_Array::getPost('ajax_offset')))
->show();
exit;
}
Остальное наверное не имеет смысла сюда кидать, ибо очень много придется читать)
Скажу что при отправке Post запроса при клике на кнопку "показать еще" вместо элементов следующей страницы прилетает пустота... Поэтому предполагаю, что проблема на сервере, может где то в xsl косякнул.
Вот код xsl шаблона для аякса:
<!-- СписокЭлементовИнфосистемы -->
<xsl:template match="/">
<div id="ajax_buffer_load">
<xsl:apply-templates select="/site"/>
</div>
</xsl:template>
<xsl:template match="/site">
<xsl:apply-templates select="search_page"></xsl:apply-templates>
</xsl:template>
<xsl:template match="search_page">
<li style="display: none;" class="more-news">
<a href="{url}">
<xsl:value-of select="title"/>
</a>
<br/>
<span class="description"><xsl:apply-templates select="url"/><xsl:text> · </xsl:text><xsl:value-of select="round(size div 1024)"/><xsl:text> Кб · </xsl:text><xsl:value-of select="date"/></span>
</li>
</xsl:template>
В ответ прилетает только обертка <div id="ajax_buffer_load"></div>. Под пустотой я имел в виду отсутствие элементов li.
Может истина где то рядом, а я в виду отсутствия опыта работы с данной системой не вижу чего то.