Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 132 комментария

Наумов Алексей
Наумов Алексей
Ну… попробую описать) у меня в проекте очень длинный код и он делает не много не то, что вам нужно, поэтому всю портянку сюда не вставить.

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.
Олег Захаров
Олег Захаров
А как задать сортировку опций внутри категорий? Для тех кто не знает и чтобы сэкономить себе время и нервы подсказываю (сам долго тупил и не знал как настроить):
Чтобы опции внутри категории сортировались в нужном порядке, заходим в редактирование Категории товаров в Minishop и находим вкладку Настройки. Там должны быть опции категории. Перетаскиваем строки вверх вниз формируя нужную сортировку.
Поле rank у опций категории (таблица modx_ms2_category_options) по умолчанию стоит видимо 0, но после перетаскивания строк формируется последовательность сортировки.
Олег Захаров
Олег Захаров
да правильно, поправил в ТС код.
Пример работы выложил тут
https://dev445.gowindo.ru/dealers
Есть одна недоработка. Когда нажимаешь на метку, раскрывается всплывающая карточка организации (balloonContent). После закрытия карточки выведенный справа блок от метки iconContentLayout остается открытым (т.к. мышка оказывается за пределами границ иконки геометки myPlacemarkWithContent после закрытия balloonContent, но событие mouseleave не срабатывает). И показанный блок iconContentLayout не закрывается пока снова не наведешь мышку на метку и выйдешь за пределы метки (повторно вызвав срабатывание mouseenter и mouseleave). Надо бы доделать, повесить вызов кода либо событие на закрытие balloonContent, либо добавить событие потери фокуса после попадания мышки за пределы границ иконки геометки myPlacemarkWithContent. Пока лень думать над этим, т.к. пока Заказчику это не горит.
Дима Касаткин
Дима Касаткин
Благодарю за полезный материал!

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

Просто там может быть вероятность размещения не только изображений, но и, к примеру, встроенных видеороликов или просто текстовых блоков.
Артур Шевченко
Артур Шевченко
Не понимаю при чём тут галерея, размер и формат картинок. Если все картинки связаны с один конкретным ресурсом, то нужно создать 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
serdeles
Потому что речь идет не о галерее. И потому что на одной странице будут размещаться картинки в несколько колонок (от одной до четырех). Картинки разного размера и формата. Соответственно, для их вывода разработаны CSS-классы, которые в зависимости от количества колонок будут применяться к элементам списка.

Задача нестандартная, поэтому и попросил тут совета.
Валентина Павлова
Валентина Павлова
Хотелось бы попробовать, круто выглядит. Но выдает ошибку:
Это расширение было отключено, так как оно не поддерживает виртуальные рабочие области.
То есть файл можно только локальный редактировать? И потом через git синхронизировать?
Удаленно нельзя?
Олег Захаров
Олег Захаров
Круто! Вы молодец! Спасибо огромное Вам за Ваши труды. Хоть и принято на сайте общаться на ты, но пишу ВЫ с большой буквы, т.к. Вы человек с большой буквы. Благодаря Вашим стараниям и таким энтузиастам как Вы и всем участникам сообщества кто пишет и развивает MODX — живет MODX, живет сообщество.
Благодаря Вам всем уважаемые коллеги люди могут писать классные сайты в классной среде (пусть и не все идеально, но это не Wordpress с непонятным кодом и не Joomla с тормозами и недоделками и не 1C Битрикс (тяжелый движок)). MODX очень классный движок, гибкий, простой. Сколько благодаря сообществу людей могут заработать на хлеб с маслом не сосчитать.
Очень нужны понятные уроки для новичков. Особенно интересны подходы работы в среде разработки с подключением Github и прочих инструментов разработки как Compose и т.д. Интересны описание совместной работы нескольких человек над сайтом одновременно чтобы можно было в студиях для командной разработки применить. И тогда полк разработчиков увеличится.
Для себя я понял что Laravell + VUE.js это конечно круто, но разработка на нем должна начинаться от нескольких сотен тысяч рублей, или лучше от 1 миллиона и имеет смысл для сложных сервисов с большой нагрузкой и сложным интерфейсом и где есть бюджет большой. Для большинства же стандартных сайтов и простеньких интернет-магазинов MODX все еще очень даже не плох, кто бы что про него не говорил. Старичок, но надежный и простой.
Василий Наумкин
Василий Наумкин
Олег Захаров
Олег Захаров
Василий, а Вы сейчас на MODX что-то разрабатываете? Или полностью перешли на свой VESP? Насколько сложнее по Вашему мнению и опыту сделать например интернет-магазин на MODX (я все не решаюсь что-то делать на 3.0, пока только на 2.8.6) и на VESP разработчику не знакомому с VESP?
Вопрос не только к Василию, может кто бывалый поделится опытом?
Насколько будет сложнее делать на модных Laravell + Vue.js?
Олег Захаров
Олег Захаров
MODX старичок. На нем реальные проекты быстро можно сделать. А на laravell я например сам пока еще не решаюсь что-то серьезное делать, много изучать надо, есть постоянно возникающие вопросы что и как. Пока наф… г наф… г делаю на старичке и работает самое главное. Конечно многое хочется по другому чтобы было.
Вячеслав
Вячеслав
Спасибо мил человек @Наумов Алексей.
UPD: Странно, но на одном все норм а на втором в консоле ошибка 403 на API Yandex карт
full-f7815554a5a1454cb96dbe8680afeb6e7a6e1cb5.js:1448     GET https://api-maps.yandex.ru/services/search//v2/?callback=id_171224036746642225803&text=45.03547%2C38.975313&format=json&rspn=0&lang=ru_RU&token=8a8d8684217361e809b858ba596f0196&type=geo&properties=addressdetails&geocoder_sco=latlong&geocoder_kind=locality&geolocation_accuracy=30199.922770173293&origin=jsapi21Geolocation&apikey=f6e034c2-8c37-4168-8b97-99b6b3b268d7&spn=0.5%2C0.5 net::ERR_ABORTED 403

А где вообще для Яндекс ключи прописываются или они со стороны СДЕК подтягиваются?
И насколько временный фикс до какого числа?