Всего 123 756 комментариев

Yan Alex
27 декабря 2012, 15:16
0
Хороший хак, спасибо, это позволит не уходить от стандартного АПИ модэкса, но как говорил Безумкин — выглядит не очень красиво, но думаю да и Х* с ним, хотя я сам тот еще эстет в этом плане )
Yan Alex
27 декабря 2012, 15:14
0
Вот и я так думал пока не залз в БД и не увидел что там НЕТ этого значения =). Что то огонь какой то с этим API у них.
Andrey Grachov
27 декабря 2012, 15:13
0
После этой строки вашего первоначального кода:
$modx->resource->setTVValue(11, 1);
надо добавить
$modx->resource->set('tv_name', null);
или
$tv = $modx->resource->get('tv_name');
if (is_array($tv)) {
	$tv[1] = 1;
	$modx->resource->set('tv_name', $tv);
}
где tv_name — имя tv-параметра с id равным 11. Это позволит дальше на странице использовать новое значение tv-параметра, если оно необходимо.
Василий Наумкин
27 декабря 2012, 15:12
0
Судя по тому, что пишет Боб Рей — оно сохраняется в ТВ, а не в объект.
Василий Наумкин
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
}
Denys Butenko
27 декабря 2012, 15:08
0
Попробуй сниппет вызывать плагином до рендера страницы
Yan Alex
27 декабря 2012, 15:06
0
А можно полный код, а то я не понял к какому варианту применимо.
Yan Alex
27 декабря 2012, 15:04
0
Да да, первый вариант, как раз вызывается на той самой странице, которую должен обновить, второй вариант, глючит, а третий вот как раз ждал от вас, спасибки огромное, он работает! Как в воду глядел, хотел на чистом xPDO написать. Кстати я еще нашел такой вариант, учудил тип с форума
$modx->resource->set('SendTestEmail', $fields);
у него такая же проблема была Ссылка на ветку, главное что во первых работает, но во вторых непонятно где он хранит эти данные у объекта, облазив БД не нашел никаких значений даже близко, что думаешь об этом методе?
Andrey Grachov
27 декабря 2012, 15:00
0
В ходе обработки запроса modx загружает ресурс и все его tv-параметры, и потом при получении значений tv-параметров обращается к первоначальным данным. После установки нового значения надо выполнить что-то вроде:
$modx->resource->set('tv_name', null);
Василий Наумкин
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
}

Почему выходит такая фигня — мне не ведомо, а копать исходники времени нет.
Yan Alex
27 декабря 2012, 13:54
0
Пробовал так, тот же результат, ТВ упорно меняется только после того как я один раз открою страницу, как будто тв у объекта сейвятся после отработки скрипта.

$tv = $modx->getObject('modTemplateVar',array('id'=>'11'));
$tv -> setValue($modx->resource->get('id'), 88);
$tv->save();

print_r($modx -> resource -> getTVValue(11));

Выводит сперва значение которое было, после перезагрузки страницы уже то что выставляю в скрипте.
Добряков Алексей
27 декабря 2012, 13:50
0
Мне нужно не проста тупо печать страницы, а прям что бы генерировалась новая страница по шаблону который я укажу и данные которые я отправлю, это печать сделанного заказа
Yan Alex
27 декабря 2012, 13:45
0
Тогда предлагаю добавить в форму вопроса поле «Волшебное слово» xD. Помочь сможешь? Пожаааалуйста )
Василий Наумкин
27 декабря 2012, 13:39
0
Быстро подорвался и на вапрос атветил, да?
Бевзенко Сергей
27 декабря 2012, 13:28
0
Хм. Установил чанки. И для менеджера и для пользователя один и тот же. Пользователю приходит сообщение. Менеджеру нет.
email менеджера указан во вкладке Склад?
Наговицын Павел
27 декабря 2012, 10:28
0
Мне они самому не нравятся, просто на данный момент хочу протестить работоспособность, все равно сайт буду переносить, а на джино несколько сайтов висит — вот его пока и юзаю.
Спасибо за совет
Yulia Udacheva
27 декабря 2012, 09:28
0
Удалите архивы пакетов из папки core/packages, мне на джино помогло. Тоже по глупости когда то там зарегистрировал домен. Интересно, что может понравиться в ТП джино, которая отвечает раз в месяц)
Василий Наумкин
27 декабря 2012, 07:32
0
Выглядит он очень старым, сложным и неповоротливым. Больше всего напоминает Quip.

У меня нет желания ставить и проверять.
Василий Краковецкий
27 декабря 2012, 07:31
0
Есть целая ссылка —
<a href="#" onclick="javascript:window.print();  return false;">Печать страницы</a>
или тоже самое кнопкой —
<input type="button" value="Печать" onclick="javascript:window.print()"></input>
главное не забудьте сделать файл со стилями для печати —
<link rel="stylesheet" type="text/css" href="print.css" media="print"/>