• Как запретить повторное добавление в корзину?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Я бы для каждого билета, если это товар ms2, сделал кастомныое поле типа чекбокс Куплен, который по умолчанию не отмечен. Если оплачивается заказ, то плагином на событие msOnChangeOrderStatus проверяются купленные билеты и у них отмечается чекбокс Куплен. И все, при выводе билетов просто проверяешь fenom-ом например, если куплен, то не выводить кнопку, если не куплен, то выводить. И для лучшего функционала, создать еще один плагин на событие msOnBeforeAddToCart, в котором будешь перед добавлением в корзину проверять, куплен ли уже билет или нет.
    Ответ написан
    Комментировать
  • Как сделать выбор места в автобусе?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Важный момент: будет большое количество разных автобусов или будет использоваться всего несколько автобусов? Если будет определенное количество автобусов, которые ты уже знаешь, то можно сделать так:
    1) Для каждого из этих автобусов создать ресурс, он не должен отображаться на сайте, сделай тип документа Ссылка и переводи на главную например. Для этих ресурсов создай три TV - количество мест для посадки, схема посадки (тип TV image или fastupload), и координаты мест - тут должен быть ассоциативный массив вида "№ места":"координаты полигона на схеме".
    2) Если каждая поездка/тур - это отдельный товар minishop2, то можно создать кастомное поле товара, если умеешь, если нет - то создай TV. В данном поле будет указываться ID ресурса-автобуса для данной поездки.
    3) Важно заметить, что в совершенном заказе должен сохраняться № купленного места или мест. Когда юзер будет покупать эту поездку, на бэке формируешь карту изображения (схемы посадки автобуса) с учетом уже совершенных заказов этого товара. Если количество мест в оплаченных заказах равно количеству мест в автобусе, то выводишь сообщение, что все места распроданы. Если еще есть, то выводишь схему с кликабельной картой изображения. Я бы использовал maphilight.js
    Пример схемы посадки
    635f5dda066ca410044192.png

    В принципе все. Далее уже функционал за тобой. Занятые места можешь подсвечивать красным, свободные зеленым и задать им класс, на который повесишь обработчик клика. По клику можешь писать № места в свое поле заказа.

    Если же автобусы всегда могут быть разные, т.е. точное количество и т.д. ты заранее не знаешь, то вместо того, чтобы создавать для каждого автобуса ресурс, создаешь три кастомных поля для товара minishop2(поездок) - количество мест в автобусе, схема посадки автобуса и ассоциативный массив мест для посадки. Т.е. то, что в 1-ом случае создается для ресурсов автобусов, во втором случае, чтобы не плодить кучу ресурсов, лучше для каждой поездки эти данные указывать отдельно.
    Далее логика работы такая же, отличается лишь в том, откуда берутся данные.

    Пример кликабельный карты с maphilight я делал тут. На вкладке Планировки нажми на любой этаж и у тебя откроется окно со схемой этажа и подсветкой офисов, где красные, не кликабельные и не имеющие ховер эффекта - уже заняты, зеленые - свободны, кликабельны и с ховер эффектом , и красные с ховер эффектом и кликабельные - это те, что скоро освободятся.
    Ответ написан
    Комментировать
  • Onclick - как добавить и убрать класс при нажатии у одного элемента из списка?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Вы кстати забыли закрыть теги <li>
    Ответ написан
    Комментировать
  • Как сделать поиск класса если нашлось?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Это с учетом, что класс кнопки всегда один
    function checkForButton(btnClass) {
        return new Promise(resolve => {
            if (document.querySelector(btnClass)) {
                return resolve(document.querySelector(btnClass));
            }
    
            const observer = new MutationObserver(mutations => {
                if (document.querySelector(btnClass)) {
                    resolve(document.querySelector(btnClass));
                    observer.disconnect();
                }
            });
    
            observer.observe(document.body, {
                childList: true,
                subtree: true
            });
        });
    }
    
    checkForButton('.lebxEowGMdQOJbKlCudYTsrHjNGIkpUfgm').then((elm) => {
        elm.click();
    });
    Ответ написан
  • Можно ли в нынешних условиях работать на зарубежных фриланс биржах?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Ну, во-первых, даже если бы не ограничения, то опытным разрабам очень сложно сложно конкурировать на зарубежных фриланс биржах, ибо миллионы индусов и тысячи пакистанцев с их невозможно низкими ценами, являются практически монополистами. Это еще учитывая мировой стереотип что в каждой компании прогеров (западной) есть хотя бы один индус. Хотя по факту так и есть.

    Во-вторых, чем не устраивают СНГ биржи, например Kwork, Weblancer и т.д? Я более чем уверен, что на них ты будешь зарабатывать (потенциально) в разы больше, чем на условном Upwork (учитывая конкуренцию, систему вывода и комиссию).

    Зачем искать какие-то пути обхода ограничений, если ты можешь работать удалённо на локальных биржах, где вполне достаточно заказов и людям в принципе пофиг откуда ты (наверное). Как минимум у меня, например, в месяц порядка 10 заказов на Kwork падает, и это при том, что я вообще не откликаюсь.
    Ответ написан
    6 комментариев
  • Как вытащить кнопки за пределы слайдера?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Так вытащите кнопки за контейнер. У swiper есть отличная документация, где есть подобный пример:
    var mySwiper = new Swiper('.swiper-container', {
      navigation: {
        nextEl: '.swiper-button--next', //класс кнопки next
        prevEl: '.swiper-button--prev' //класс кнопки prev
      }
    });
    Ответ написан
    Комментировать
  • Как включить текстовый редактор для описания страницы modx?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Поле description по умолчанию textarea.
    Если вам нужно еще одно поле с текстовым редактором, то вы можете без проблем создать TV с соответствующим типом ввода "Текстовый редактор" и назначить его нужным шаблонам.
    Подробнее тут
    Ответ написан
  • Почему выводится ошибка Parse error: syntax error, unexpected '{' wordpress?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Стоит смотреть внимательно, что копируете. В обеих строчках не хватает закрывающей скобки ")"
    if( isset( $_POST[ 'categoryfilter' ] ) ) {
     if( isset( $_POST[ 'postTagfilter' ] ) ) {
    Ответ написан
    1 комментарий
  • Как реализовать анимацию при открытии окна с видео?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    2 комментария
  • Как вытянуть элемент на всю ширину, при условии что второй элемент скрыт или удалён?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    .right {
      width: calc(100% - 300px);
      height: 300px;
      background: blue;
      flex-grow: 1; /*добавить эту строчку*/
    }

    Ответ написан
  • Как получить значение TV поля через снипет?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    $tvArr = $modx->getTemplateVar('имя_или_ид_тв', '*', ид_записи);
    $tvVal = $tvArr['value']; //это значение
    Ответ написан
    Комментировать
  • Как обнулять последующий select при смене значения в текущем?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Логично, что если в select выше значения изменилось, то обнулять последующий.

    А еще более логично, что раз значение изменилось, то и в последующих select-ах должны измениться значения, раз вы делаете зависимые.
    Ну а именно для вашего случая можно сделать например так:
    Ответ написан
  • Как после валидации формы открыть путь прописанный в action?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    $('#payment-form').on('submit', function(event){
      event.preventDefault();
      var valid = $(this).paymentForm('valid');
      if (valid){
        $(this).unbind();
        $(this).submit();
      }else{
        console.log('Badman Cardfaker');
      }
    });
    Ответ написан
    1 комментарий
  • Как с помощью swiper воссоздать такой эффект?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
  • Как реализовать такое нижнее подчеркивание?

    DanArst
    @DanArst Куратор тега HTML
    Гриффиндор в моде при любой погоде!
    Зачем отключать свойства? Это ведь эффект при hover-е. Так откройте devTools, выберите интересующий вас элемент и посмотрите на его стили, далее нажмите правой кнопкой мыши на него и в контекстном меню выберите Force state -> Hover и снова смотрите стили.
    На сайте из вашего вопроса сделано так:
    Ответ написан
    1 комментарий
  • Как вывести из базы только последние строки с разным значением id _user?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    SELECT id, id_user, komy, text, id_room, MAX(time) 
    FROM nano_mess 
    WHERE komy = '$id_login'
    GROUP BY id_user;
    Ответ написан
  • Как сделать ссылку на запрос в сервисе Яндекс и Гугл карт?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Как сделать ссылку на запрос в сервисе Яндекс и Гугл карт?

    Нужно именно ссылку на данные сервисы?
    Можно создать две переменные (если у вас так), условно yandex_coordinates и google_coordinates, и в них хранить массив координат [широта, долгота] для Яндекс и Google соответственно.
    И формировать ссылки для каждого помещения:
    1) Yandex:
    https://yandex.ru/maps/?pt=yandex_coordinates[0],yandex_coordinates[1]&z=13&l=map

    2) Google:
    https://maps.google.com/?q=google_coordinates[0],google_coordinates[1]


    p.s. честно вообще непонятен выбор тегов вопроса
    Ответ написан
    Комментировать
  • Как сделать "output" невидимым, пока в нём не будет какое-либо значение?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    #result{
        font-size: 30px;
        color: #fff;
        border: 1px #000;
        border-radius: 10px;    
        background-color: #ff715b;
        border-style: none;   
    }
    #result:not(:empty) {
        padding: 10px;
        box-shadow: 5px 5px 5px #e4887a;
    }
    Ответ написан
    2 комментария
  • Что такое размерность на данном скрине?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Все верно вам написали в комментарии - в окне создания документа будет указываться его потенциальный "вес" .
    Данное число прямо пропорционально размеру изображения.
    На итоговый "вес" при сохранении изображения влияют несколько факторов:
    1) Конечно же размер изображения в пикселях
    2) Исходный формат изображения. У каждого формата свой метод сжатия
    3) Количество слоев, глубина цвета, количество деталей и т.д
    Ответ написан
    Комментировать
  • Как вывести пользователей купивших более 10 игр?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    1) Имхо удобно использовать псевдонимы (alias), если используете join-ы
    3) Если хотите указать на столбец определенной таблицы, то синтаксис будет такой: название_или_псевдоним_таблицы.название_столбца, т.е. через точку, а не как у вас через пробел тут (transaction account_id)

    SELECT tr.account_id , ac.first_name, ac.last_name, ac.birth_name
    FROM transaction as tr
    LEFT JOIN account as ac ON ac.id = tr.account_id
    GROUP BY tr.account_id 
    HAVING COUNT (tr.account_id) >= 10;
    Ответ написан