vrm13

vrm13

С нами с 15 октября 2014; Место в рейтинге пользователей: #491
Отправить деньги
vrm13
17 октября 2018, 11:36
0
тв с таким типом стоит, но что интересно если в чанке просто вывести {$clothes} значения всё равно — 1 || 2 || 3

Пробую ваш код:

<?php
if ($modx->event->name == 'OnDocFormSave') {

	if ($resource->template != 5) { // id шаблона с товаром
		return;
	}

	// получаем id выбранных в TV продуктов
	$tv = $resource->getTVValue('clothes');

	if (empty($tv)) {
		return;
	}

	$ids = explode($tv, ',');

	// получаем сами продукты
	$products = $modx->getCollection('msProduct', [
		'id:IN' => $ids
	]);

	if ($products) {

		$prices = [];
		
		// получаем цены для выбранных продуктов
		foreach ($products as $product) {
			$prices[] = $product->get('price');
		}

		// получаем минимальную цену
		$min_price = min($prices);

		if ($min_price) {
			// сохраняем цену для товара
			$product->set('price', $min_price);
			$resource->save();
		}

	}
}
системное событие поменял на OnDocFormSave. Ресурс сохраняется нормально, но никаких изменений и в журнале ошибок пусто. Существует ли какой-то способ поиска ошибок в таком случае? как в сниппетах showLog например
vrm13
17 октября 2018, 10:31
0
Начну мыслить вслух, если вы не против.
Пытаюсь понять как пишутся плагины, для этого делаю что-то простое, например, при сохранении документа с шаблоном 5 нужно прибавить к цене 100 р. делаю вот таким образом:

<?php
if ($modx->event->name = 'OnBeforeDocFormSave') {
	    if ($resource->get('template') == 5) {
        $price = $product->get('price');
        return $price + 100;
	    }
        break;
}
но при сохранении страницы бесконечная загрузка и в журнале ошибок ничего. на каком шаге ошибка, пока не пойму.

Наверное стоит ещё сказать зачем такой костыль, когда есть дополнения типа msoptionsprice2 и другие.
Дело в том, что я делаю загрузку каталога с помощью msync. Так как в каталоге 1с размеры и цвета товаров — это отдельные товары, а на сайт я такое вываливать не хочу — я создаю товар с шаблоном 5 и через TV, с возможными значениям (описан в начале) назначаю ему нужные товары. В целом всё работает, но цену приходится назначать руками и следить за её изменениями.

Решение вижу в том, чтобы через плагин подставить значение товара из той самой ТВ с наименьшей ценой, при сохранении документа.
Если у кого будет минутка, направьте пожалуйста, а пока ковыряю дальше.
vrm13
20 декабря 2017, 12:17
0
спасибо, понял. Пока значит повременим с приобретением компонента, но когда будет время всё-равно перейдём на yandexmaps2, так что спасибо за работу.
vrm13
20 декабря 2017, 10:46
0
Доброго дня! Подскажите, получиться вывести все объекты ранее добавленные на yandexmaps с использованием yandexmaps2?
У меня сейчас около 350 ресурсов с координатами, у каждого выводится своя метка и собраны разные общие карты. Очень проблематично будет по новой прописывать метки, но новые возможности будут действительно полезны
vrm13
19 ноября 2017, 17:37
0
да, проверил, на месте
vrm13
19 апреля 2017, 21:07
0
кажется баг остался, только теперь не сразу перекрывает, а только если сначала выделить слово, тапнуть по нему, но не нажимать «отправить сообщение», а снять выделение. В этом случае всё снова перекрывается
vrm13
13 марта 2017, 20:07
0
виноват( буду знать теперь где смотреть названия таблиц. я правда стараюсь, самому не удобно кучу вопросов задавать, но наверное все через это проходят. Спасибо вам огромное!
vrm13
13 марта 2017, 17:10
0
Так просто? =) работает!

