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

Андрей Шевяков
19 марта 2024, 13:55
+1
Разобрался, благодаря вам!
Эти данные надо вынимать из msOrderAddress, а не из msOrder.

Получается надо сделать так:

1) Добавляем выборку поля Address.properties



2) Добавляем рендер



<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Address.properties'])) {
    $properties = json_decode($row['Address.properties'], true);
    $utm = $properties['utm_campaign'] ?: '';
}

return $utm;

3) Добавляем поле



Теперь выводится поле utm_campaign в заказах. Изначально я пытался вывести utm_source, оно делается аналогично.

Еще раз убедился на практике в большом потенциале дополнения msStatOrders. Благодарю автора!
Володя
19 марта 2024, 12:31
+1
<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Order.properties'])) {
    $properties = json_decode($row['Order.properties'], true);
    $utm = $properties['utm_source'] ?? ''; // тут берете нужное поле из массива properties
}

return $utm;
Сергей
19 марта 2024, 10:55
0
Не догадался перевести в пуникод. Теперь всё работает, спасибо!
Андрей Шевяков
19 марта 2024, 10:34
0
Не заработало, выводит "{" и ошибки в логах вида:
PHP warning: Illegal string offset 'utm_source'
Скрин

Рендер
<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Order.properties'])) {
    $utm = $row['Order.properties']['utm_source']; // тут берете нужное поле из массива properties
}

return $utm;

В ТП к сожалению не могу написать, прошло больше года после покупки дополнения.
Володя
19 марта 2024, 07:14
+1
Доброе утро.

Добавьте выборку поля Order.properties



добавьте рендер



<?php
/** @var modX $modx */
/** @var array $row */
$utm= '';

if (!empty($row['Order.properties'])) {
    $utm = $row['Order.properties']['utm']; // тут берете нужное поле из массива properties
}

return $utm;

добавьте поле



Должно работать, если не получится — пишите в ТП.
Андрей Шевяков
18 марта 2024, 21:25
0
Добрый день!
На сайте используем дополнение utmMark, оно пишет данные utm меток в формате json в поле properties заказа.

Помогите пожалуйста, как вывести поле properties в читаемом виде?

По умолчанию выводит [object Object]
Сергей Сергеевич
18 марта 2024, 20:36
0
А в чем именно вам помогло данное расширение? Как применяли? У меня сложилось впечатление, что проект анонсировали и он не завелся… И не понятно, платный он или нет.
Leo
Leo
18 марта 2024, 13:22
0
Спасибо! easyRedirects тоже хорошо справляется с перенаправлением, только прописывать урлы нужно вручную
Володя
18 марта 2024, 09:13
+1
В итоге проблемы с сохранением вызывал плагин autoredirector
modx.pro/help/24408#comment-141539
Leo
Leo
18 марта 2024, 00:18
0
Обновился до MODX 2.8.6 и наступили проблемы с сохранением родителя с вложенными ресурсами, без вложений сохраняет ок. Когда включаешь php 7.4 все сохраняет. В итоге проблемы с сохранением вызывал плагин autoredirector — после удаления плагина сохранение заработало. Есть проблемы с работой msGallery если попытаться обновить превьюхи под php 7.4 — идет бесконечная загрузка, с php 8 и выше все ок.
VLadimir
17 марта 2024, 22:12
0
АВТОРУ ОГРОМНЫЙ РЕСПЕКТ! сэкономил мне часы жизни на некоторые проекты =)
Ivan K.
17 марта 2024, 18:40
0
Сегодня тоже настраивал поиск по артикулу.
Нужно было указать: Добавлять все слова в индекс mse2_index_all — да (в настройках)
Нажать обновить индекс.

При отладке помогает, посмотреть, что в базе в таблице mse2_words.
У меня в начале не попадал артикул в индекс и по этому не искалось при &onlyIndex=`true`
Роман
17 марта 2024, 16:10
0
ID у форм разные, а вот у блоков да. Разрулил их разными классами, тоже вариант. Просто я на другое смотрел. Спасибо
Константин Ильин
17 марта 2024, 14:45
+1
База верстки. На одно странице не должно быть 2 или более элемента с одинаковым id.
У вас получается #form-fields и #form-thanks 2е штуки т.к. две формы. Надо перейти на классы и работать с конкретной формой, а не глобально.

