Максим

Максим

С нами с 03 июля 2015; Место в рейтинге пользователей: #280
Максим
08 октября 2021, 12:13
0
В mSearch2 конфиг и инициализация подключаются в сниппетах. Сам компонент подключается в php-классе.

Почему нельзя сделать так же с minishop2 в одном из следующих обновлений?

Можно, думаю сделают. Вопрос только когда?))) У них там полно работы судя по issue на github.
Можешь туда им написать, предложив свой код.
Максим
29 сентября 2021, 07:10
0
Нужно опытным путем проверять.
Максим
28 сентября 2021, 15:55
0
Из документации к mFilter2:
&paginator pdoPage Сниппет для постраничной навигации, по умолчанию pdoPage. Вы можете указать набор параметров для него: &paginator=`pdoPage@myParams`.
Сооветственно…
— можно ли просто отключить такое поведение пагинации? Сделать чтобы при клике на 2 страница перезагружалась?
У pdoPages есть параметры: ajax и ajaxMode.
Есть еще параметр ajaxHistory. Можно с ними поэкспериментировать.

— или поделитесь пожалуйста кто какие решения уже придумал?
Через события, например. Ссылка
Максим
27 сентября 2021, 10:56
0
Вообще, на мой взгляд, «количество» и «качество» — это общие свойства для всех товаров, как и штрихкод, вес, цена и т.п. Я бы делал их через систему плагинов минишопа (т.е. добавление их на вкладку «свойства товара»), а не через опции (вкладка «опции товара»).
Максим
22 сентября 2021, 13:30
1
+2
Недавно ковырялся в скриптах минишопа, заметил, что нет callback-функции для miniShop2.Cart.status(). А ведь могло бы пригодиться (например, с той же мини-корзиной какие-то действия производить, добавлять классы или что-то еще).
И вообще, в чем преимущества этих callback? Почему бы не сделать через события? Например, написать (можно на чистом JS):
$(document).trigger('beforeAddToCart', options)
А там кому надо, тот напишет
$(document).on('beforeAddToCart', function(event, options){});
Как минимум короче код и привычнее.
Максим
09 сентября 2021, 13:00
0
Напоминает MIGX, только более продвинутый.
Максим
03 сентября 2021, 13:04
0
Мне иногда помогает жестка перезагрузка страницы. Открываем инструменты разработчика (клавиша F12), потом жмем CTRL+F5 (если firefox) или право кнопкой мыши по значку «обновить» и потом «очистить кэш и жесткая перезагрузка» (если chrome). Пару раз так сделать. Потом сохранить попробовать (для начала без ввода изменений).
Еще было такое из-за какого-то ТВ поля. Отключал его — норм работало.
Максим
03 сентября 2021, 12:46
0
*(даже если указать
<head>
и
<body>
как в инструкции написано)
Максим
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}