Всего 122 753 комментария

Николай Хохлунов
08 апреля 2024, 15:03
0
Проект бесплатный и судя по активности свою небольшую нишу занял, скорее у нашей команды немного фокус сменился, но проект не бросаем)
Илья
08 апреля 2024, 14:35
0
Я использую YandexMaps для вывода ресурсов на карте. Вывести изображение ресурса в балун просто в плейсхолдер типа {$medium} не возможно.
modx.pro/help/9334
Илья
08 апреля 2024, 10:51
0
Вот если бы кто подружил ms2Gallery и Яндекс.Карты чтобы в балун фотографии поддягивать.
vit
vit
08 апреля 2024, 10:45
0
Я сейчас вернусь де использую SEO Suite, как вы думаете лучше через него карту делать или через pdoTools?
Артур Шевченко
08 апреля 2024, 10:36
1
+1
<!-- parentRowTpl-->
<li class="[[+wf.classnames]]">
    <a class="nav-link px-0 align-middle" href="#submenu1" data-bs-toggle="collapse" title="[[+wf.title]]">
        <span class="ms-1 d-none d-sm-inline">[[+wf.linktext]]</span>
    </a>
    <ul id="submenu1" class="collapse nav flex-column ms-1" data-bs-parent="#menu">
        [[+wf.wrapper]]
    </ul>  
</li><!-- /parentRowTpl -->
<!-- innerTpl -->
    [[+wf.wrapper]]
<!-- /innerTpl -->
Ну и лучше использовать pdoTools, говорят они быстрее.
Артур Шевченко
08 апреля 2024, 10:18
0
Что за сниппет c id = 11?
vectorserver
08 апреля 2024, 09:41
0
Сергей, спасибо за статью, оптимизировал сниппет выше!
Сергей Шлоков
08 апреля 2024, 08:11
+1
Отличный пример как делать нельзя. Это максимально жесткий сценарий оверхеда нагрузки.
Подробности описаны мной тут.
Арман
08 апреля 2024, 04:22
0
[08-Apr-2024 04:14:56 Europe/Moscow] PHP Fatal error:  Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /var/www/u1387551/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code:20
Stack trace:
#0 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(215): Fenom\Template->{closure}(Array, Object(Fenom\Template))
#1 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(215): Closure->__invoke(Array, Object(Fenom\Template))
#2 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(492): Fenom\Render->display(Array)
#3 /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Render.php(229): Fenom\Template->display(Array)
#4 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/Parsing/Fenom/Fenom.php(136): Fenom\Render->fetch(Array)
#5 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/CoreTools.php(418): ModxPro\PdoTools\Parsing\Fenom\Fenom->process(Array, Array)
#6 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt.php(341): ModxPro\PdoTools\CoreTools->getChunk('siDefaultEmail', Array)
#7 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook/Email.php(193): Sterc\FormIt->getChunk('siDefaultEmail', Array)
#8 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook.php(141): Sterc\FormIt\Hook\Email->process(Array)
#9 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Hook.php(107): Sterc\FormIt\Hook->load('email', Array, Array)
#10 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(402): Sterc\FormIt\Hook->loadMultiple(Array, Array)
#11 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(345): Sterc\FormIt\Request->runPostHooks()
#12 /var/www/u1532978/data/www/site.ru/core/components/formit/src/FormIt/Request.php(254): Sterc\FormIt\Request->postProcess()
#13 /var/www/u1532978/data/www/site.ru/core/cache/includes/elements/modx/revolution/modsnippet/11.include.cache.php(21): Sterc\FormIt\Request->handle(Array)
#14 /var/www/u1532978/data/www/site.ru/core/src/Revolution/modScript.php(88): include('/var/www/u13875...')
#15 /var/www/u1532978/data/www/site.ru/core/components/pdotools/src/CoreTools.php(358): MODX\Revolution\modScript->process(NULL)
#16 /var/www/u1532978/data/www/site.ru/core/components/sendit/model/sendit/sendit.class.php(391): ModxPro\PdoTools\CoreTools->runSnippet('FormIt', Array)
#17 /var/www/u1532978/data/www/site.ru/core/components/sendit/model/sendit/sendit.class.php(372): SendIt->runSnippet('FormIt')
#18 /var/www/u1532978/data/www/site.ru/assets/components/sendit/action.php(45): SendIt->process()
#19 {main}
  thrown in /var/www/u1532978/data/www/site.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487) : eval()'d code on line 20
Наумов Алексей
07 апреля 2024, 19:27
0
Ну… попробую описать) у меня в проекте очень длинный код и он делает не много не то, что вам нужно, поэтому всю портянку сюда не вставить.

0. на фронте добавляем поле для выбора ширины или ввода его вручную

