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

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

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
29 сентября 2015, 10:34
+1
Это первый подобный вопрос на моей памяти за всё время работы с miniShop2 и магазинами, что как бы намекает на масштабы «проблемы».

Есть письмо о заказе, есть (должен быть) личный кабинет с заказами. К тому же ты, как программист, можешь расшить системные классы и изменить всю логику оформления заказа — это описано в документации.

Но на мой взгляд, с логикой всё в порядке — юзер должен или оплатить заказ или отказаться от оплаты, для этого его и отправили на платёжный сервис.
Если он такой продвинутый, что умеет пользоваться кнопками браузера, наверное должен и понимать что они делают.

ходить на оплату не с адреса /order.html, а с адреса order.html?msorder=123
И почему при заходе на order.html?msorder=123 в одном случае должен быть редирект на платёжный сервис, а в другом — вывод заказа?

Или не очищать сессию
Чтобы юзер смог наделать еще 10 одинаковых заказов. Он же не соображает, что происходит — из платежного сервиса ушел, а заказ всё еще не оформлен, корзина забита товарами.

В общем, попробуй решить этот свой вопрос самостоятельно, и показать что получится. Тем более, что тебе эту работу заказчик оплачивает, у которого вопросы возникают.
Василий Наумкин
29 сентября 2015, 09:58
0
Сочувствую.

mSearch давно не поддерживается.
Василий Наумкин
29 сентября 2015, 03:25
0
И что здесь неправильного?

Юзер ушел на платежную систему, не подтвердил там ничего, не отменил, а вернулся на сайт, где у него уже оформлен заказ и очищена сессия.

Как сайт должен понять, что юзер вернулся с платёжной системы, если он ничего там не сделал и не вернулся по ссылке? Он просто открыл снова страницу с корзиной, которая уже пуста.

Минус от меня.
Василий Наумкин
29 сентября 2015, 03:22
1
+1
Вообще, для таких дел оформление комментариев ветками в Tickets не очень подходит, но плоский режим я так пока и не доделал.

Можно попробовать сделать такой сниппет-обёртку getAuthorComments:
<?php
if ($modx->user->id != $modx->resource->createdby && !$modx->user->isMember('Administrator')) {
	$scriptProperties['where'] = $modx->toJSON(array(
		'createdby:IN' => array($modx->user->id, $modx->resource->createdby),
	));
}

return $modx->runSnippet('TicketComments', $scriptProperties);

И вызывать его вместо TicketComments, где нужно:
[[!getAuthorComments?
	&showLog=`1`
]]
Василий Наумкин
29 сентября 2015, 03:06
+2
{$_modx->runSnippet('!pdoMenu@PropertySet', [
	'parents' => 2,
	'showLog' => 0,
	'includeTVs' => 'svg-icon',
	'level' => 1,
	'tplOuter' => '@INLINE <ul{$classes} id="side-menu">{$wrapper}</ul>',
	'tpl' => '@INLINE 
		<li{$classes}>
			<a href="{$link}" {$attributes}>
				<div class="row">
					<div class="col-md-3">{$_modx->getChunk($_modx->resource[\'svg-icon\'])}</div>
					<div class="col-md-9">{$menutitle}</div>
				</div>
			</a>
		</li>',
	'outerClass' => 'nav'
])}
Если вдруг что-то в INLINE чанке не будет работать, можно попробовать вынести в обычный чанк. Но у меня на тесте всё ок.

2. В чанке tpl.msProduct.content идёт работа со свойствами товара, которые выставляются в плейсхолдеры. Поэтому в MODX их можно получать через [[+имя]], а в Fenom нужно указывать ресурс, а не брать не пойми откуда переменные:
{if $_modx->resource.old_price > 0}
	<span class="old_price">{$_modx->resource.old_price} {$_modx->lexicon('ms2_frontend_currency')}</span>
{/if}

Недавно закончил один магазин, целиком построенный на Fenom. Всё получилось, но есть мнение, что пора писать новый обучающий курс про это.
Василий Наумкин
28 сентября 2015, 19:25
+2
У меня сильное подозрение, что ignore вообще не работает, а только в планах.

Так что да, пробелами.
Василий Наумкин
28 сентября 2015, 15:21
+1
Должно работать вот так:
[[!pdoResources? 
	&parents=`0` 
	&resources=`[[pdoResources?limit=`10`&returnIds=`1`]]`
	&limit=`1` 
	&sortby=`RAND()` 
	&includeContent=`1` 
]]
Василий Наумкин
28 сентября 2015, 12:19
0
Почитай документацию

Чтобы убрать всё можно сделать просто вот так:
pdoPage.callbacks['before'] = function(config) {};
pdoPage.callbacks['after'] = function(config) {};
Василий Наумкин
28 сентября 2015, 11:45
0
Это нормальное поведение.

Обычным людям неудобно читать новую страницу снизу вверх, поэтому скрипт её прокручивает в начало элемента.
Василий Наумкин
27 сентября 2015, 06:07
1
+9
Искренне печалит, что нет (и я так понимаю, не планируется) вообще никакой документации.
Василий Наумкин
26 сентября 2015, 21:23
+1
Это функционал есть в CSS.
Василий Наумкин
25 сентября 2015, 16:08
+2
При выводе ТВшек прям на странице, без сниппетов pdoTools не делается их подготовка и подстановка путей.

Наверное, нужно исправить, если не забуду.
Василий Наумкин
25 сентября 2015, 07:19
+4
Добавил некоторые ограничения на работу скриптов в консоли и выполнение запросов MySQL.

Скорее всего, никто их не заметит но подвесить сервер по ошибке уже не получится.
Василий Наумкин
24 сентября 2015, 19:35
+1
Если Василий примет PR
Не примет. Вопрос с дальнейшим развитием MS2 по-прежнему висит в воздухе.

Можешь попробовать отправить PR в репозиторий новых версий.
Василий Наумкин
24 сентября 2015, 14:56
0
Монтировал триальным Sony Vegas. а чем снимал — не помню.
Василий Наумкин
24 сентября 2015, 13:53
0
То, что написано по ссылке — не понятно?

Никаких секретов нет, всё сделано как там.
Василий Наумкин
24 сентября 2015, 01:20
0
Всё немного сложнее. Тег p должен оборачивать текст, то есть
<p>
текст
</p>
так что простой замены здесь не получится.

Но менять на br или сразу писать p в тексте — без проблем.