• Как сделать выбор места в автобусе?

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

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

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

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

    Если структура отличается - это другой шаблон и там выводите, что хотите.
    Если структура не сильно отличается, но есть особенности, то ставьте проверку по текущему id.
    [[*id:eq=`id-той-самой-страницы`:then=`код-для-той-самой-страницы`:else`ничего-либо-какой-то-еще-код`]]
    на fenom это чуть проще
    { if $_modx->resource.id == '' }
    ...
    { /if }
    Ответ написан
    Комментировать
  • Как в MODX вывести данные в зависимости от полученного значения из сниппета?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Слишком сложно. Не легче ли просто проверить на id и исходя из этого выводить нужный контент, ведь у каждой страницы уникальный идентификатор.
    Если у вас включен fenom, что я вам советую, то код будет выглядеть так (вместо 15 поставьте id вашей страницы ):
    {if $_modx->resource.id == 15}
    <section class="section">
              <div class="container-fluid">
                  BEAUTY Блок 
              </div>
    </section>
    {/if}


    Если же fenom не включен и вы по каким-то причинам не хотите его включать, то можно написать условие так:
    [[*id:is=`15`:then=`
    <section class="section">
              <div class="container-fluid">
                  BEAUTY Блок 
              </div>
    </section>
    `]]
    Ответ написан
    Комментировать
  • Почему не работает limit в getResources?

    i__dmitry
    @i__dmitry
    Weaving a web
    Во-первых, цифру нужно брать в обратные кавычки:
    &limit=`3` вместо &limit='3'
    Во-вторых, лучше в вашем случае попробовать выводить сниппеты некэшированными (с восклицательным знаком после второй открывающей скобки: [[!getResources]])
    Ответ написан
    Комментировать
  • Два монитора + Photoshop

    @niko83
    Работал с фотогопом на двух мониках 19`` и 15`` окошко с картинкой перетаскиваю на 19-шку, нажимаю F — получаю большое изображение в край. Основное окно навгации на мелком монике, раскрыты все нужные панельки: слои, каналы, история, actions, и другое. Не забываем сохранить рабочее пространсво в отдельный файл чтоб потом панельки опять не настраивать. Активно использую горячии клавиши, изменение масштаба, перетаскивания, управление кистями, переключение по каналам и многое др. — в фотошопе уйма горячих клавиш и сочетаний их, есть по 4-одноврменно нажатых. Получается очень удобно, и главное удобство это когда панельки не путаются на картинке. В этом заслуга наличия двух моников!
    Ответ написан
    2 комментария
  • Как в MODX у вывозимого tv поля убрать первый символ?

    petyagrill
    @petyagrill
    Можно к примеру создать свой модификатор:
    1) создаем сниппет с названием clearNum с таким содержимым
    return preg_replace('![^0-9]+!', '', $input);
    2) при выводе данного TV используем созданный модификатор в таком формате
    [[+tvName:clearNum]]
    Ответ написан
    4 комментария
  • Как проверить значение tv другого ресурса на пустоту?

    an-tar
    @an-tar
    Full stack web developer
    Можно сделать так, сначала занести вывод pdoField в плейсхолдер:
    &toPlaceholder=`imgph`
    А потом проверить на непустоту
    [[+imgph:notempty=`<div><img src="[[+imgph]]"></div>`]]
    Ответ написан
    Комментировать
  • Modx при клике на определенную часть картинки выскакивает описание, есть ли готовый плагин?

    ig0r74
    @ig0r74
    MODX-разработчик
    Вот нечто похожее на то, что вам нужно:
    https://modstore.pro/packages/photos-and-files/imgarea
    Ответ написан
    Комментировать