22 сентября 2021, 13:30 Недавно ковырялся в скриптах минишопа, заметил, что нет callback-функции для miniShop2.Cart.status(). А ведь могло бы пригодиться (например, с той же мини-корзиной какие-то действия производить, добавлять классы или что-то еще). И вообще, в чем преимущества этих callback? Почему бы не сделать через события? Например, написать (можно на чистом JS): $(document).trigger('beforeAddToCart', options)А там кому надо, тот напишет $(document).on('beforeAddToCart', function(event, options){});Как минимум короче код и привычнее. Новые дополнения и их версии / miniShop 2.9.1-pl 57 +2 1
09 сентября 2021, 13:00 Напоминает MIGX, только более продвинутый. Для разработчиков / PageBlocks - первое использование. Кейсы. Свой сниппет вывода. 8 0
03 сентября 2021, 13:04 Мне иногда помогает жестка перезагрузка страницы. Открываем инструменты разработчика (клавиша F12), потом жмем CTRL+F5 (если firefox) или право кнопкой мыши по значку «обновить» и потом «очистить кэш и жесткая перезагрузка» (если chrome). Пару раз так сделать. Потом сохранить попробовать (для начала без ввода изменений). Еще было такое из-за какого-то ТВ поля. Отключал его — норм работало. Вопросы / висит админка сайта при сохранении 6 0
03 сентября 2021, 12:46 *(даже если указать <head> и <body> как в инструкции написано) Новые дополнения и их версии / [QuickView] - быстрый просмотр в модальном окне. 81 0
03 сентября 2021, 10:33 Хочу в модальном окне подгружать информацию о товаре. На самой странице нет ни одного вызова сниппета от miniShop2. Если вызывать модальное окно с чанком, в котором вызывается любой из сниппетов от miniShop2, тогда скрипты от miniShop2 НЕ подключаются в чанке (даже если указать и как в инструкции написано). Если указать в параметре services значение minishop2, тогда скрипт подгружается. Но!!! Он подгружается не в модальном окне, а сразу на странице! А раз он подгружается сразу, значит это автоматом замедляет загрузку и отрисовку страницы! Зачем это надо? (вопрос риторический) может человек ниразу не зайдет в модалку. Так вот вопрос такой — почему скрипты от сниппетов minishop2 не подключаются в модалку? Другие скрипты (из своих сниппетов), подключаются. Искал в настройках, в коде компонента, так и не нашел где это всё дело «вырезается» и по какой логике… Новые дополнения и их версии / [QuickView] - быстрый просмотр в модальном окне. 81 0
22 августа 2021, 10:44 У меня просто пример, не проверял. В примере многоточие стоят. Это означает, что там другой код должен быть. А именно — проверка на массив и т.п. Может быть даже лучше в отдельный сниппет вынести. {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}(не проверял) Вопросы / msProductOptions вывод характеристик в виде ссылок на ресурсы Вопрос. 8 0
20 августа 2021, 17:12 Ну тогда как было написано выше. Только не по 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} Вопросы / msProductOptions вывод характеристик в виде ссылок на ресурсы Вопрос. 8 0
18 августа 2021, 20:32 Сессии modx хранит в базе… поэтому тут всё равно будет БД и куча записей (как я понимаю). Для разработчиков / Почему AjaxForm использует сессии? 23 0
18 августа 2021, 20:19 в первой версии нужно изменять параметр ms2_order_handler_classА в этой версии он сам изменяет?))) Или какой-то обходной путь найден?))) Новые дополнения и их версии / Новый универсальный модуль расчёта доставки сразу для 13 служб доставки 32 0
18 августа 2021, 14:45 Нужен конкретный пример. Какая конкретно опция (цвет, вес или еще что-то), как она забивается (тип какой: текст, число и т.п.), на какой ресурс должна вести, вообще логика работы в целом (т.е. что хочешь получить) и т.д. А так, если честно, не особо понятно… Вопросы / msProductOptions вывод характеристик в виде ссылок на ресурсы Вопрос. 8 0
18 августа 2021, 13:31 Разобрался, дело в кавычках… Вопросы / [pdoMenu] Не работает Fenom в tplStart 1 0
10 августа 2021, 19:54 Ошибку нашел. Файл: 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 появилась информация о количестве сжатых файлов. Новые дополнения и их версии / [tinyCompressor] Автоматическая оптимизация и сжатие файлов 79 0
09 августа 2021, 20:21 Не работает компонент почему-то с minishop2. Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея». «До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%). В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки) Оригинал картинки был около 700 кб (т.е. меньше 5 мб). Новые дополнения и их версии / [tinyCompressor] Автоматическая оптимизация и сжатие файлов 79 0
11 декабря 2020, 10:53 Круто! Спасибо! Особенно за это: — Улучшение. Добавлено поле для указания суммы, после которой доставка будет бесплатной. Теперь нет необходимости расширять класс для самой простой бесплатной доставки [PR #490]Вообще я бы еще пересмотрел логику работы метода getCost в msOrderHandler. При разработке своего класса-обработчика способа доставки иногда возникали проблемы. Мне кажется этот метод как-то сложно и не совсем логично устроен. Мне кажется данный метод должен четко возвращать только общую стоимость заказа. Без всяких параметров $with_cart. Разве может быть стоимость заказа без стоимости корзины? Либо, если передан true, возвращать массив данных, из которых складывается эта общая стоимость: стоимость корзины, стоимость доставки, стоимость оплаты (т.е. то что возвращает $payment->getCost). В $delivery->getCost() должна передаваться исключительно только стоимость корзины. В $payment->getCost() должна передаваться стоимость корзины + стоимость доставки. Понимаю, придется все старые дополнения переписывать… Новые дополнения и их версии / Релиз miniShop2 ver. 2.7.0 112 +2
07 октября 2020, 14:16 Компонент позволяет отправку email-уведомлений при начислении бонусов? Если нет, то может кто-то подскажет как сделать такие уведомления. Например после оплаты пользователю приходит письмо с текстом: «Недавно вы совершили покупку в нашем магазине и теперь вам доступны Х бонусов. Их можно потратить в течении Х дней». Когда остается Х дней до сгорания бонусов, тоже хорошо бы отправлять какое-нибудь письмо… Новые дополнения и их версии / [msBonus2] Бонусная система для miniShop2 54 0
25 августа 2020, 12:33 Опять же если я правильно понимаю всю суть задачи, то можно вот так. Базовый шаблон: {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} Вопросы / Помогите сократить запись на феном. 18 0
25 августа 2020, 12:09 Так всегда. С твоей стороны кажется все понятно. А с моей не совсем, я нюансов многих не знаю. На картинке не понятно какой из ресурсов является отдельным отделом, для которых нужен отдельный телефон. Судя по коду вообще все ресурсы, которые на картинке должны иметь один и тот же телефон, а остальные другой. Вопросы / Помогите сократить запись на феном. 18 0
24 августа 2020, 18:39 Вопрос: а в каких случаях будет выводиться 1111111111111? Если правильно понял этот код, тогда везде выводится 1111111111111, кроме каталога и товаров внутри. Так? Тогда в в шаблоне каталога и товара написать нужный номер и всё. В Феном есть наследование шаблонов. Вопросы / Помогите сократить запись на феном. 18 0
24 августа 2020, 18:36 Не совсем понятна структура ресурсов. Контексты — это что? Это просто разные языки (т.е. в контекстах товары дублируются, но на разных языках)? Или контексты — это разные отделы, о которых идет речь (разные телефоны)? Или каждая категория — это разный отдел? Или как? Если структура такая: Общий каталог - каталог для 1-го отдела -- товар -- товар - каталог для 2-го отдела -- товар -- товарТогда можно сделать ТВ у каталога и в шаблоне написать просто: {$_modx->resource.parent|resource:'tv_phone'} Вопросы / Помогите сократить запись на феном. 18 0
04 августа 2020, 14:47 На том сайте минишопа нет. Но надо посмотреть как там реализовано, спасибо. Вопросы / ExtJS Пустое значение поля datefield 7 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
И вообще, в чем преимущества этих callback? Почему бы не сделать через события? Например, написать (можно на чистом JS):
А там кому надо, тот напишет
Как минимум короче код и привычнее.
Еще было такое из-за какого-то ТВ поля. Отключал его — норм работало.
Так вот вопрос такой — почему скрипты от сниппетов minishop2 не подключаются в модалку?
Другие скрипты (из своих сниппетов), подключаются. Искал в настройках, в коде компонента, так и не нашел где это всё дело «вырезается» и по какой логике…
Может быть даже лучше в отдельный сниппет вынести.
(не проверял)
А так, если честно, не особо понятно…
core/components/tinycompressor/model/tinycompressor/tinycompressor.class.php
Строка 98.
$container уже содержит base_path.
Плюс, между $container и $file['name'] должен быть разделитель /.
После исправления, всё заработало. В личном кабинете TinyPNG появилась информация о количестве сжатых файлов.
Проверил размер превью продукта «до» и «полсе» перегенерации превью из вкладки «галерея».
«До» было меньше (20кб), чем стало «после» (23кб). Если загрузить «после» вручную на сервис tinyPNG, то файл сжимается в 2 раза (49%).
В phpthumb.class.php нужная сточка присутствует. При перегенерации срабатывает только 1 событие из плагина: OnFileManagerFileCreate (наверное так и должно быть, но всё равно не сжимаются картинки)
Оригинал картинки был около 700 кб (т.е. меньше 5 мб).
Вообще я бы еще пересмотрел логику работы метода getCost в msOrderHandler.
При разработке своего класса-обработчика способа доставки иногда возникали проблемы. Мне кажется этот метод как-то сложно и не совсем логично устроен.
Мне кажется данный метод должен четко возвращать только общую стоимость заказа. Без всяких параметров $with_cart. Разве может быть стоимость заказа без стоимости корзины?
Либо, если передан true, возвращать массив данных, из которых складывается эта общая стоимость: стоимость корзины, стоимость доставки, стоимость оплаты (т.е. то что возвращает $payment->getCost).
В $delivery->getCost() должна передаваться исключительно только стоимость корзины.
В $payment->getCost() должна передаваться стоимость корзины + стоимость доставки.
Понимаю, придется все старые дополнения переписывать…
Если нет, то может кто-то подскажет как сделать такие уведомления.
Например после оплаты пользователю приходит письмо с текстом: «Недавно вы совершили покупку в нашем магазине и теперь вам доступны Х бонусов. Их можно потратить в течении Х дней».
Когда остается Х дней до сгорания бонусов, тоже хорошо бы отправлять какое-нибудь письмо…
Базовый шаблон:
Шаблон каталога/товара:
А в шапке (base_header.tpl) вставить в нужное место {$config.phone}
На картинке не понятно какой из ресурсов является отдельным отделом, для которых нужен отдельный телефон.
Судя по коду вообще все ресурсы, которые на картинке должны иметь один и тот же телефон, а остальные другой.
Если правильно понял этот код, тогда везде выводится 1111111111111, кроме каталога и товаров внутри.
Так? Тогда в в шаблоне каталога и товара написать нужный номер и всё.
В Феном есть наследование шаблонов.
Контексты — это что? Это просто разные языки (т.е. в контекстах товары дублируются, но на разных языках)?
Или контексты — это разные отделы, о которых идет речь (разные телефоны)?
Или каждая категория — это разный отдел?
Или как?
Если структура такая:
Тогда можно сделать ТВ у каталога и в шаблоне написать просто:
Но надо посмотреть как там реализовано, спасибо.