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

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

С нами с 18 февраля 2013; Место в рейтинге пользователей: #104
Виктор Долгий
06 сентября 2016, 18:04
0
Есть список товаров, выводимый miniShop через mFilter, стандартно. Инициализирую до mFilter msOptionsPrice.initialize. В плитке товаров выставляю класс формы msoptionsprice-product, класс ценника msoptionsprice-cost msoptionsprice-[[+id]], в самом товаре создаю два цвета, каждому в «Модификациях» задаю цену (=) и выбираю цвет. И вот, плитка товаров, выбираю цвет, выводимый msOptions в товаре, и ничего не происходит)) Ни в логах браузера, ни в логах MODx ничего нет. Видно, что при выборе цвета в браузере в консоли, промаргивает поле с ценой, но она не меняется абсолютно. Где я не прав?
Виктор Долгий
05 сентября 2016, 20:59
0
В списке товаров использовать можно? Или только старую модификацию?
Виктор Долгий
01 сентября 2016, 13:03
2
0
Судя по всему, сохранением опций заведует класс msProductData, вот его и заставим работать. Мой пример с рабочего сайта, где нужно было к значению опции товара нужно было приписать текст. Также можно заменить значение, или обрабатывать поля с несколькими значениями, главное понимать, что нужно делать с массивами (опций):

<?php
$parentCategory = 220;
$optionKey = 'base_nicotine';
$addText = 'мг/мл';

$parents = $modx->runSnippet('pdoResources', array('returnIds' => 1, 'parents' => $parentCategory, 'where' => array('class_key' => 'msCategory'), 'limit' => 0));
$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 ($data = $product->getOne('Data')) {
			$options = $data->get('options');
		}
		
		foreach ($options as $dataKey => $dataValue) {
			if ($dataKey == $optionKey && !strpos($dataValue[0], $addText)) {
				$options[$dataKey][0] = $dataValue[0].' '.$addText;
				$data->set('options', $options);
				$data->save();
			}
		}
	}
}

Вот так просто и работает. Над проверками особо не заморачивался, можно допилить, но это уже каждый сам для себя доделает.
Виктор Долгий
16 июня 2016, 13:19
+1
К слову, скинул ссылку тем, кто просил, и сразу начали сайт на «надежность» проверять, спам через формы обратной связи гонять. Молодцы! ;) Вот и помогай после этого…
Виктор Долгий
15 июня 2016, 19:15
0
Не отправляет сообщение на почту через профиль. Напиши куда скинуть тебе.
Виктор Долгий
15 июня 2016, 19:15
0
Я юзаю UIkit, все работает с феномом отлично. Чуть подробнее опиши, пожалуйста.
Виктор Долгий
15 июня 2016, 19:05
0
Можно, конечно, но делать пока не охота, пока устраивает и так, в силу небольшого количества форумов на данном этапе, а в последующем не выводить просмотры, только тикеты и комменты. Плюс, кеширую все это по часу.
Виктор Долгий
07 мая 2016, 12:34
0
Может кто-то уже делал, в списке товаров (при выводе mFilter-ом, в плитке или в списке) нужно приделать возможность выбора свойства товара (от этого изменяется стоимость, как и на самой странице товара), чтобу покупать было удобней (чтобы не редактировать потом в корзине свойства).
Виктор Долгий
16 января 2016, 22:16
0
Знаешь, я вот подумал, насколько было бы круто, если бы каждый, кому тут помогли, впоследствии, выкладывал бы готовое решение, с пояснениями. Количество глупых вопросов, думаю, уменьшалось бы в геометрической прогрессии. Так что, как кому-то помогаешь, ставь обязательное условие — выложить решение с пояснением ;)
Виктор Долгий
16 января 2016, 22:06
0
Это пять :)

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

Тебе спасибо, в том числе и за беседу :)
Виктор Долгий
16 января 2016, 21:57
0
Видать, сильно тебя лентяи и хитрожопые достали :).
Виктор Долгий
16 января 2016, 21:56
0
Поясню так, как понимаю, с чем сталкивался. Есть люди, которые пытаються что-то сделать, банальго, выкарабкиваются из ж*пы. Так вот они не берут работу по сайтам, вэб-приложениям. Они делают это для себя. На платные и готовые решения у них денег не хватает. Но есть поистине мощный инструмент, сообщество, и хоть какой-то опенсорс. И вот делают что-то, изучают. А когда сайт один делаешь, и дизайн, и верстку, и код, и наполнение, и расрутку, это накладно немного, изучить все досконально. Любая мелочь, упрощающая и ускоряющая процесс — это огромный плюс.

А кто-то просто не осиливает глубины… Но очень хочет, чтобы работало. Ты пойми, я без претензий, ты сделал итак достаточно. Я думаю, что если можно кому-то помочь, и это в твоих силах, то нужно это сделать. Сорри, за офф, можно потом удалить ;)
Виктор Долгий
16 января 2016, 21:48
0
Да не сложно учиться. Некоторым это не нужно, или, банально, времени нет. Сколько прочитал — примерно догадываюсь ;).
Виктор Долгий
16 января 2016, 21:42
0
Ты с одной стороны прав. Ну, слушай, не всем нужно ведь программировать. Тут лучшее сообщество, лучшие компоненты, почему бы не делать их еще лучше. Я как доберусь полноценно до гита, помогу. Однако, разве не логично это для прогресса, предусмотреть сразу все возможные ситуации, и чтобы всё работало чётко, быстро и безглючно? Ты поистине сделал огромный вклад в MODx, в частности, русскоязычный, это факт. Я знаю, что ты отвечаешь на все возможные вопросы и уделяешь этому большую часть времени. Но не все спецы, не все знают столько же, сколько и ты. Я не занимался вэбом два года. Много чего забылось. Я ведь понимаю, что каждая такая заметка кому-то поможет. Те вопросы, что тут задают для многих трудны, а для тебя, с твоим опытом — раз плюнуть. Не у всех есть возможность досконально разбираться. Так что, не сердись, просто хочется сделать лучше, доступней и популярней.
Виктор Долгий
16 января 2016, 20:33
0
Как предложение, может будет возможность добавить в дочерние настройки, настройки раздела тикетов еще и такую опцию? Думаю, для многих будет удобно ;)
Виктор Долгий
16 января 2016, 20:19
0
Можно и не проверять на class_key=Ticket...
Виктор Долгий
16 января 2016, 20:18
+1
Кстати, если кому нужно будет, чтобы «галочка про поиск сама убиралась», нужно создать простенький плагин на событие OnBeforeDocFormSave:
<?php
switch ($modx->event->name){
	case 'OnBeforeDocFormSave':
		if ($resource->get('class_key') == 'Ticket' && $resource->get('parent') == 0) {
			$resource->set('searchable', 0);
		}
	break;
}
Где 0 нужно заменить секцией тикетов, для которых тикеты должны быть скрытыми для поиска.
Виктор Долгий
16 января 2016, 14:18
0
Все стало на свои места, спасибо!