Ответы пользователя по тегу MODX
  • Как правильно настроить сниппет в modx revo?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    $output = '';
    
    $ot=new \mylibs\Otgruzka();
    $ot->perevalka_station_code=238207;
    $ostatki_arr=$ot->ostatki_na_perevalke_get();
    
    foreach ($ostatki_arr as $v) {
       $output .=  $modx->getChunk('название_чанка', array(
          'product__name' => $v['product_name'],
          'product__count' => $v['ostatok_tonnazh']
       ));
    }
    
    return $output;
    Ответ написан
  • Добрый день! Как создать сниппет в modx revo, что бы с помощью этого сниппета и cronmanager менять цены?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Можно обойтись без крона.
    1) Создаете сниппет, например getProductRealPrice с входящим параметром price-товара. В нем проверяете текущее время и исходя из этого меняете цену как нужно и возвращаете новую.
    2) Во всех чанках, отвечающих за вывод карточки товара и на странице товара, в форму добавляете hidden input с каким-нибудь именем options и сниппетом в value.
    <input type="hidden" name="options[realprice]" value="[[!getProductRealPrice]]">

    Ну и соответственно там, где выводится цена, т.е. price, выводите этот сниппет.
    3) Пишете плагин на событие msOnAddToCart в котором проверяете, если у добавляемого товара options[realprice] задан и отличается от price, то значит меняем цену товара на это значение.
    Ответ написан
    Комментировать
  • Как сделать несколько foreach внутри одного foreach?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Видимо данные хранятся в Migx. Проблема в том, что вы все приводите в одну переменную $items (еще и во вложенных циклах одни и те же переменные):
    {set $items = json_decode($_modx->resource.itemDoctors, true)}
    {set $items = json_decode($item.education, true)}
    {set $items = json_decode($item.myDoctors, true)}


    Соответственно просто задайте их разным переменным и все:
    {set $items1 = json_decode($_modx->resource.itemDoctors, true)}
    {foreach $items1 as $item}
       {set $items2 = json_decode($item.education, true)}
       {foreach $items2 as $item2}
         ...
       {/foreach}
       {set $items3 = json_decode($item.myDoctors, true)}
       {foreach $items3 as $item3}
         ...
       {/foreach}
    {/foreach}
    Ответ написан
  • Как реализовать логику в ModX?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    В Gallery есть возможность указывать теги для элементов.
    Поэтому как вариант, если вы вставляете iframe, то укажите соответствующий тег iframe, а для видео не указывайте тег вообще.
    В чанке, указанном в параметре &thumbTpl проверяйте тег и делайте соответствующую обертку. Что-то наподобие:
    [[+tags:is=`iframe`:then=`
    <iframe src="[[+url]]" width="420" height="315" allowfullscreen></iframe>
    `:else=`
    <video width="420" height="315" controls="controls">
       <source src="[[+url]]" type='video/mp4;"'>
    </video>
    `]]
    Ответ написан
  • Как сделать такую страницу только Rutube?

    DanArst
    @DanArst Куратор тега HTML
    Гриффиндор в моде при любой погоде!
    Если добавлять видео руками:
    1) С помощью компонента VideoGallery
    2) Migx + fancybox

    Если автоматически:
    1) Писать сниппет для работы с API Rutube
    Ответ написан
  • Как перенести все новости или статьи документы и тд с одного сайта на другой modx?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    В Modx все элементы хранятся в базе данных, в том числе и ресурсы.
    Если вам нужно не сам сайт, а только новости и статьи перенести, то для этого придется немного постараться.
    1) Можно сделать путем экспорта/импорта записей из нужных таблиц (скорее всего modx_site_content и modx_site_tmplvar_contentvalues). Но тут есть свои нюансы.
    2) Я бы сделал простой парсер на PHP Curl.
    Ответ написан
  • Какие альтернативы есть модулю Tickets?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    EasyComm отличная альтернатива.
    По поводу того, что нужно создавать новые страницы и тд - легко решается плагином.
    Ответ написан
    Комментировать
  • Как разделить ajax формы друг от друга что бы не приходило много писем?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Параметр submitVar не нужен ajaxform, он никакой погоды не сделает.
    В консоли браузера есть ошибки? Jquery подключен?
    Покажите html-код форм.
    И у вас случайно в коде нет в скриптах кастомного листенера события отправки формы?
    Ответ написан
  • Как восстановить привью в modx?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Нет ли в консоли браузера, когда открываете страницу диспетчера файлов, ошибки наподобие phpThumb was unable to generate a thumbnail?
    Попробуйте вручную удалить все внутри папки core/cache/ и перезайдите в админку. Проверьте пути в источниках файлов и права на папки, где лежат изображения.
    Ответ написан
  • Как исправить ошибку при добавление pdoPage к pdoCrumbs?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Не смешивайте fenom со стандартным синтаксисом, ибо у них отличаются методы парсинга, и это в принципе считается дурным тоном.
    Либо оба сниппета в fenom, либо оба сниппета в стандартный вид приведите.
    И плюс у вас ошибка тут (открывающий тег ul, а закрываете ol):
    &tplWrapper=`@INLINE <ul class="breadcrumb">[[+output]]</ol>`
    Ответ написан
  • Как поменять поля в зависимости от выбора?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    По этому мануалу сделайте динамические поля migx.
    В первом селекте выбираете автобус и далее у вас будет подгружаться соответствующие поля.
    Ответ написан
  • Как запретить повторное добавление в корзину?

    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 я делал тут. На вкладке Планировки нажми на любой этаж и у тебя откроется окно со схемой этажа и подсветкой офисов, где красные, не кликабельные и не имеющие ховер эффекта - уже заняты, зеленые - свободны, кликабельны и с ховер эффектом , и красные с ховер эффектом и кликабельные - это те, что скоро освободятся.
    Ответ написан
    Комментировать
  • Как включить текстовый редактор для описания страницы modx?

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

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

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    С помощью переменных шаблона.
    Подробнее тут
    Ответ написан
    2 комментария
  • Не дает установить пакет на modx?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Попробуй отключить open_basedir. Надо указать "none"
    Ответ написан
    2 комментария
  • Почему не отображается ресурс?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Зайдите в базу данных сайта. Найдите этот ресурс в таблице modx_site_content (вместо префикса modx_ у ваших таблиц может быть другой).
    Далее у него укажите в столбце show_in_tree значение 1.
    62c7cedba513c111446535.jpeg
    Ответ написан
    Комментировать
  • Как прописать php код в чанке modx?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Смотря что нужно прописать.
    Некоторые моменты можно решить с помощью fenom. Есть куча готовых сниппетов, которые могут решить ваш вопрос. Если же таковых нет, то пишите кастомный.
    Ответ написан
    Комментировать
  • Как вывести ресуры по нужным tv полям в MODX Evo?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Если актуально, то можно так:
    [!DocLister?
      &parents=`id-родительского ресурса товаров`
      &tpl=`чанк-оформления-результата`
      &tvList=`color` <!-- С учетом что ключ данного TV - это color -->
      &filters=`AND(tv:color:eq:синий)`
    !]
    Ответ написан
    1 комментарий