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> |