<form action="[[~[[*id]]]]" method="post" id="callbackform" class="ajax_form">
			<div class="form-fields">
				<input type="text" id="fr_name" name="name" value="[[+fi.name]]">
				<input type="text" id="fr_phone" name="phone" class="m-phones" value="[[+fi.phone]]" required="">
				<input type="submit" class="btn" data-default="Заказать звонок" value="Заказать звонок">
			</div>
			<div class="form-thanks" style="display: none;">
				<span class="title">Спасибо за ваше обращение!</span>
				<p>Мы свяжемся с Вами в ближайшее время.</p>
			</div>
		</form>

js вроде так, с jquery давно не работал
if (form.attr('id') == 'callbackform') {
    $(form).find(".form-fields").fadeOut();
    $(form).find(".form-thanks").fadeIn();
}
Дмитрий
17 марта 2024, 14:39
0
У меня такого параметра в /assets/components/msearch2/js/web/default.js нет, где вы его нашли?
Роман
17 марта 2024, 11:07
0
Всем привет. Подскажите, как обойти?

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

Но т.к. на странице две формы срабатывает код у первой по коду на самой странице

[[!AjaxForm? 
	&snippet=`FormIt` 
	&emailTpl=`tplMail`
	&hooks=`email`
	&validate=`phone:required, fastname:blank`
	&frontend_css=``
	&emailSubject=`Обратная связь с сайта [[++site_name]]`
	&emailFromName=`[[++site_name]]`
	&emailTo=`{1 | resource: 'tplMail'}`
	&emailFrom=`[[++emailsender]]`
	&validationErrorMessage=`Пожалуйста, исправьте ошибки!`
	&successMessage=`Ваше сообщение успешно отправлено`
	&form=`@CODE:
		<form action="[[~[[*id]]]]" method="post" id="callbackform" class="ajax_form">
			<div id="form-fields">
				<input type="text" id="fr_name" name="name" value="[[+fi.name]]">
				<input type="text" id="fr_phone" name="phone" class="m-phones" value="[[+fi.phone]]" required="">
				<input type="submit" class="btn" data-default="Заказать звонок" value="Заказать звонок">
			</div>
			<div id="form-thanks" style="display: none;">
				<span class="title">Спасибо за ваше обращение!</span>
				<p>Мы свяжемся с Вами в ближайшее время.</p>
			</div>
		</form>
	` 
]]

// в второй формы 
<form action="[[~[[*id]]]]" method="post" id="consultationform" class="ajax_form">

// сам JS, пытался разбить на ID формы, но не срабатывает
<script>
$(document).ready(function() {
    AjaxForm.Message.success = function() {};
});
$(document).on('af_complete', function(event, response) {
  var form = response.form;
  if (form.attr('id') == 'callbackform') {
		$("#form-fields").fadeOut();
		$("#form-thanks").fadeIn();
		e.preventDefault();
  }
  if (form.attr('id') == 'consultationform') {
		$("#form-fields").fadeOut();
		$("#form-thanks").fadeIn();
		e.preventDefault();
  }
});
</script>
Prihod
17 марта 2024, 02:29
0
все должно обновиться, может поле не так называется выведи все поля
print_r($productData->toArray());
Станислав
16 марта 2024, 22:29
0
$productData = $modx->getObject('msProductData',$product_id);
$productData->set('my_var','my_val');
$productData->save();

Пробую таким образом обновить данные, в своем скрипте, но ничего не обновляется
Алексей Смирнов
16 марта 2024, 22:16
0
нужно верно передавать параметры и возможно заработает корректно.
НО. что мешает вам в одном плагине через необходимые условия разрулить применение кода в событиях?
Тем более раз вы выбрали это событие, то вы хотите просто цену отображения же менять? так? или цену добавления в корзину? потому что если последнее, то нужно другое событие.
epic
16 марта 2024, 11:02
0
твой вариант пробовал и так и так не помогло.
вдруг кому поможет сработал такой:
{foreach $options as $option}
    {if '' in $option.value}
    
    {else}
        <li>
            <label ><span>{$option.caption}:</span></label>
            <p>
                {if $option.value is array}
                    {$option.value | join : ', '}
                {else}
                    {$option.value}
                {/if}
                {$option.measure_unit}
            </p>
        </li>
    {/if}
{/foreach}