Андрей Шевяков

Андрей Шевяков

С нами с 28 сентября 2016; Место в рейтинге пользователей: #108
Андрей Шевяков
23 января 2024, 16:00
0
Такая же ошибка. Не ставится.

xPDOObject::fromJSON() -- Could not convert jsonSource to a PHP array.
Error saving vehicle object of class modCategory; criteria: Array ( [category] => )

Vehicle e5b51c56af929be4826b934652e51122 in transport msstatorders-2.1.0-pl failed to install and indicated the process should be aborted.
Невозможно установить пакет с подписью: msstatorders-2.1.0-pl
Андрей Шевяков
20 декабря 2023, 20:22
0
Кстати, в магазине modstore есть 2 дополнения, которые работают с google и отправляют данные средствами php.
А каких 2? Только это находил msEcommerce
Андрей Шевяков
20 декабря 2023, 17:14
0
На одном сайте при подключении пошли по такому пути:
В целом мы можем просто в нужных местах сайта добавлять такие вставки кода (это пример от Яндекса):

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

Пока еще не исправляли этот момент, но в теории данные должны отправляться в момент успешного оформления заказа, до перехода клиента на оплату. С вашим скриптом в таком случае видимо тоже не отработает скрипт. Вот если это как то сможете настроить, было бы супер!
Андрей Шевяков
25 октября 2023, 12:02
1
+1
На версии MODX 2.8.6 есть такой косяк. Решение тут modx.pro/news/24265
Андрей Шевяков
08 сентября 2023, 14:25
0
Можно ли решить такую задачу дополнением SendIt?

Есть форма. В ней клиент оставляет email и имя того кому должно уйти письмо.

Необходимо, чтобы письмо после отправки уходило на почты:
— Почта администратора сайта
— Почта того кто отправляет письмо name=«name»
— Почта того кого указали получателем письма в форме name=«recipient_name»

Форма:
<p>Хотите получить это изделие в подарок?</p>
<p>Мы намекнем другу, о чем вы мечтаете</p>
<form action="#" method="post">
    <input type="hidden" name="product" value="{$_modx->resource.id}">
	<div class="input-block">
		<input type="text" name="recipient_name">
		<span class="placeholder">Имя получателя</span>
	</div>
	<div class="input-block">
		<input type="text" name="recipient_email">
		<span class="placeholder">Email получателя</span>
	</div>
	<div class="input-block">
		<input type="text" name="name">
		<span class="placeholder">Ваше имя</span>
	</div>
	<div class="input-block">
		<input type="text" name="email">
		<span class="placeholder">Ваш email</span>
	</div>
	<button class="btn btn-dark" type="submit">Отправить</button>
</form>

Подскажите на что обратить внимание? Т.е. получается нам надо отправлять письма на почты которые заранее неизвестны, их заполняет клиент.
Андрей Шевяков
06 сентября 2023, 20:58
0
Да, вот мне именно это и надо:
если ты хочешь вывести текст и successMessage или validationErrorMessage, то пиши свой JS который обнулит сообщение в ответе сервера и выведет его где тебе нужно.
А может есть пример какой нибудь?
Андрей Шевяков
06 сентября 2023, 20:51
0
И еще такой вопрос. То что выводится в виде Notify iziToast можно ли выводить просто в коде в div, например перед формой?
Андрей Шевяков
06 сентября 2023, 20:44
0
Спасибо, сделал его из userNotExists.
Назвал userExists

Код:
<?php
if($modx->getCount('modUser', array('username' => $value))){
    $msg = $scriptProperties[$key.'.vTextUserExists'] ?: 'Такой пользователь уже зарегистрирован.';
    $validator->addError($key, $msg);
}
return true;

Все работает!
Андрей Шевяков
06 сентября 2023, 20:31
0
Добрый день!
Такой вопрос возник.
В личном кабинете есть форма изменения данных пользователя.

