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

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

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
28 мая 2013, 16:16
0
Look at minishop2.com — everything is okay with comment.
I think it is because form not submitting trough ajax, but fields saving when changed.

Try to add needed fields manually by plugin on event msOnSubmitOrder:
<?php
switch($modx->event->name) {
	case 'msOnSubmitOrder':
		$order->add('comment', 'bla-bla-bla');
	break;
}
Василий Наумкин
28 мая 2013, 16:03
0
Не встречал такого ни разу.
Василий Наумкин
28 мая 2013, 11:17
0
Значит, ошибка где-то еще. Ты обратил внимание, что это preg_replace, а не str_replace, как у тебя в названии темы?

Вот онлайн проверка выражения, как видишь — ссылка твоя в него попадает.
Василий Наумкин
28 мая 2013, 11:09
0
$text = preg_replace('/<a\s(.*?)\/a>/i', '', $text);
Василий Наумкин
28 мая 2013, 10:08
0
Поди обновляешь не через процессор и кэш ресурса не чистишь?
Василий Наумкин
28 мая 2013, 07:01
0
Это у меня ошибка, поправил. Хотя ты тоже присваивал number вместо num =)

В любом случае, такое простое изменение нумерации не прокатит, потому что она собьется в БД. Тебе нужно сделать как тут, только изменить метод getnum().

Видишь, в моём методе нумерация завязана на символ "/", убирать его нельзя. Поэтому, если хочешь от него избавиться нужно изменить алгоритм присвоения номеров, без всяких плагинов.
Василий Наумкин
28 мая 2013, 06:57
0
Как ты себе это представляешь? Список связанных товаров, что ли, отключать\включать?

В любом случае, есть возможность выводить всё, что угодно, через произвольный сниппет.
Василий Наумкин
27 мая 2013, 21:30
0
Right placeholders is [[+address.comment]] but in yoour case, i think, it is empty.

Why it field is hidden? If you are hiding it from user and want to write a default parameter, you need to do change it:
<input type="hidden" id="comment" name="comment" value="No Sales Agent" />

By the way, you must see this comment in manager, when viewing the order. It will be at the bottom of address tab.
Василий Наумкин
27 мая 2013, 18:13
0
You are welcome!
Василий Наумкин
27 мая 2013, 16:09
0
I can`t explain it on english, it is too complicate.

But i have a idea. You can disable email notification to buyer on status «new» and notice about it will receive only site manager.

Then he check all what he need and switch status to «Verified» — and on save of order will be sent email to buyer.


On each status you can set separate chunks for admin and manager.
I think — this a decision.
Василий Наумкин
27 мая 2013, 15:57
0
Если обрывается по timeout — смотреть надо в логах сервера.

Предварительно можно еще в php.ini включить отображение всех ошибок.
error_reporting = -1
display_errors = 1
Василий Наумкин
27 мая 2013, 06:49
0
Почему нельзя? Я же написал — как.

Плагины это стандартная функция MODX, как и ТВ параметры, там нет ничего страшного. Осваивай.
Василий Наумкин
27 мая 2013, 06:45
0
Для регистрации скриптов на фронтенд из php есть специальные функции regClientScript и regClientStartupScript.

Твоя задача решается так:
$modx->regClientStartupScript('
	<script type="text/javascript">
		var sessionId = "'.$session.'";
	</script>
', true);

После загрузки страницы ты увидишь это в ее исходном коде, только вместо $session будет реальное значение.
Василий Наумкин
27 мая 2013, 06:37
2
0
Оттого, что vendor в таблице msProductData — это и есть число.

Если хочешь выводить имена производителей — есть 2 способа.
Первый, побыстрее: нужно создать дополнительное поле (или ТВ параметр) и сохранять туда плагином это имя. Ну а потом фильтровать по этому полю.

Второй, погибче: выбирать и выдавать данные собственным сниппетом. Его нужно указать параметру через двоеточие, вот так:
&includeMSList=`vendor:extra_filter_vendor`

Вот кож сниппет extra_filter_vendor, для вывода производителей товаров:
$ids = $scriptProperties['ids'];
$param = $scriptProperties['param'];
if (empty($ids) || empty($param)) {return false;}

$q = $modx->newQuery('msVendor');
$q->leftJoin('msProductData', 'Data', 'Data.vendor = msVendor.id');
$q->select('Data.id,msVendor.name');
$q->where(array('Data.id:IN' => $ids));

if ($q->prepare() && $q->stmt->execute()) {
	$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
	$arr = array(
		'name' => 'Производитель'
		,'type' => 'text'
		,'values' => array()
	);
	foreach ($res as $v) {
		$arr['values'][$v['name']][] = $v['id'];
	}
	return json_encode($arr);
}

Таким образом можно выдать любую информацию в фильтр.
Василий Наумкин
27 мая 2013, 06:29
0
Василий не единственный программист в СНГ.

Может, и прикрутим когда-то что-то подобное, но только после более важных вещей, типа личного кабинета и системы скидок.
Василий Наумкин
27 мая 2013, 06:12
0
There is a lot of placeholders, so we need to use prefixes:
[[+user.*]] - modUserProfile fileds. For example [[+user.fullname]]
[[+address.*]] - msOrderAddress fields, filled when order. For example, [[+address.city]]
[[+delivery.*]] - msDelivery fields. For example, [[+delivery.name]]
[[+payment.*]] - msPayment fields. For example [[+payment.name]]

And of course, msOrder placeholders, without prefix: [[+id]], [[+num]], [[+weight]],
[[+cart_count]] and so on.

You can see all fields of objects in scheme of component. Here is visualizer.
Василий Наумкин
27 мая 2013, 05:59
0
Email will be sent to the buyer email.

If you want to change this — you need to overload function changeOrderStatus() in your order class. See annoucement of MS 2.0.1.
Василий Наумкин
26 мая 2013, 18:05
0
Плагином на событие msOnBeforeCreateOrder.

В переменной $order будет объект msOrder, меняй ему номер как хочешь.