private:koding:hostcms:modules:informacionnye_sistemy:showmore

This is an old revision of the document!


Динамическая подгрузка элементов

При нажатии на кнопку "подгрузить еще" происходит подгрузка элементов ИС. Скрипт обращается по адресу (пример ниже) и добавляет ответ в конец контейнера ("#portfolio"). Для реализации:

  1. Добавляем код в настройках ТДС
     /**
    * При аякс загрузке подменяем макет на пустой
    * 
    * @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
    */

Код в XSL шаблоне

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

Код AJAX подгрузки

/**
* кнопка "показать еще"
* 
* @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
*/
private/koding/hostcms/modules/informacionnye_sistemy/showmore.1438007297.txt.gz · Last modified: 27.07.15 в 17:28 by Артем Куц