В целях образования попробовал приджойнить таблицу msOrderProducts чтобы выводить и общее количество купленных товаров, но снова неудача.

Полагаю что нужно присоединять
&leftJoin=`{
         "msOrder": {
                     "class": "msOrder",
                     "on": "modUser.id = msOrder.user_id"
         },
         "msOrderProducts ": {
                    "class": "msOrderProducts",
                    "on": " msOrder.id = msOrderProducts.order_id "}
                      }
читаю тут про методы, но всё равно не въезжаю почему не удаётся присоединить таблицу? leftjoin в данном случае присоединяет к modUser все таблицы или можно вот так через запятую указывать и они будут последовательно друг за другом джоинтиь?
vrm13
13 марта 2017, 14:39
0
Доброго дня, пишу не в поддержку, т.к. вопрос немного за рамками дополнения.

Хочу сделать таблицу-рейтинг всех покупателей. К примеру так:
[[!pdoUsers?
	&groups=`Users`
	&limit=`0`
	&tpl=`Users-row`
]]

Чанк Users-row:
<span>[[+username]]</span>
[[!msListOrders?
    &where=`{
            "msOrder.status:IN":[3],
            "msOrder.user_id":[[+id]]
            }`
    &tpl=`@INLINE [[+total.sum]]`
]]

в результате в целом список выводит как надо: пользователи + сумма потраченных денег, но отсортировать по total.sum не получится, ведь как я понимаю этого значения нет в БД. А моя задача сделать своего рода рейтинг, чтобы на первом месте был человек потративший больше всех.

Вопрос, как записать значение total.sum в БД? Можно записать в одно из неиспользуемых поле userProfile (zip,fax, например) или добавить своё используя этот мануал. Может сделать отдельную таблицу на MIGix или customExtra, но в любом варианте у меня возникнет проблема (не хватает знаний), как сделать запись значения полученного из сниппета msListOrders в БД?
vrm13
03 марта 2016, 13:33
0
копаю глубже, уже ясно что таблицу up2Fields я ни как не заджойню к up2Profile. Значит нужно создавать отдельную таблицу где задать колонки id юзера и моё созданное поле bal. А как это сделать сововсем другая история. Блин такая простая, казалось бы, задача как сортировка превращается в необходимость с нуля изучать xPDO и sql.
vrm13
02 марта 2016, 23:26
0
не могу решить, погряз в учебниках но так и не понял как правильно составить, делаю так
[[!up2Users? 
&groups=`Users`
&showLog=`1`
&innerJoin=`{"up2Fields ":{"class":"up2Fields"}}`
&select=`{"up2Fields":"*"}`
&where=`{"up2Fields.id:LIKE":"10"}`
&sortdir=`DESC`
]]
лог выдаёт такой:
0.0027180: Conditions prepared
0.0000391: Query parameters ready
0.0000339: xPDO query object created
0.0001822: innerJoined modUserProfile as modUserProfile
0.0005951: innerJoined modUserGroupMember as modUserGroupMember
0.0002060: innerJoined up2Profile as up2Profile
0.0008161: innerJoined up2Fields as up2Fields 
0.0000050: Grouped by modUser.id
0.0001900: Added selection of modUser: SQL_CALC_FOUND_ROWS `id`, `username`, `password`, `cachepwd`, `class_key`, `active`, `remote_key`, `remote_data`, `hash_class`, `salt`, `primary_group`, `session_stale`, `sudo`
0.0003140: Added selection of modUserProfile: `id`, `internalKey`, `fullname`, `email`, `phone`, `mobilephone`, `blocked`, `blockeduntil`, `blockedafter`, `logincount`, `lastlogin`, `thislogin`, `failedlogincount`, `sessionid`, `dob`, `gender`, `address`, `country`, `city`, `state`, `zip`, `fax`, `photo`, `comment`, `website`, `extended`
0.0000160: Added selection of modUser: `up2Profile`.`type`, `up2Profile`.`lastname`, `up2Profile`.`firstname`, `up2Profile`.`secondname`, `up2Profile`.`registration`, `up2Profile`.`lastactivity`, `up2Profile`.`ip`, `up2Profile`.`extend`, `up2Profile`.`property` AS userProfile
0.0001230: Added selection of up2Fields: `id`, `name_in`, `name_out`, `tab`, `type`, `css`, `value`, `length`, `required`, `readonly`, `editable`, `active`, `rank`
0.0003171: Added where condition: modUser.active=1, modUserProfile.blocked=0, modUserGroupMember.user_group:IN(8), up2Fields.id:LIKE=%10%
0.0000391: Sorted by modUser.id, DESC
0.0000062: Limited to 10, offset 0
0.0004768: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modUser`.`id`, `modUser`.`username`, `modUser`.`password`, `modUser`.`cachepwd`, `modUser`.`class_key`, `modUser`.`active`, `modUser`.`remote_key`, `modUser`.`remote_data`, `modUser`.`hash_class`, `modUser`.`salt`, `modUser`.`primary_group`, `modUser`.`session_stale`, `modUser`.`sudo`, `modUserProfile`.`id`, `modUserProfile`.`internalKey`, `modUserProfile`.`fullname`, `modUserProfile`.`email`, `modUserProfile`.`phone`, `modUserProfile`.`mobilephone`, `modUserProfile`.`blocked`, `modUserProfile`.`blockeduntil`, `modUserProfile`.`blockedafter`, `modUserProfile`.`logincount`, `modUserProfile`.`lastlogin`, `modUserProfile`.`thislogin`, `modUserProfile`.`failedlogincount`, `modUserProfile`.`sessionid`, `modUserProfile`.`dob`, `modUserProfile`.`gender`, `modUserProfile`.`address`, `modUserProfile`.`country`, `modUserProfile`.`city`, `modUserProfile`.`state`, `modUserProfile`.`zip`, `modUserProfile`.`fax`, `modUserProfile`.`photo`, `modUserProfile`.`comment`, `modUserProfile`.`website`, `modUserProfile`.`extended`, `up2Profile`.`type`, `up2Profile`.`lastname`, `up2Profile`.`firstname`, `up2Profile`.`secondname`, `up2Profile`.`registration`, `up2Profile`.`lastactivity`, `up2Profile`.`ip`, `up2Profile`.`extend`, `up2Profile`.`property` AS userProfile, `up2Fields`.`id`, `up2Fields`.`name_in`, `up2Fields`.`name_out`, `up2Fields`.`tab`, `up2Fields`.`type`, `up2Fields`.`css`, `up2Fields`.`value`, `up2Fields`.`length`, `up2Fields`.`required`, `up2Fields`.`readonly`, `up2Fields`.`editable`, `up2Fields`.`active`, `up2Fields`.`rank` FROM `modx_users` AS `modUser` JOIN `modx_user_attributes` `modUserProfile` ON modUser.id = modUserProfile.internalKey JOIN `modx_member_groups` `modUserGroupMember` ON modUser.id = modUserGroupMember.member JOIN `modx_up2_profile` `up2Profile` ON `up2Profile`.`id`=`modUser`.`id` JOIN `modx_up2_fields` `up2Fields ` ON  WHERE  ( `modUser`.`active` = 1 AND `modUserProfile`.`blocked` = '0' AND `modUserGroupMember`.`user_group` IN ('8') AND `up2Fields`.`id` LIKE 0 )  GROUP BY modUser.id ORDER BY modUser.id DESC LIMIT 10 "
0.0004051: Could not process query, error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE  ( `modUser`.`active` = 1 AND `modUserProfile`.`blocked` = '0' AND `modUse' at line 1
0.0067790: Total time
11 010 048: Memory usage
подскажите я where не правильно строю?