private:koding:hostcms:modules:informacionnye_sistemy:showmore

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

При нажатии на кнопку "подгрузить еще" происходит подгрузка элементов ИС. Скрипт обращается по адресу (пример ниже) и добавляет ответ в конец контейнера ("#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
    */
  2. Редактируем код 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>
  3. Подключаем js обработчик
    /**
    * кнопка "показать еще"
    * 
    * @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.txt · Last modified: 27.06.17 в 14:52 by maximzasorin_gmail.com