<form action="#" data-si-form="dataForm" data-si-preset="dataedit">
                                    <p class="personal-subheading">Основные данные</p>
                                    <p class="personal-heading-dop">Обязательно укажите дату рождения, мы сделаем вам приятный подарок.</p>
                                    <div class="input-blocks">   
                                    	<div class="input-block">
                                    		<input type="text" name="fullname" value="{$_modx->user.fullname}">
                                    		<span class="placeholder">ФИО</span>
                        		            <span class="input-block__error" data-si-error="fullname"></span>
                                    	</div>
                                    	<div class="input-block">					
                                    		<input type="tel" name="mobilephone" value="{$_modx->user.mobilephone}">	
                                    		<span class="placeholder"></span>
                        		            <span class="input-block__error" data-si-error="mobilephone"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks">
                                    	<div class="input-block">
                                    		<input type="email" name="email" value="{$_modx->user.email}">	
                                    		<span class="placeholder">Email</span>
                        		            <span class="input-block__error" data-si-error="email"></span>
                                    	</div>
                                        
                                    	<div class="input-block">					
                                    		<input type="date" name="dob" value="{$_modx->user.dob}">	
                                    		<span class="placeholder">Дата рождения</span>
                        		            <span class="input-block__error" data-si-error="dob"></span>
                                    	</div>
                                    </div>
                                    <div class="input-blocks input-block-w100">
                                    	<div class="input-block">
                                    		<button type="submit" class="btn btn-grey">Сохранить изменения</button>	
                                    	</div>
                                    </div>
                                </form>

Для нее используются такие настройки:
'dataedit' => [
        'hooks' => 'AjaxIdentification',
        'method' => 'update',
        'successMessage' => 'Данные успешно сохранены.',
        
        'clearFieldsOnSuccess' => 0,

        'validate' => 'fullname:required,mobilephone:required,email:email:required',
        'email.vTextRequired' => 'Укажите email.'
    ],

При таких настройках, можно в форме указать почту другого пользователя, который тоже есть в бд, и все сохранится. Как сделать, чтобы выдавал ошибку, что такой пользователь уже зарегистрирован и эту почту использовать нельзя?
Андрей Шевяков
14 августа 2023, 14:34
+1
[[!mFilter2?
	&element=`msProducts`
	&parents=`[[*id]]`
	&limit=`9`
	&depth=`0`
	&ajaxMode=`button`
	&tpl=`productTpl`
	&pageLimit=`3`
	&sortby=`{ "parent":"DESC", "menuindex":"DESC" }`
	&includeTVs=`productTitle,productHoverImage`

&filterOptions=`{
    "more": ".btn_more",
    "more_tpl": "<button class="btn_more objs-btn def-btn wired-btn">Показать еще</button>"
  }`
]]
Андрей Шевяков
09 августа 2023, 15:46
0
Я скинул немножко, попробовать самому хочется. Результат сюда скину.
Если не получится, то за больший донатик напишу тебе, за помощью))))
Андрей Шевяков
09 августа 2023, 15:42
0
Направление уловил. Спасибо. Пошел изобретать.
Донатик на развитие miniShop2 сейчас закину.
Андрей Шевяков
09 августа 2023, 15:29
0
Николай, направь пожалуйста на правильный путь, где может примеры есть? Или что-то подобное.
Хочется разобраться самому с такой задачей. Я понимаю что наверное тут с самого начала уже подход не верный у меня.
Андрей Шевяков
09 августа 2023, 14:38
0
Спасибо, попробую ваш скрипт.
msGiftCart с последним минишопом конфликтует, там никак не пофиксят.
Андрей Шевяков
01 августа 2023, 09:01
0
Скорее все проблема в кеше.
Андрей Шевяков
31 июля 2023, 12:38
+1
Ищите 2 файла:
assets/components/msstatorders/js/mgr/order/order.grid.js
assets/components/msstatorders/js/mgr/product/product.grid.js



И меняете можно заменой кода comment на order_comment. В обоих файлах будет в 3х местах.

Дальше хорошо вычистить кеш и все заработает.

Но при обновлении дополнения, все слетит.
Андрей Шевяков
29 июля 2023, 12:26
0
Там по ссылке для стандартного парсера можно так вызывать:
<link rel="stylesheet" href="[[!versions? &input=`assets/css/style.css`]]">
В таком варианте не надо записывать в системные настройки.
Андрей Шевяков
28 июля 2023, 11:26
3
+3
1) Создать плагин versions
<?php
switch($modx->event->name){
	case "pdoToolsOnFenomInit":
		$fenom->addModifier('versions', function($input){
			if(isset($input)) 
				return $input.'?v='.filemtime(MODX_BASE_PATH.$input);
		});		
		break;
}

2) Вешаем на событие pdoToolsOnFenomInit


3) Вызываем файлики так:
<link rel="stylesheet" href="{'/assets/templates/shop/styles/style.css' | versions}">
<script src="{'/assets/templates/shop/js/script.js' | versions}"></script>

У кого-то подсмотрел не помню точно. Но легко гуглится, сможете найти.
Пользуюсь много лет, ни разу не подвел.
Андрей Шевяков
08 июля 2023, 10:53
0
Добрый день! Хотел потестить компонент, он еще работает?