Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
27 декабря 2012, 15:09
0
Да, так и есть. А выводит он 22 потому, что 2 было сохранено в прошлый раз.
Если по очереди комментировать вызовы setTVValue — хорошо видно.

А ваш хак отлично работает, хоть и выглядит это некрасиво.
if ($res = $modx->getObject('modResource', $modx->resource->id)) {
	$modx->resource->set('test', null);
	$res->setTVValue(1, 1);
	echo $res->getTVValue(1);

	$modx->resource->set('test', null);
	$res->setTVValue(1, 2);
	echo $res->getTVValue(1);
	die;
//12
}
27 декабря 2012, 14:55
1
0
Да хоть бы код в тег code оформил, хрен с ним, с «пожалуйста».
Работает без проблем, но только при одном условии — если вызывается не на странице, ТВ которой он должен обновить.
if ($res = $modx->getObject('modResource', 1)) {
	$res->setTVValue(1, 1);
	echo $res->getTVValue(1);

	$res->setTVValue(1, 2);
	echo $res->getTVValue(1);
	die;
// 12
}

А вот так — выдаёт прикольный глюк, очевидно связанный с кэшированием.
if ($res = $modx->getObject('modResource', $modx->resource->id)) {
	$res->setTVValue(1, 1);
	echo $res->getTVValue(1);

	$res->setTVValue(1, 2);
	echo $res->getTVValue(1);
	die;
// 22
}
Поэтому, переходим на обычный xPDO
if ($tv = $modx->getObject('modTemplateVarResource', array('tmplvarid' => 1, 'contentid' => $modx->resource->id))) {
	$tv->set('value', 1);
	echo $tv->get('value');
	//$tv->save(); //по желанию
		
	$tv->set('value', 2);
	echo $tv->get('value');
	die;
// 12
}

Почему выходит такая фигня — мне не ведомо, а копать исходники времени нет.
27 декабря 2012, 13:39
0
Быстро подорвался и на вапрос атветил, да?
27 декабря 2012, 07:32
0
Выглядит он очень старым, сложным и неповоротливым. Больше всего напоминает Quip.

У меня нет желания ставить и проверять.
26 декабря 2012, 14:41
0
На здоровье!
26 декабря 2012, 14:38
0
Немного поясню, почему сделано именно так.

В miniShop вы можете добавлять товары с параметрами, то есть, id будет один и тот же, а свойства разные. В корзине это должно быть разными элементами, поэтому id в качестве ключа массива использовать нельзя.

При выводе корзины скрипт выводит все элементы корзины с ключиком, чтобы можно было удалить или изменить их количество, а на странице товара просто не ясно какой ключ выставлять — ведь в корзине он может быть несколько раз и с разным цветом (или еще чем).

Вам этот функционал, пока, не нужен, но решение универсальное, поэтому придется терпеть.
26 декабря 2012, 14:29
0
А кто вам на этой странице выставит плейсхолдер [[+key]]?

Его выставляет сниппет miniShop при генерации корзины, и работают они только в корзине. Зачем удалять товар из корзины на странице товара — это не логично ведь?

Если есть огромное желание сделать именно так — пишите сниппет и запускайте на странице товара. Он должен перебрать $_SESSION['minishop']['goods'], найти там товар и выставить плейсхолдер с ключом этой позиции.
26 декабря 2012, 13:53
0
Ошибка в коде ссылки
<a href="#" class="remFromCart" data-key="[[*id]]"></a>

Должно быть не [[*id]], а [[+key]]. Ибо товары удаляются не по номеру, а по ключу, который генерируется из номера страницы-товара и дополнительных свойств. Добавляются по номеру, да.

Вот цитата из оригинального чанка товара в корзине
<a href="#" class="remFromCartLink" title="Удалить из корзины" data-key="[[+key]]"><i class="icon-remove"></i></a>
Простыни кода я потёр.
26 декабря 2012, 13:12
0
После апгрейда, миграции и подарка — не кажется, что дорого.

Скажу по секрету, мне еще и приходит по 20$ за каждого реферала, если он проработал 3 месяца. То есть, за довольного реферала, а не за всех подряд.
26 декабря 2012, 12:16
0
502 Bad gateway — это отказ php, то есть, nginx не может получить от него ответ.

Значит, нужно смотреть в лог ошибок /var/log/nginx/имясайта-error.log. Подозреваю, что у вас там что-то работает неправильно.
26 декабря 2012, 11:15
0
На здоровье!
26 декабря 2012, 07:51
0
Пользуюсь своим VPS и всем советую. Заметка по настройке, рекомендую linode.
24 декабря 2012, 15:10
0
Моя статья на Хабре про создание компонента — habrahabr.ru/post/126635/.
Официальная документация — rtfm.modx.com/display/revolution20/Custom+Manager+Pages

Но самый действенный способ, конечно, прокачивать знания разбираясь в том, как устроены чужие разработки. Иначе вы научитесь только тому, что вам рассказали в уроках.
24 декабря 2012, 12:13
0
Больше не будет таких потрясений, ибо теперь сайт работает с удаленными сервисами напрямую.

Про логин и пароль — а где ж их взять то?

Username не все сервисы передают, а если и передают, вы сами можете не знать, какой он там. Пароль просто не нужен — ибо авторизация идет через другой сервис. Email тоже когда как, идентификатор у каждого сервиса свой.

Такой вариант возможен только если регистрировать юзера классическим способом, а потом давать ему привязать учётки для быстрого входа. А мне такая регистрация не нужна.
21 декабря 2012, 22:40
0
Курсы закончатся послезавтра. Потом я накатаю заметку «как прошло», если кто-то пожелает там откликнуться — ура.

Пока что все дружно доделывают задания и задают вопросы. Никаких досок почета решили не делать, ибо это некорректно, по отношению к людям — вывешивать где-то их данные без выраженного согласия…
21 декабря 2012, 22:08
0
Все проблемы с Quip я решил его удалением и написанием собственных комментариев.
bezumkin.ru/blog/355/