1. Создадим плагин на событие msopOnAfterGetCost
if ($modx->event->name == 'msopOnAfterGetCost') {
    $isGetModificationAction = (isset($_REQUEST['action']) && $_REQUEST['action'] == "modification/get");
    $isCartAddAction = (isset($_REQUEST['ms2_action']) && $_REQUEST['ms2_action'] == "cart/add");
    
    // Обрабатываем только ajax запросы, в которых компонент msOptionsPrice2 отдает цену
    // Есть альтарнативный способ: проверять $_REQUEST['ms2_action'] !== cart/add
    if($isGetModificationAction || $isCartAddAction) {
    // здесь наш основной код
    // доступна переменная $modification
    // если пользователь выбрал определенную модификацию и у нее есть цена, то берем данные из нее
    if($modification['id']) {
    } else {
        // нет модификации, соответствующей переданным параметрам...
        // нужно высчитать цену, исходя из ширины вашего товара
        // ...
        // а вот тут мы вернем цену
        $modx->event->returnedValues['cost'] = ???;
    }
    
    
    }
}
2.
Олег Захаров
07 апреля 2024, 12:05
0
А как задать сортировку опций внутри категорий? Для тех кто не знает и чтобы сэкономить себе время и нервы подсказываю (сам долго тупил и не знал как настроить):
Чтобы опции внутри категории сортировались в нужном порядке, заходим в редактирование Категории товаров в Minishop и находим вкладку Настройки. Там должны быть опции категории. Перетаскиваем строки вверх вниз формируя нужную сортировку.
Поле rank у опций категории (таблица modx_ms2_category_options) по умолчанию стоит видимо 0, но после перетаскивания строк формируется последовательность сортировки.
Олег Захаров
06 апреля 2024, 22:31
+1
да правильно, поправил в ТС код.
Пример работы выложил тут https://dev445.gowindo.ru/dealers
Есть одна недоработка. Когда нажимаешь на метку, раскрывается всплывающая карточка организации (balloonContent). После закрытия карточки выведенный справа блок от метки iconContentLayout остается открытым (т.к. мышка оказывается за пределами границ иконки геометки myPlacemarkWithContent после закрытия balloonContent, но событие mouseleave не срабатывает). И показанный блок iconContentLayout не закрывается пока снова не наведешь мышку на метку и выйдешь за пределы метки (повторно вызвав срабатывание mouseenter и mouseleave). Надо бы доделать, повесить вызов кода либо событие на закрытие balloonContent, либо добавить событие потери фокуса после попадания мышки за пределы границ иконки геометки myPlacemarkWithContent. Пока лень думать над этим, т.к. пока Заказчику это не горит.
Дима Касаткин
06 апреля 2024, 22:07
+1
Благодарю за полезный материал!

Для тех, кто захочет воспользоваться решением, рекомендую заменить JS-комментарии (/* такие */) на fenom-комментарии ( {*на такие*} ) чтобы на фронтенд не выводить их!
Александр Мельник
06 апреля 2024, 15:34
0
Не очень в тему, но вдруг кому то будет полезно.
Недавно на одном из наших проектов (не MODX) столкнулись со «странным» поведением модуля доставки СДЕКа.
Не вдаваясь в нюансы, проблема оказалось в том, что СДЕК хранит много данных в сессии. Это и список pvz_list (пункты выдач) и почтоматы и так далее.
Сессии хранились в базе данных и длина эти данных стала превышать разрешенную для типа данных TEXT, изза чего вся сессия уничтожалась.
serdeles
06 апреля 2024, 10:31
0
Спасибо, попробую.
Артур Шевченко
06 апреля 2024, 09:45
0
Сделай просто тестовое поле и пишу туда путь к файлу.
serdeles
05 апреля 2024, 23:08
0
Спасибо! Буду пробовать это решение. Нестандартная она для меня, так как я не так плотно и часто занимаюсь разработкой ))

Просто там может быть вероятность размещения не только изображений, но и, к примеру, встроенных видеороликов или просто текстовых блоков.
Артур Шевченко
05 апреля 2024, 23:00
+1
Не понимаю при чём тут галерея, размер и формат картинок. Если все картинки связаны с один конкретным ресурсом, то нужно создать TV типа migx, в котором будет другой migx. Покажу на примере массива
[
    [
        'class' => 'col-1',
        'images' => [
            'image-1.jpg',
            'image-2.jpg'
        ]
    ],
    [
        'class' => 'col-2',
        'images' => [
            'image-1.jpg',
            'image-2.jpg'
        ]
    ],
]
И в шаблоне это можно вывести так
{foreach $blocks as $block}
<div class="{$block.class}">
    <ul>
    {foreach $block.images as $img}
        <li><img src="{$img}"></li>
    {/foreach}
    </ul>
</div>
{/foreach}
Ну или использовать сниппет getImageList для обработки полей типа migx.
В чём нестандартность задачи неясно, может быть ты что-то не договариваешь?
serdeles
05 апреля 2024, 22:34
0
Потому что речь идет не о галерее. И потому что на одной странице будут размещаться картинки в несколько колонок (от одной до четырех). Картинки разного размера и формата. Соответственно, для их вывода разработаны CSS-классы, которые в зависимости от количества колонок будут применяться к элементам списка.

Задача нестандартная, поэтому и попросил тут совета.