Максим

Максим

С нами с 03 июля 2015; Место в рейтинге пользователей: #277
Максим
03 сентября 2021, 10:33
0
Хочу в модальном окне подгружать информацию о товаре. На самой странице нет ни одного вызова сниппета от miniShop2. Если вызывать модальное окно с чанком, в котором вызывается любой из сниппетов от miniShop2, тогда скрипты от miniShop2 НЕ подключаются в чанке (даже если указать и как в инструкции написано). Если указать в параметре services значение minishop2, тогда скрипт подгружается. Но!!! Он подгружается не в модальном окне, а сразу на странице! А раз он подгружается сразу, значит это автоматом замедляет загрузку и отрисовку страницы! Зачем это надо? (вопрос риторический) может человек ниразу не зайдет в модалку.

Так вот вопрос такой — почему скрипты от сниппетов minishop2 не подключаются в модалку?

Другие скрипты (из своих сниппетов), подключаются. Искал в настройках, в коде компонента, так и не нашел где это всё дело «вырезается» и по какой логике…
Максим
22 августа 2021, 10:44
0
У меня просто пример, не проверял. В примере многоточие стоят. Это означает, что там другой код должен быть. А именно — проверка на массив и т.п.
Может быть даже лучше в отдельный сниппет вынести.
{set $data = [
    'Фрезеровка' => 2,
    'Гравировка' => 123
]}
{foreach $options as $option}
    {if $option.value is array}
        {foreach $option.value as $key => $value}
            {if in_array($value, $data)}
                {set $option.value[$key]}
                    <a href="{$data[$value]|url}">{$value}</a>
                {/set}
        {/foreach}
        {$option.value | join: ', '}
    {/if}
    ...
{/foreach}
(не проверял)
Максим
20 августа 2021, 17:12
0
Ну тогда как было написано выше. Только не по id, а прям по названию проверять. Примерно как-то так.
{set $data = [
    'Фрезеровка' => 2,
    'Гравировка' => 123
]}
{foreach $options as $option}
    ...
    {if in_array($option.value, $data)}
        <a href="{$data[$option.value]|url}">{$option.value}</a>
    {else}
        {$option.value}
    {/if}
    ...
{/foreach}
Максим
18 августа 2021, 20:32
0
Сессии modx хранит в базе… поэтому тут всё равно будет БД и куча записей (как я понимаю).
Максим
18 августа 2021, 20:19
0
в первой версии нужно изменять параметр ms2_order_handler_class
А в этой версии он сам изменяет?))) Или какой-то обходной путь найден?)))
Максим
18 августа 2021, 14:45
0
Нужен конкретный пример. Какая конкретно опция (цвет, вес или еще что-то), как она забивается (тип какой: текст, число и т.п.), на какой ресурс должна вести, вообще логика работы в целом (т.е. что хочешь получить) и т.д.
А так, если честно, не особо понятно…
Максим
18 августа 2021, 13:31
0
Разобрался, дело в кавычках…
Максим
10 августа 2021, 19:54
0
Ошибку нашел. Файл:
core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php

Строка 98.
$path = $this->modx->getOption('base_path') . $container . $file['name'];

$container уже содержит base_path.
Плюс, между $container и $file['name'] должен быть разделитель /.

