Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
06 января 2015, 08:27
0
Потому что помним, что где-то там, выше по этому списку, есть еще несколько товаров, которые нам понравились.
И которые можно открыть в новом окне.

Вообще, мне уже жалко твоего покупателя — кажется, он и дорогу-то перейти не способен, не то что товар в магазине заказать.

Листает, листает, и случайно обновляет. А потом не помнит, что ему понравилось и найти не может, бедолага…
Василий Наумкин
06 января 2015, 08:25
0
Не получится. 1 страница загружается и при сортировке, и при смене шаблона — нужно тогда и их отключать.

В общем, не получается сделать как ты хочешь без серьёзного изменения mFilter2 или его скриптов.

Единственный нормальный вариант: кнопка + плавающая пагинация, как я предложил изначально, чтобы юзер мог свободно мотать страницы.

Вконтакте, например, по ссылке тоже загружается только указанная страница и листается вниз. Хочешь посмотреть предыдущие — кликай на пагинацию.
Василий Наумкин
06 января 2015, 06:35
+2
По моему, если вызывать некэшированным, то эта ссылка может появиться и у других юезеров. TicketForm их, конечно, не пропустит, но некрасиво.

Правильно так:
[[!*createdby:is=`...
Василий Наумкин
06 января 2015, 06:29
0
Подсчет результатов неверный для последней страницы. Если я загружаю по 18 позиций, то в конце, подгружая оставшиеся три или пять, он так же пишет «Загрузить 18».
А у меня всё верно.

Наверное, у тебя не выводится на странице общее количество результатов, или оно не доступно по этому селектору:
var total = $(mSearch2.options['total']).text();

Если я подгружаю с помощью кнопки последнюю страницу (например, третью из трех) и обновляю страницу — мне показываются только результаты с последней страницы.
У нас по-прежнему есть разбивка на страницы и по-прежнему результаты выдаёт pdoPage. При запросе 58й страницы тебе никто не будет грузить все 58 страниц сразу. Будет показана только запрошенная — так работает pdoPage.

Именно поэтому не нужно отключать пагинацию — чтобы юзер мог отмотать обратно.

Отображение оставшихся для загрузки товаров отображается, только если я применяю фильтры. При обычной пагинации — не показывает.
Не совсем понимаю, что ты имеешь в виду, но поправил еще несколько ошибок в скриптах pdoPage и выложил новую версию.

У меня сейчас работает вот так minishop2.com/test.
Василий Наумкин
05 января 2015, 19:19
0
Ты мне вот про это сначала скажи, работает или как?

А то напоминал, напоминал — я выбрал время, сделал — и нет ответа.
Василий Наумкин
05 января 2015, 18:46
0
Ну а ты не думал о том, что сигналу нужно еще как-то дойти до тебя и мерять время загрузки страницы в собственном браузере не совсем корректно?

Или у тебя идеальный интернет без задержек и тормозов?

Если скрипт выполняется за 0.08 — всё в порядке. Для независимого тестирования сайта есть www.webpagetest.org/, loadimpact.com/ и другие сервисы.
Василий Наумкин
05 января 2015, 17:46
0
То есть, скрипт из консоли сервера выполняется быстро, а через браузер до 2х секунд?

Я правильно понял?
Василий Наумкин
05 января 2015, 15:40
0
Исходный код страницы — это не исходный код чанка.

В странице должно быть что-то вроде такого:
<h4>Цена</h4>
<div class="mse2_number_slider"></div>
<div class="mse2_number_inputs">
	<div class="form-group col-md-6">
	<label for="mse2_ms|price_0">От
		<input type="input" name="ms|price" id="mse2_ms|price_0" value="0" class="form-control input-sm" />
	</label>
</div><div class="form-group col-md-6">
	<label for="mse2_ms|price_1">До
		<input type="input" name="ms|price" id="mse2_ms|price_1" value="3999" class="form-control input-sm" />
	</label>
</div>
price_0 — меньшее число, price_1 — большее. Вот это и нужно проверить.

А вообще, если ты покупал дополнение — пиши вопрос в техподдержке магазина и давай доступы к сайту, чтобы я мог посмотреть. Надоело гадать в слепую.
Василий Наумкин
05 января 2015, 15:13
0
Что-то мне кажется, что у тебя в чанках каша, раз меняются местами min и max.

Проверь-ка исходный код страницы, может там и вправду они поменяны?
Василий Наумкин
05 января 2015, 12:10
0
Проверь работу php из консоли скриптом из моей заметки. Если будет больше 0.2-0.6 то пиши в поддержку Linode и жалуйся на тормоза.

Если в консоли скорость нормальная — то разбираться нужно с сайтом.
Василий Наумкин
05 января 2015, 10:32
0
TTFB — это время отдачи первого байта, то есть, скорость генерации страницы PHP.

Если TTFB высокий, значит PHP медленно работает. Для сравнения можно попробовать открыть статичную HTML страницу, а не PHP.
Василий Наумкин
05 января 2015, 08:00
0
Если фильтрация вручную работает, значит нужно переименовать default.js, указать в настройках новое имя и добавить параметр
,step: 0.1
где то вот здесь, чтобы включить дробный шаг слайдера.

Докуметация по jQueryUI Slider.
Василий Наумкин
05 января 2015, 07:32
0
Скорее всего, здесь не в php проблема, а в jQuery Slider.

Попробуй вводить цифры для фильтрации вручную — что получится?
Василий Наумкин
04 января 2015, 14:22
0
— плагин проверяет существование нужных файлов (если их нет, выводит сообщение в логи и ничего фатального не делает)
И причем здесь MODX? Он не может и не должен контролировать выполнение плагина.

Задавай вопрос автору Ace. Он у меня, кстати ничего не ломает.
Василий Наумкин
04 января 2015, 13:16
4
0
1. Обнови mSearch2 и pdoTools до последних версий
2. Вызови mFilter2
[[!mFilter2?
	&parents=`0`
	&limit=`5`
	&element=`pdoResources`
	&ajaxMode=`button`
	&ajaxElemWrapper=`#mse2_mfilter`
	&ajaxElemRows=`#mse2_results`
	&ajaxElemPagination=`#mse2_pagination`
	&ajaxElemLink=`#mse2_pagination a`
	&ajaxElemMore=`#mse2_mfilter .btn-more`
]]
3. Допиши javascript для скрытия кнопки на странице, когда больше нечего показывать:
$(document).on('mse2_load', function(e, response) {
	var data = response.data;
	var total = data.total;
	var limit = mse2Config['limit'] || mse2Config['start_limit'];
	var page = pdoHash.get()['page'] || 1;
	
	var more = $('#mse2_mfilter .btn-more');
	if (page * limit >= total) {
		more.hide();
	}
	else if (more.is(':hidden')) {
		more.show();
	}
	//setMore();
});
4. По желанию можно добавить функцию setMore, которая будет писать сколько загрузится результатов на кнопке:
function setMore() {
	var btn = $('#mse2_mfilter .btn-more');
	var total = $(mSearch2.options['total']).text();
	var page = pdoHash.get()['page'] || 1;
	var limit = mse2Config['limit'] || mse2Config['start_limit'];
	
	var remains = total - (page * limit);
	if (remains > limit) {
		remains = limit;
	}
	
	var results = 'результатов';
	number = Math.abs(remains);
	number %= 100;
	if (number >= 5 && number <= 20) {
		results = 'результатов';
	}
	number %= 10;
	if (number == 1) {
		results = 'результат';
	}
	if (number >= 2 && number <= 4) {
		results = 'результата';
	}
	
	btn.text('Еще ' + remains + ' ' + results);
}

Вызов этой функции нужно раскомментировать в конце первой функции и добавить при загрузке страницы:
$(document).ready(function() {
	window.setTimeout(function() {
		setMore();
	}, 500);
});

Вот так у меня на тесте всё работает, даже пагинация кнопками. Вот вся тестовая страница.