Задать вопрос
  • Как вложить migx в migx?

    Спасибо! Помог.
    Написано
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Антон Тарасов, мне тут другое решение подсказали.
    Вам же всё равно большое спасибо. Было интересно. ))
    Да и до сих пор любопытно, почему оно не выводило у меня плейсхолдер с какими-либо тегами.
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Спасибо большое. Всё получилось.
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Антон Тарасов, по поводу совета с &totalVar=`total` - всё вроде заработало как надо, но тоже не совсем. )))
    Почему-то стало выводиться и это:
    636ca541007b3117256513.png
    Т.е. выводится и заголовок и родительский блок. Всё как надо. Но только само условие тоже почему-то выводится на страницу в виде текста...

    Вот код:
    [[pdoResources?
                	&tpl=`wave_tpl`
                	&limit=`0`
                	&parents=`[[#[[*id]].parent]]`
                	&resources=`-[[*id]]` 
                	&depth=`0`
                	&includeTVs=`date`
                	&sortby=`{"date":"DESC"}`
                	&toPlaceholder=`myPlaceholder`
                	&totalVar=`total`
                ]]
                       
       
               [[+total:gt=`0`:then=`
                <div class="waves_block">
                    <div class="block_heading"><p>Другие волны проекта «[[#[[*parent]].pagetitle]]»:</p><span></span></div>
                    <div class="project_waves grid_cols2">
                        [[+myPlaceholder]]
                    </div>
                </div>
                `]]
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Антон Тарасов, Нет не выводится даже параграф.
    [[+myPlaceholder:notempty=`<p>[[+myPlaceholder]]</p>`]]

    Плейсхолдер вывелся, параграф - нет.

    Никаких скриптов/стилей для test_block нету.
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Антон Тарасов, при всём уважении, Вы у себя проверили не совсем так как, описываю я.
    Если я сделаю то же, что и Вы, у меня тоже всё сработает.
    Вы попробуйте так:
    [[+test:notempty=`<div class="test_block">[[+test]]<div>`]]

    и посмотрите (пожалуйста), выведется ли вместе с результатом родительский блок .test_block?
    Потому что у меня не выводится именно он.

    По поводу содержимого работы сниппета - там ничего особенного, просто ресурсы. Выглядит результат примерно так:
    <a href="projects/wave-9-10-22" class="item">  
            <p class="name">Волна 9</p>
            <p class="date">Октябрь 2022</p>
    </a>
    <a href="projects/wave-9-11-22" class="item">  
            <p class="name">Волна 10</p>
            <p class="date">Ноябрь 2022</p>
    </a>
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Антон Тарасов, доброе утро ))
    Отдельно плейсхолдер выводит всё, что и должен выводить. С ним в принципе проблем никаких нет, что отдельно, что внутри блока .some_block - оно и там и там выводит ресурсы. Проблема только с самой обёрткой, ради которой мы всё это и затеяли. Т.е., как писал выше, при выводе плейсхолдера с условием его непустоты, его содержимое выводится в гордом одиночестве, без тех блоков, которые написаны вокруг него.

    Некешированный вызов на ситуацию никак не повлиял.

    Вот конкретно мой код, может я где-то просто ошибку не вижу?
    [[!pdoResources?
                	&tpl=`wave_tpl`
                	&limit=`0`
                	&parents=`[[#[[*id]].parent]]`
                	&resources=`-[[*id]]` 
                	&depth=`0`
                	&includeTVs=`date`
                	&sortby=`{"date":"DESC"}`
                	&toPlaceholder=`myPlaceholder`
                ]]
                        
                        
                [[!+myPlaceholder:notempty=`
                    <div class="waves_block">
                        <div class="block_heading"><p>Другие волны проекта «[[#[[*parent]].pagetitle]]»:</p><span></span></div>
                        <div class="project_waves grid_cols2">[[!+myPlaceholder]]</div>
                    </div>`]]

    Повторюсь, в этом случае работает условие, работает вывод содержимого плейсхолдера, но при выводе игнорируется всё кроме самого плейсхолдера. Т.е. нет блока .waves_block, заголовка и блока .project_waves, куда собственно и должны выводиться результаты.

    При этом если убрать само условие [[!+myPlaceholder:notempty=` `]] - то всё выводится как надо. Но тогда даже когда не надо ))))

    Помогает только решение, которое я написал выше, с разделением условия на части, но это такое.
  • Как вывести pdoResources с условием?

    imhateb
    @imhateb Автор вопроса
    Спасибо за ответ. Решение интересное, и в принципе рабочее.
    Логика отрабатывает как надо - есть ресурсы - показываем, нет - не показываем. Но видимо есть какая-то ошибка в синтаксисе, ибо при попытке реализовать это решение, выводится только содержимое плейсхолдера без обрамляющих его тегов и заголовка.

    Т.е. из Вашего примера выше
    [[+myPlaceholder:notempty=`
    <div class="some_block">
        <p class="block_heading">Какой-то заголовок</p>
        <div class="block_items">[[+myPlaceholder]]</div>
    </div>
    `]]

    выведется только [[+myPlaceholder]]. Никакого блока .some_block и заголовка не будет. Только ресурсы из плейсхолдера.

    Если убрать из вывода [[+myPlaceholder]] вот так:
    [[+myPlaceholder:notempty=`
    <div class="some_block">
        <p class="block_heading">Какой-то заголовок</p>
        <div class="block_items"> . . . </div>
    </div>`]]

    - то, напротив, мы получим и блок .some_block и заголовок. Но, естественно, без ресурсов.

    И вот вообще не понятно почему оно себя так ведёт. По логике всё должно работать.

    ******************
    Методом тыка нашлось решение, которое уже не кажется таким элегантным:
    [[+myPlaceholder:notempty=`
    <div class="some_block">
        <p class="block_heading">Какой-то заголовок</p>
        <div class="block_items">`]]
    [[+myPlaceholder:notempty=`[[+myPlaceholder]]`]]
    [[+myPlaceholder:notempty=`</div></div>`]]

    Но это ж фигня какая-то, должно же быть проще.
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Надим Закиров, просто тут мы ждём готовности файла этой функцией:

    deferred.done(function(text) {
    А в моём примере это же делало

    fetch('/orders/'+filename+'.txt').then(response => response.text()).then((data) => {

    Не тоже ли это самое получается?
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Надим Закиров, Так работает. Спасибо. Но меня смущает, что и мой вариант кода работал, но периодически пустые письма всё-таки приходили.
    Ладно. Погоняем так пока, посмотрим. Спасибо.
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Надим Закиров, https://thecream.pro/send?test=test2&lang=ru
    Ну вот. Ну это пустая страница, как я писал уже выше. Т.е. на ней ничего не видно, форма скрыта от глаз. Можно тольок через инспектор глянуть.
    В данном адресе "test2" это имя файла для тестов.
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Надим Закиров, ну так я ж и написал, что у меня не AJAX отправка. Обычно, по старинке отправляется, с перезагрузкой. Т.е. после отправки открывается другая страница которая написана в самом обработчике отправки.

    Я попробовал ваш код, пока ничего не работает. Т.е. отправка вообще не происходит.

    UPD: Я думаю, что проблема тут.
    $('#send_page').one('submit', function() {

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

    imhateb
    @imhateb Автор вопроса
    Spaceoddity, ответ на UPD
    Ок. Если я сделаю отправку сразу после цикла, но при этом данные из текстового файла не успеют загрузиться, то получается что письмо опять придёт пустым. Стало быть надо как-то сделать проверку перед циклом на готовность файла. Не подскажете как это сделать?
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Spaceoddity, блин, да другого направления нету. Я всё другое уже перепробовал.
    Опишу ситуацию подробнее, может поможете мне это другое направление поискать.
    Есть страница заказа курсов. На ней пользователь нажимает кнопку "записаться" и во всплывашке заполняет поля формы, после нажимает "оплатить" и отправляется в банк. При этом банк отдаёт ID заказа - его мы используем в качестве имени файла, который создаётся параллельно. В файл мы записываем все данные, которые ввёл пользователь, чтобы потом, после успешной оплаты, когда банк перенаправит посетителя обратно на сайт, мы смогли отправить письма об успешной оплате. Банк, после оплаты, направляет человека обратно на сайт, допустим на страницу /send, на ней ничего нет, кроме невидимой формы отправки, ну и скрипта, который смотрит в url страницы, вычленяет оттуда ID заказа, находит такой файл в соответствующей папке, берёт оттуда все данные, заполняет форму и отправляет письма.

    И в целом, всё работает. Но бывает, один случай из десяти, когда письма приходят пустые.

    И кстати, насчёт таймаута я с вами не согласен тут. Без него вообще ничего не работало. Возможно, дело не в скорости заполнения полей, а именно в подгрузке нужного файла и извлечения из него всех нужных данных.
  • Как написать два условия для отправки формы?

    imhateb
    @imhateb Автор вопроса
    Надим Закиров, почему же сразу ужасное? Всё вроде работает вполне. Нужно просто submit сделать по двум условиям - это суть моего вопроса. Переписывать форму или ещё что не нужно.

    Но всё таки отвечу на ваши вопросы:

    1. Форма отправляется обычно (без AJAX с перезагрузкой страницы);
    2. Пример формы? Зачем? Обычная форма - несколько инпутов, один сабмит. Как это поможет в моём вопросе?
    3. В файле содержатся через точку с запятой данные для формы: Фамилия, Имя, Отчество, Телефон и т.д.
    4. Текстовый файл создаётся автоматически на другой странице, из другой формы. На текущей странице происходит обращение к этому файлу по имени (оно уникальное, берётся из url), и оттуда должны браться все данные для заполнения. А потом эта форма должна отправляться.

    Честно, не понимаю, к чему все эти вопросы. Мне просто нужно условие с проверкой заполненности формы, и отправкой в любом случае через таймаут. Я себе вижу это двумя тремя строчками когда, только сформулировать пока не могу.
  • Не применяется класс?

    Я обычно делаю проверку, если нет такого класса, то добавляем, если нет, то убираем.
    $(function(){
      $('.menu__btn').on('click',function(){
        if(!$('.menu__list').hasClass('menu__list--active')) {$('.menu__list').addClass('.menu__list--active');}
        else {$('.menu__list').removeClass('.menu__list--active');}
      });
    });
  • Как получить значения из двух input сразу?

    imhateb
    @imhateb Автор вопроса
    Пока что больше склоняюсь к мистике.
    Консоль работает, другие значения по просьбе выводит исправно.
    Классы к инпутам лепил, и id пробовал - результат тот же. Что собственно и понятно. Он эти инпуты и так находит. Если попросить, скажем показать их ширину width() вместо val() - он показывает. Для обоих сразу. А вот val() не хочет почему-то.

    Понятное дело, что ошибка где-то у меня. У меня этот момент с полями - это кусочек достаточно обширной функции, где всё смешалось, люди, кони. Но блин, я вот уже третий час не могу найти, что может мешать такому простому действию как получение значения полей ввода.