@Dataker

Не работает скрипт показать больше материала, в чем проблема?

Не работает скрипт показать больше материала, в чем проблема? Может кто поможет разобраться, может что-то нужно добавить или же наоборот удалить, заранее спасибо.
/**
 * Полностью поддерживаются модули "Блог", "Каталог статей" и "Фотоальбомы".
 * В остальных модулях скрипт протестирован не был, работоспособность не гарантируется.
 */

/**
 * Перед использованием скрипта желательно отключить "Ajax для переключателей страниц".
 * ПУ => Общие настройки => "Отключить Ajax для переключателей страниц" - поставить галочку.
 */

var ajaxLoad = {
	/**
	 * Функция инициализации скрипта: создает кнопку "Подгрузить ещё", если обнаружена страница для подгрузки
	 * @param {object} par
	 */
	init: function(par, nextPage) {
		if (par) {

			// Устанавливаем начальные параметры (module & pageselector)
			this.params = par;

			/**
			 * Находим переключатели на странице
			 * и записываем их селекторы в ajaxLoad.selectors (String)
			 */
			var selectorsArray = [];

			$('.content').find('*[id^=pagesBlock], *[class^=pagesBlockuz]').each(function () {
				selectorsArray.push(($(this).attr('id') ? '#' : '.') + ($(this).attr('id') || $(this).attr('class')));
			});

			this.selectors = selectorsArray.join(', ');
		}

		var page = nextPage || $('.swchItem span:contains("»")').parent().attr('href') || $('.swchItemA1').next('.swchItem1').attr('href') || -1;
		if (~page){
			$('#content').append('<div class="ajaxLoadButton" onclick="ajaxLoad.load(\'' + page + '\');">Подгрузить ещё</div>');

			if (!this.params.pageselector) {
				$('head').append('<style>' + this.selectors + ' {display: none;}</style>');
			} else if (this.params.module == 'blog') {
				$('head').append('<style>#pagesBlock1 {margin-top: 5px;}</style>');
			}
		}
	}, 

	/**
	 * Функция подгрузки следующей страницы
	 * @param {string} page
	 */
	load: function(page) {
		var self = this;

		$('.ajaxLoadButton').text('Идёт загрузка...');

		$.ajax({
			url: page
		}).done(function (r){
			var m = self.params.module;
			var animName = (m != 'photo') ? 'fadeInUpAnim' : 'zoomInAnim';
			var whatReplace = (m != 'photo') ? (/(id="entryID[0-9]+")/g) : (/uphoto/g);
			var withReplace = (m != 'photo') ? ('$1 class="' + animName + '"') : ('uphoto ' + animName);
			var content = $('#allEntries', r).html().replace(whatReplace, withReplace);

			// Убираем переключатели в #allEntries, т.к. в любом случае подгрузится еще одна копия
			$('#allEntries').find(self.selectors).remove();
			
			// Убираем кнопку подгрузки
			$('.ajaxLoadButton').remove();

			// Если показ переключателя(-ей) отключен, убираем его(их)
			if (!self.params.pageselector) {
				$(self.selectors).remove();
			} else {
				// В обратном случае обновляем текущие страницы на переключателе(-ях)
				var selectorsHtml = [];

				$('.content', r).find(self.selectors).not($('#allEntries', r).find(self.selectors)).each(function () {
					selectorsHtml.push($(this).html());
				});

				$(self.selectors).each(function (i) {
					$(this).html(selectorsHtml[i]);
				});
			}

			// Показываем подгруженные материалы
			$('#allEntries').append(content);

			// В модуле "Фотографии" пересчитываем размер изображений
			if (self.params.module == 'photo') {
				window.uEntriesList.root = $('ul[id="uEntriesList"]');
				window.uEntriesList.colWidth();
			}

			// Отображаем адрес подгруженной страницы в адресной строке
			history.pushState({}, '', page);

			// Пробуем показать кнопку
			ajaxLoad.init(null, ($('.swchItem span:contains("»")', r).parent().attr('href') || $('.swchItemA1', r).next('.swchItem1').attr('href')));
		});
	}
}
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы