Виктор Долгий

Виктор Долгий

С нами с 18 февраля 2013; Место в рейтинге пользователей: #104
Виктор Долгий
14 июня 2017, 18:34
0
Как ни пробую, ничего не выходит со сменой. Все последней версии. Немного порылся, на этапе msOptionsPrice.Tools.setOptionValue, на последнем if затык в .js… jQuery 2.2.4
Виктор Долгий
14 июня 2017, 16:20
0
Приветствую. Проясните ситуацию о выставлении опций, в зависимости от фильтров, не совсем понятно.
Виктор Долгий
12 октября 2016, 18:14
0
Василий подшаманит pdoTools под php 5.3 и все будет гуд. Ждемс.
Виктор Долгий
12 октября 2016, 13:49
0
Вот так делал это я:

<?php
$serviceOption = 'replaceTextInOption';

$parentCategory = 641;
$getOptionKey = 'flavor_volume';
//$addText = 'Готовая база или основа';

$replaceTextInOptionFind = ' мл';
$replaceTextInOptionReplace = '';

if (!$parents = $modx->runSnippet('pdoResources', array('returnIds' => 1, 'parents' => $parentCategory, 'where' => array('class_key' => 'msCategory'), 'limit' => 0))) {
	$parents = $parentCategory;
}
// ! Добавить проверку, категория ли это товаров
$parents = explode(",", $parents);

foreach ($parents as $parent) {
	$products = $modx->getCollection('msProduct', array('parent' => $parent));
	foreach ($products as $product) {
		if (!($product instanceof msProduct)) {
			return "The resource with id = {$product->id} is not instance of msProduct.";
		}
		
		if ($serviceOption == 'replaceTextInOption') {
			if ($data = $product->getOne('Data')) {
				$options = $data->get('options');
			}
			
			foreach ($options as $optionKey => $optionValues) {
				if ($optionKey == $getOptionKey) {
					//echo print_r($options) . '
';
					//echo print_r($optionValues) . '
';
					//$options[$dataKey][0] = str_replace($replaceTextInOptionFind, $replaceTextInOptionReplace, $dataValue[0]);
					
					if (is_array($optionValues)) {
						//return 777;
						foreach ($optionValues as $arrayNumber => $optionValue) {
							$options[$optionKey][$arrayNumber] = str_replace($replaceTextInOptionFind, $replaceTextInOptionReplace, $optionValue);
						}
						//sort($options[$optionKey]);
						//$options[$optionKey] = $optionValues;
						echo print_r($options) . '

';
					}
					$data->set('options', $options);
					$data->save();
					//return $dataKey;
				}
				//echo $dataKey;
			}
		}
		
		if ($serviceOption == 'replaceTextInField') {
			//$product->set('weight', '0.01');
			//$product->save();
		}
	}
}
Тут много мусора, но все же, думаю, разберешься. Ключевой момент — записать массив значений, в массиве опций, к нужной опции, а затем, сохранить весь массив опций.
Виктор Долгий
12 октября 2016, 13:35
0
К слову, я сбор денег пропустил, как-то, но желание добавить есть. Куда скинуть баблишка?
Виктор Долгий
12 октября 2016, 13:32
0
Если быть точным, то если удалить все тэги.
Виктор Долгий
12 октября 2016, 13:29
0
Спасибо. Ты как всегда быстр и точен ;)

Кстати, скорость не замерял, но по ощущениям, стало быстрее. Еще одна ошибка валится, если на одной странице запустить последовательно несколько getTickets с выборкой из разных категорий:
Notice: Undefined index: on in /var/www/***/****/core/components/pdotools/model/pdotools/pdofetch.class.php on line 305
Настройки кэширования сниппета не влияют никак. Кэширование фенома отключено.
Виктор Долгий
12 октября 2016, 03:16
0
Если выключить кэширование скомпилированных чанков Fenom:
Notice: Undefined index: on in /var/www/***/****/core/components/pdotools/model/pdotools/pdofetch.class.php on line 305
Виктор Долгий
12 октября 2016, 03:08
0
Если удалить все тэги Fenom, вроде, работает без ошибок.
Виктор Долгий
12 октября 2016, 03:07
0
Сниппет getTickets
Виктор Долгий
12 октября 2016, 00:16
0
Угараздило же меня на рабочем сайте обновиться, да и не бэта, вроде…
Виктор Долгий
08 октября 2016, 15:48
0
Спасибо за обновления) В последнем обновлении не работает поиск по ключу при добавлении опции в модификацию.
Виктор Долгий
29 сентября 2016, 17:02
0
Спасибо! Да, через плагин, думаю, быстрее будет.
Виктор Долгий
29 сентября 2016, 16:25
0
А есть ли способ заставить меняться картинки с опциями в списке (плитке) товаров?
Виктор Долгий
06 сентября 2016, 22:38
0
Вот это круто!) Еще раз спасибо!
Виктор Долгий
06 сентября 2016, 22:21
+1
Всё, заработало. Я не особо лазил в код, но фишка оказалось в том, что в форме продукта в плитке с классами .ms2_form.msoptionsprice-product вызов сниппета [[!msOptions]] должен стоять после скрытого инпута с name=«options». Ну, в принципе логично, но иногда тупикуешь из-за таких мелочей. Вам спасибо, прикуплю еще на один сайт дополнение ;)
Виктор Долгий
06 сентября 2016, 22:06
0
На странице товара всё отлично работает.