Максим

Максим

С нами с 03 июля 2015; Место в рейтинге пользователей: #278
Максим
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}
Максим
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
На том сайте минишопа нет.
Но надо посмотреть как там реализовано, спасибо.