Николай Савин

Николай Савин

С нами с 01 января 1970; Место в рейтинге пользователей: #2
Николай Савин
16 мая 2021, 11:54
0
Вообще если честно судя по списку ваших вопросов я вам вряд ли смогу помочь подобными алгоритмами.
Больно уж много знать нужно о MODX
Николай Савин
16 мая 2021, 11:52
+1
Суть будет примерно такая.

1. Нужно создать таблицу в базе данных. Поля user_id — число, session_id — строка, product_id — число
2. Создать модель для этой таблицы, чтобы modx знал о ее существовании.
3. Создать класс управления таблицей. Основные методы add(), remove(), getList(), может быть getCount()
4. В каждом методе написать обращение к таблице и ее чтение, добавление записи, удаление записи.
5. При записи в таблицу если пользователь авторизован — записывать его Id как идентификатор, если нет — то записывать session_id
6. Подготовить js файл который по клику будет определять чего хочет пользователь и слать запрос на корневой адрес сайта
7. Подготовить плагин на событие OnHandleRequest который будет слушать обращения JS файла и вызывать класс компонента и соответствующий метод.
Николай Савин
16 мая 2021, 08:40
0
Это очень простая задача — и отлично подходит для практики написания собственного компонента.
Всего одна табличка в базе данных плюс взаимодействие с ней.
Если хочешь могу подсказать логику реализации.
Николай Савин
16 мая 2021, 08:33
0
Добрый день.
В минишоп нет такой возможности из коробки.
Данный вопрос уже всплывал недавно, он добавлен в список «Хотелок» и в «ближайшем» будущем будет реализован.
Пока что ваш вопрос можно решить следующим образом.
Согласно документации создать и подключить свой класс оформления заказа, устранив оттуда логику создания заказа. Честно говоря не проверял — нужно пробежаться по коду — но из за отсутствия юзера в заказе проблемы могут возникнуть в самых неожиданных местах. Например где-нибудь в таблице заказов.
Николай Савин
12 мая 2021, 13:44
0
У ajaxForm нет системных настроек. Стили и скрипты передаются как параметры сниппета.
Николай Савин
11 мая 2021, 11:44
+1
Близко к правде но есть нюансы. В вызове сниппета нужно создать переменную и с ней работать.
{var $clients = '!hookbackclient' | snippet}
			    		{foreach $clients as $user}
 								<tr class="title">
				    			<td class="table">{$user['name']}</td>
				    			<td class="table">{$user['surname']}</td>
				    			<td class="table">{$user['phone']}</td>
				    			<td class="table">{$user['email']}</td>
				    			<td class="table">{$user['recorders']}</td>
				    			<td class="table">{$user['paid']}</td>
				    		</tr>
							{/foreach}
А еще с данными массива можно работать через точку. Так чуть быстрее писать
<td class="table">{$user.paid}</td>
Николай Савин
11 мая 2021, 08:36
0
Правильнее всего сделать просто
return $users
А в шаблоне (или чанке) использовать шаблонизатор fenom и его метод foreach для вывода результатов.
Николай Савин
05 мая 2021, 07:27
0
И вообще у вас неверно сформулированное условие.
Вы проверяете не авторизацию пользователя, а его ID. То есть для других пользователей, даже если они авторизуются — ничего не изменится.
Николай Савин
05 мая 2021, 07:25
+1
Не нужно использовать такое. Эта дрянь никогда нормально не работала.
Пользуйтесь шаблонизатором fenom вообще, в том числе и для подобного. Материала на форуме для этого предостаточно.

Конкретно ваш вопрос решается вот так

{if '' | isloggedin : 'web'} 
    <li><a class="top_menu" href="{19 | url}">Личный кабинет</a></li>
{else}
    <li><a class="top_menu" href="{19 | url}">Вход</a></li>
    <li><a class="top_menu" href="{17 | url}">Регистрация</a></li>
{/if}
Николай Савин
29 апреля 2021, 09:16
+1
Еще проблема с изменением общей итоговой стоимости, при условии что мы меняет количество товаров или добавляем
Компонент же не про логику, а про дополнительные поля. К расчету стоимости он отношения не имеет.

вместо extjs windows накинуть treepanel или tabpanel.
Ну вас понесло. Как будет выглядеть интерфейс miniShop2, и используемый стек решает его владелец @Иван Бочкарев и команда разработчиков. Да и в целом не нужно в подобном компоненте подобную кашу возможностей разводить. Один компонент — одна решаемая задача. В данном случае удобное добавление дополнительных полей.
Вот работа с другими таблицами минишопа здесь была бы логичным продолжением. Можно добавлять поля в свойства товара, в производителя и т.д.
Николай Савин
28 апреля 2021, 08:41
0
Интересно, а скрипт ноды для генерации изображений все время активен на сервере или запускается по расписанию?
Там какой то потоковый сборщик запущен с нужным пайпом или чисто JS скрипт с библиотекой?
Николай Савин
27 апреля 2021, 15:11
0
Не, не обязательно. У многих платежек есть рекомендации слушать не только обращение к коннектору но и чекать IP. Все по делу написано.
Николай Савин
26 апреля 2021, 17:32
0
Добрый день. В нашей версии Paypal проверка по IP адресам не используется вообще
Николай Савин
26 апреля 2021, 12:27
0
Ну чтобы ошибки не было нужно написать вот так
$price = 0;
if($mod) {
$price = $mod->get('price');
}
У вас почему то запрос к модификации не происходит. Ошибки не будет, но и цену не получите.
Скорее всего неверно $option['modification_id'] написал.
Навскидку не помню как номер модификации в заказе хранится.
Распечатайте посмотрите — и скорректируйте этот момент.
Николай Савин
26 апреля 2021, 12:20
0
Возможно у вас в данном месте переменная $product не определена. Там должен быть объект товара из заказа.
Николай Савин
26 апреля 2021, 12:09
0
Примерно вот так
$mod = $modx->getObject('msopModification', array(
    'rid' => $product->product_id,
    'id' => $option['modification_id'],
));

$price = $mod->get('price')
Николай Савин
26 апреля 2021, 08:57
0
А я всю дорогу на css делал. Первые буквы легко феномом или сниппетом получить, а дальше вопрос оформления.