This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
private:koding:hostcms:modules:informacionnye_sistemy:showmore [21.07.15 в 16:40] yana создано |
private:koding:hostcms:modules:informacionnye_sistemy:showmore [27.06.17 в 14:52] (current) maximzasorin_gmail.com ↷ Страница перемещена из private:koding:hostcms:modules:informacionnye_sistemy:reshenija:showmore в private:koding:hostcms:modules:informacionnye_sistemy:showmore |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Динамическая подгрузка элементов ====== | ====== Динамическая подгрузка элементов ====== | ||
| + | При нажатии на кнопку "подгрузить еще" происходит подгрузка элементов ИС. Скрипт обращается по адресу (пример ниже) и добавляет ответ в конец контейнера ("#portfolio"). | ||
| + | Для реализации: | ||
| + | - Добавляем код в настройках ТДС <code php> /** | ||
| + | * При аякс загрузке подменяем макет на пустой | ||
| + | * | ||
| + | * @author Shcherbakov Aleksandr, KAD Systems (©) 2015 | ||
| + | * @date 27-07-2015 | ||
| + | * Начало >> | ||
| + | */ | ||
| + | if(Core_Array::getGet('ajax')) | ||
| + | { | ||
| + | Core_Page::instance()->template( | ||
| + | Core_Entity::factory('Template', 30) // пустой макет | ||
| + | ); | ||
| + | |||
| + | if(Core_Array::getGet('ajax') == 'items') | ||
| + | { | ||
| + | $Informationsystem_Controller_Show | ||
| + | ->addEntity( | ||
| + | Core::factory('Core_Xml_Entity')->name('ajax')->value(1) | ||
| + | ); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * << Конец | ||
| + | * @author Shcherbakov Aleksandr, KAD Systems (©) 2015 | ||
| + | * @date 27-07-2015 | ||
| + | */ | ||
| + | </code> | ||
| + | - Редактируем код XSL шаблона вывода списка элементов ИС <code xml> | ||
| + | <xsl:template match="/informationsystem"> | ||
| + | <xsl:choose> | ||
| + | <xsl:when test="ajax = 1"> | ||
| + | <!-- Выводим только элементы --> | ||
| + | <xsl:apply-templates select="informationsystem_item[active=1]"/> | ||
| + | </xsl:when> | ||
| + | <xsl:otherwise> | ||
| + | <!-- Стандартный вывод --> | ||
| + | <!-- ... --> | ||
| + | <!-- data-page - текущая страница --> | ||
| + | <!-- data-pages - количество страниц --> | ||
| + | <div data-page="{/informationsystem/page + 1}" data-pages="{ceiling(total div limit)}" id="portfolio"> | ||
| + | <xsl:apply-templates select="informationsystem_item[active=1]"/> | ||
| + | </div> | ||
| + | <!-- ... --> | ||
| + | </xsl:otherwise> | ||
| + | </xsl:choose> | ||
| + | </xsl:template> | ||
| + | </code> | ||
| + | - Подключаем js обработчик <code javascript> | ||
| + | /** | ||
| + | * кнопка "показать еще" | ||
| + | * | ||
| + | * @author Shcherbakov Aleksandr, KAD Systems (©) 2015 | ||
| + | * @date 27-07-2015 | ||
| + | * Начало >> | ||
| + | */ | ||
| + | |||
| + | $(".more_posts a").live('click', function(e){ | ||
| + | container = "#portfolio"; // контейнер для элементов | ||
| + | page = parseInt($(container).attr('data-page')); // текущая страница | ||
| + | pages = parseInt($(container).attr('data-pages')); // общее число страниц | ||
| + | |||
| + | if(page >= pages) | ||
| + | { | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | e.preventDefault(); | ||
| + | $.loadingScreen('show'); | ||
| + | |||
| + | jQuery.ajax({ | ||
| + | type: 'GET', | ||
| + | url: 'page-' + (page + 1) + '/', | ||
| + | data: 'ajax=items', | ||
| + | |||
| + | success: function(content){ | ||
| + | $(container).append(content); | ||
| + | $(container).attr('data-page', ++page); | ||
| + | |||
| + | if(page >= pages) | ||
| + | { | ||
| + | // скрываем кнопку показать еще | ||
| + | $(".more_posts").css("display", "none"); | ||
| + | } | ||
| + | |||
| + | $.loadingScreen('hide'); | ||
| + | } | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | /** | ||
| + | * << Конец | ||
| + | * @author Shcherbakov Aleksandr, KAD Systems (©) 2015 | ||
| + | * @date 27-07-2015 | ||
| + | */ | ||
| + | </code> | ||