После исправления, всё заработало. В личном кабинете TinyPNG появилась информация о количестве сжатых файлов.
Максим
09 августа 2021, 20:21
0
Не работает компонент почему-то с minishop2.
Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея».
«До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%).
В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки)
Оригинал картинки был около 700 кб (т.е. меньше 5 мб).
Максим
11 декабря 2020, 10:53
+2
Круто! Спасибо! Особенно за это:
— Улучшение. Добавлено поле для указания суммы, после которой доставка будет бесплатной.
Теперь нет необходимости расширять класс для самой простой бесплатной доставки [PR #490]
Вообще я бы еще пересмотрел логику работы метода getCost в msOrderHandler.
При разработке своего класса-обработчика способа доставки иногда возникали проблемы. Мне кажется этот метод как-то сложно и не совсем логично устроен.

Мне кажется данный метод должен четко возвращать только общую стоимость заказа. Без всяких параметров $with_cart. Разве может быть стоимость заказа без стоимости корзины?
Либо, если передан true, возвращать массив данных, из которых складывается эта общая стоимость: стоимость корзины, стоимость доставки, стоимость оплаты (т.е. то что возвращает $payment->getCost).

В $delivery->getCost() должна передаваться исключительно только стоимость корзины.

В $payment->getCost() должна передаваться стоимость корзины + стоимость доставки.

Понимаю, придется все старые дополнения переписывать…
Максим
07 октября 2020, 14:16
0
Компонент позволяет отправку email-уведомлений при начислении бонусов?
Если нет, то может кто-то подскажет как сделать такие уведомления.
Например после оплаты пользователю приходит письмо с текстом: «Недавно вы совершили покупку в нашем магазине и теперь вам доступны Х бонусов. Их можно потратить в течении Х дней».
Когда остается Х дней до сгорания бонусов, тоже хорошо бы отправлять какое-нибудь письмо…
Максим
25 августа 2020, 12:33
0
Опять же если я правильно понимаю всю суть задачи, то можно вот так.

Базовый шаблон:
{block 'config'}
	{set $config = [
		'phone' = '99999999'
	]}
{/block}

<!DOCTYPE html>
<html lang="{$_modx->config.cultureKey}">
	<head>
	    {insert 'file:chunks/base_meta.tpl'}
	</head>
	<body>
	    <div class="wrapper">
	    	{block 'header'}
			{insert 'file:chunks/base_header.tpl'}
		{/block}
		{block 'body'}
			{block 'content'}{/block}
		{/block}
		{block 'footer'}
	         	{insert 'file:chunks/base_footer.tpl'}
        	{/block}
	    </div>
	    {insert 'file:chunks/base_scripts.tpl'}
	</body>
</html>

Шаблон каталога/товара:
{extends 'template:Базовый шаблон'}

{block 'config'}
    {set $config['phone'] = '111111111'}
{/block}

{block 'body'}
    <section id="category-grid">
        <div class="container">
            {parent}
            {insert 'file:chunks/base_category_sidebar.tpl'}
        </div>
    </section>  
{/block}

А в шапке (base_header.tpl) вставить в нужное место {$config.phone}
Максим
25 августа 2020, 12:09
0
Так всегда. С твоей стороны кажется все понятно. А с моей не совсем, я нюансов многих не знаю.
На картинке не понятно какой из ресурсов является отдельным отделом, для которых нужен отдельный телефон.
Судя по коду вообще все ресурсы, которые на картинке должны иметь один и тот же телефон, а остальные другой.
Максим
24 августа 2020, 18:39
0
Вопрос: а в каких случаях будет выводиться 1111111111111?
Если правильно понял этот код, тогда везде выводится 1111111111111, кроме каталога и товаров внутри.
Так? Тогда в в шаблоне каталога и товара написать нужный номер и всё.
В Феном есть наследование шаблонов.
Максим
24 августа 2020, 18:36
0
Не совсем понятна структура ресурсов.
Контексты — это что? Это просто разные языки (т.е. в контекстах товары дублируются, но на разных языках)?
Или контексты — это разные отделы, о которых идет речь (разные телефоны)?
Или каждая категория — это разный отдел?
Или как?

Если структура такая:
Общий каталог
- каталог для 1-го отдела
-- товар
-- товар
- каталог для 2-го отдела
-- товар
-- товар
Тогда можно сделать ТВ у каталога и в шаблоне написать просто:
{$_modx->resource.parent|resource:'tv_phone'}
Максим
04 августа 2020, 14:47
0
На том сайте минишопа нет.
Но надо посмотреть как там реализовано, спасибо.
Максим
04 августа 2020, 10:50
0
Смотрел. Какие-то пробовал параметры и методы. Но не помогло ничего. Возможно не те параметры пробовал, возможно не так использовал. Поэтому прошу помочь.
Максим
04 августа 2020, 08:48
0
да, галочка там есть.
Но проблема в том, что this.gertValue() возвращает старое значение, а this.getRawValue() возвращает пустую строку, т.е. по сути верное значение.
Видимо после каких-то преобразований (валидаций) ExtJS возвращается к старому значению. Но как поменять поведение я не знаю, не особо силен в JS и в ExtJS.
Максим
03 августа 2020, 10:58
0
Если правильно понял суть, то…
В оригинальном чанке в этой форме есть кнопка «обновить». Если её вставить и скрыть, то должно изменяться автоматически количество и стоимость.
Максим
16 июля 2020, 12:53
0
Да, только что столкнулся с этим! Такая же проблема была с компонентом hideSource.
При включенном плагине msGallerySearch не отрабатывает событие pdoToolsOnFenomInit