private:koding:hostcms:modules:informacionnye_sistemy:showmore

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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>​
private/koding/hostcms/modules/informacionnye_sistemy/showmore.1437486033.txt.gz · Last modified: 21.07.15 в 16:40 by yana