Андрей

Андрей

С нами с 09 апреля 2015; Место в рейтинге пользователей: #68

Расширенные поля пользователей

Небольшая пошаговая инструкция, как научиться сохранять любые интересующие данные о юзере в специальное поле extended.

На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.

При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
// id нужного пользователя
$user_id = 15;
// Получаем объект modUser
if ($user = $modx->getObject('modUser', $user_id)) {
	// Получаем связанный с ним профиль пользователя
	if ($profile = $user->getOne('Profile')) {
		// Получаем специальное поле extended
		$extended = $profile->get('extended');
		// Добавляем новое значение
		$extended['mykey'] = 'mydata';
		// И сохраняем обратно в профиль
		$profile->set('extended', $extended);
		$profile->save();
	}
}
Самое приятное, что эти данные вы можете не только просмотреть на странице пользователя, но и изменить.
Василий Наумкин
07 апреля 2014, 11:00
modx.pro
40
16 452
+11

Импорт товаров в minishop2 напрямую через БД

Может кто-либо поделиться опытом правильного импорта товаров из бд (mysql) с такими полями:

название | артикул | цена | картинка_ид_урл

достаточно ли того, что допустим в таблицу modx_ms2_products я импортирую эти поля (ну с картинками придётся подумать), как быть с системными ИД, и нужно ли что то ещё?

Спасибо.
Pavel
29 января 2014, 21:47
modx.pro
4
3 960
0

miniShop2: счетчик проданных товаров / уведомления

marked
08 октября 2013, 18:13
modx.pro
4
2 923
0

Генерация расписания занятий на pdoTools


Увидел недавно вопрос на сообществе — человек хочет сгенерировать таблицу с расписанием занятий по дням.

Казалось бы, задача несложная, но это совсем не так. Стандартные сниппеты не предназначены для такой работы и их приходится запускать на каждый день недели. И даже если вас не волнует скорость работы, то в итоговой таблице будут пропущенные ячейки, что совсем не айс.

Можно сделать свой компонент расписаний, но это нужно далеко не всем, тем более, для вывода всего одной недели из дерева.

Поэтому предлагаю вам готовое решение, а заодно и демонстрацию работы с pdoTools. Конечно, можно было бы обойтись и родными методами MODX, но с ним быстрее.

Все нужные данные выбираются за один запрос, а дальше очень быстрая обработка и оформление на PHP.
Василий Наумкин
05 октября 2013, 03:56
modx.pro
17
6 016
0

pdoResource - проблема с NULL в &where=``

Василий, привет!

Нужны мне вот такие условия в запросе:
SELECT <...>
WHERE  `modResource`.`parent` IN (103,104,105,107,106,108,109,110,115,120)  AND (`TVshow_in_main`.`value` != 1 OR `TVshow_in_main`.`value` IS NULL)
Вызываю вот так:
[[pdoResources?
	&tpl=`tpl.article.preview`
	&parents=`103`
	&includeTVs=`show_in_main`
	&where=`[{"show_in_main:!=": "1", "OR:show_in_main:IS": "NULL"]}`
	&tvPrefix=``
	&showLog=`1`
]]
pdoResource всё отлично джойнит и работает как надо, но…
Алексей Карташов
24 августа 2013, 12:31
modx.pro
2
6 633
0

Как проверять TV-поля одновр. и на '', и на NULL

Для определённости рассмотрим функционал сниппета pdoResources.
Проблема заключается в том, что классическим форматом JSONxPDO в параметре &where в общем случае невозможно указать проверку значения некоторого TV-поля одновременно и на пустое значение, и на NULL. В каких случаях может понадобиться такая проверка — напишу ниже.

Для примера возьмём параметр introtext (в БД modX это поле может принимать значения NULL)
Казалось бы, чего проще:
&where=`{"introtext":"", "OR:introtext:IS":null}`
Но проблема здесь в том, что в конечном запросе перед нашим условием в преобладающем большинстве случаев будут стоять ещё и другие условия, которые де факто будут объединены с нашим условием логикой «AND», причём наше условие в скобки взято не будет. В итоге в конечном запросе мы получим следующее условие:
WHERE (<i>прочие условия</i> AND `modResource`.`introtext` = '' OR `modResource`.`introtext` IS NULL)
Как видим, логика нарушена.
Cyrax_02
09 августа 2013, 16:59
modx.pro
6
5 827
0

minishop2 msProducts связи товаров

В настройках создана связь «Комплект товаров» (Один ко многим) id=1.
В категории 3 товара.
У одного товара, который является составным, указываю связь с 2-мя другими товарами.

На странице товара вызываю код:
[[msProducts? &link=`1` &master=`15`]]
  • &link=`1`, где 1 — это id связи из настроек.
  • &master=`15`, где 15 — это id товара у которого я указывал подчиненные товары.
В результате ни чего не выводится.
Что я делаю не так?
Виталий Князь
08 августа 2013, 08:14
modx.pro
1
7 818
0

При заказе от 2000 рублей - доставка бесплатно

Как правильно реализовать учёт, что при заказе от 2000 рублей — доставка бесплатная?
Василий Летуев
20 июля 2013, 18:02
modx.pro
2
1 980
0

MiniShop2. Модификации и цены

Всем привет!

Подскажите, пожалуйста. С MiniShop2 не работал ещё, поэтому особо не в курсе.

Есть ли хоть какая-нибудь возможность в зависимости от размера товара менять цену?
Алексей Карташов
03 июля 2013, 11:00
modx.pro
1
4 665
0

Вывод категорий товара тегами

Может быть кому-нибудь еще понадобится вывести все категории текущего товара. Делюсь.
Виктор Долгий
30 июня 2013, 20:37
modx.pro
5
5 813
0