Воеводский Михаил

Воеводский Михаил

С нами с 07 февраля 2013; Место в рейтинге пользователей: #28
03 декабря 2015, 18:40
0
{$_pls['placeholder']}
03 декабря 2015, 12:30
0
Сделай стоимость такого билета на 1 рубль меньше. Фактически, ни на чем не отразится, но в таблице легко заметишь.
02 декабря 2015, 22:29
+1
И сейчас все побегут массово расширять все системные таблицы )))
02 декабря 2015, 17:55
0
Второе. Когда необходимо постоянно работать с некоторыми TV, появляется смысл добавить дублирующие значения в основную таблицу. В противном случае это не нужно.
02 декабря 2015, 17:02
0
Не исчезнут, Office дополняет.
02 декабря 2015, 15:18
0
MinifyX ошибки в своей работе скидывает в лог ошибок MODX. Что там есть?
02 декабря 2015, 12:34
+1
Вот и поглядим, знают ли они русские народные пословицы :)
02 декабря 2015, 12:25
0
О 3 версии уже года 3 идут разговоры.
02 декабря 2015, 12:21
+1
Сергей, молодец!
Все гениальное просто :) Твой пытливый ум еще много полезностей, чую, придумает )))
02 декабря 2015, 09:41
+1
Отправить AJAX запрос из браузера, отловить запрос сниппетом или плагином, запустить обработку. После всего этого вызвать JS метод Order.getCost();
02 декабря 2015, 08:29
0
Стоимость считается на фронте на JS?
Если так, необходим собственный класс доставки, который принимает стоимость из браузера, но очень это криво выглядит. Нужно больше подробностей.
02 декабря 2015, 07:07
0
В HitsPage так не должно быть, достаточно посмотреть на название.
30 ноября 2015, 23:30
0
<?
switch ($modx->event->name){
	case 'msOnBeforeAddToCart':
		if (!is_array($options)) $options = json_decode($options, true);
		if (isset($options['price'])) {
			$product->set('price', $options['price']);
		}
		break;
}
Кусок с работающего проекта. Полагаться на записанное в options товара никогда не нужно, но как пример хорошо подходит.
30 ноября 2015, 23:08
+2
1) Использовать getIterator
2) Перед сохранением установкой новых значений и сохранением в базу проверять, есть ли изменения. Если не изменилось, ничего не делать.

Это самая очевидная оптимизация. Следующий шаг — начальная выборка значений в виде массивов данных, без getCollection/getIterator. Сравнить все на уровне массивов, затем быстро пройти только по изменившимся товарам.

И, кстати, рекомендую именно проверку на уровне массивов сделать с формированием нового массива, в котором будут изменившиеся значения. На мой взгляд, быстрее этого варианта только чистый SQL. Могу, конечно, ошибаться.
30 ноября 2015, 23:00
0
В такой задаче, хоть и не самый правильный способ, я бы смотрел в сторону обновления на чистом SQL, если нет необходимости отработки плагинов и прочего при изменении товаров. А такой необходимости нет, учитывая допустимость работы без процессоров.

Что касается самих процессоров, с ними быстрее не получится. Они, помимо getObject() и save() выполняют еще огромное количество функций и проверок.

У вас товары сохраняются все и всегда? Или есть проверка на изменившиеся поля?