Задать вопрос
  • Как реализовать вертикально-горизонтальный скролл на JS?

    @AlexWD
    Sergey Subbotin, Не очень понятно что именно Вы подразумеваете под "Лаконичное решение".
    Варианта два, либо использование библиотек, либо можете написать сами с нуля.
  • Как добавить кастомный плейсхолдер в hook FormIt?

    @AlexWD Автор вопроса
    Не. Как ответ могу только "Ответ" пометить, а комментарии лайкать)
  • Как добавить кастомный плейсхолдер в hook FormIt?

    @AlexWD Автор вопроса
    Антон Тарасов, Сформируйте ответ, помечу галочкой. Ваше решение верное, дальше уже надо разбираться с каталогом, это вне этой темы.
  • Как добавить кастомный плейсхолдер в hook FormIt?

    @AlexWD Автор вопроса
    AlexWD, Добавил в fileOrder текст. Отправился на почту. Видимо проблема действительно с чтением каталога. Любопытно что до этого он работал. Надо понять теперь откуда директория в сниппете читается что-бы правильно попасть в папку.
  • Как добавить кастомный плейсхолдер в hook FormIt?

    @AlexWD Автор вопроса
    Антон Тарасов, результат не изменился. В журнале ошибок появились такие косяки:
    [2021-07-18 16:26:58] (ERROR @ /home/cmtaru/public_html/core/cache/includes/elements/modsnippet/53.include.cache.php : 5) PHP warning: opendir(prices): failed to open dir: No such file or directory
    [2021-07-18 16:26:58] (ERROR @ /home/cmtaru/public_html/core/cache/includes/elements/modsnippet/53.include.cache.php : 20) PHP warning: implode(): Invalid arguments passed

    Не понимаю почему он говорит, что директория пустая. Если я использую этот сниппет в preloaderHook, файлы оттуда выводятся без проблем.
    implode() пока убрал и оставил так:
    $fields = $hook->getValues();
    
    $dir = 'prices';
    if ( $handle = opendir( $dir ) )
    {
        while ( $file = readdir($handle) )
        {
         for ($i=0; $i<count($file); $i++)
            if(($file != '.') && ($file != '..') && ($file[0] != '.')) {
                $file = mb_convert_encoding($file, "utf-8", "windows-1251");
                $file = '<br /><a href="https://.../prices/'.$file.'">'.$file.'</a>';
                $fileOrder[] = $file;
            }
        };
        closedir( $handle );
    };
    
    // $hook->setValue('fileOrder', $fileOrder);
    $fields['fileOrder'] = $fileOrder;
    
    $message = $modx->getChunk('tpl.mail.price', $fields);
     
    $modx->getService('mail', 'mail.modPHPMailer');
    $modx->mail->set(modMail::MAIL_BODY, $message);
    $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
    $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
    $modx->mail->set(modMail::MAIL_SUBJECT, 'Прайс-лист');
    $modx->mail->address('to', $fields['email']);
    $modx->mail->address('reply-to', $modx->getOption('emailsender'));
    $modx->mail->setHTML(true);
    
    if (!$modx->mail->send()) {
      $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
    }
    
    $modx->mail->reset();
    
    return true;
  • Как добавить кастомный плейсхолдер в hook FormIt?

    @AlexWD Автор вопроса
    Антон Тарасов, Если я правильно понял, решение должно выглядеть так:
    <?php
    $fields = $hook->getValues();
    
    $dir = 'prices';
    if ( $handle = opendir( $dir ) )
    {
        while ( $file = readdir($handle) )
        {
         for ($i=0; $i<count($file); $i++)
            if(($file != '.') && ($file != '..') && ($file[0] != '.')) {
                $file = mb_convert_encoding($file, "utf-8", "windows-1251");
                $file = '<br /><a href="https://.../prices/'.$file.'">'.$file.'</a>';
                $fileOrder[] = $file;
            }
        };
        closedir( $handle );
    };
    
    $hook->setValue('fileOrder', $fileOrder);
    
    $message = $modx->getChunk('tpl.mail.price', $fields);
     
    $modx->getService('mail', 'mail.modPHPMailer');
    $modx->mail->set(modMail::MAIL_BODY, $message);
    $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
    $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
    $modx->mail->set(modMail::MAIL_SUBJECT, 'Прайс-лист');
    $modx->mail->address('to', $fields['email']);
    $modx->mail->address('reply-to', $modx->getOption('emailsender'));
    $modx->mail->setHTML(true);
    
    if (!$modx->mail->send()) {
      $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
    }
    
    $modx->mail->reset();
    
    return true;

    Но к сожалению это не помогло.
  • Не получается решить задачу?

    @AlexWD Автор вопроса
    Денис Загаевский, Не похоже на ответ на вопрос...
  • Не получается решить задачу?

    @AlexWD Автор вопроса
    Вот по этому был задан вопрос. Я не знаю Java, потому пришёл на этот форум. Откуда что должно приходить для меня загадка.
    Про += просто проверял там кусок кода.
  • Как сделать переход на первую вкладку при смене табов?

    @AlexWD Автор вопроса
    'ul.tabs__nav > li:first', $item почему-то не стал работать, но я просто на первую вкладку добавил класс и вписал его на это место. Заработало. Спасибо!
  • Как сделать анимацию текста при смене слайда Swiper?

    @AlexWD Автор вопроса
    Антон Литвиненко, Напишите как ответ, пусть он и не является точными скриптами, но Вы указали куда копать, плюс ко всему я изучил новые возможности анимаций CSS. Однозначно лайк. Спасибо огромное.
  • Как сделать активный слайд Swiper по текстовому анкору?

    @AlexWD Автор вопроса
    Юрий, Опечатка.
    Даже при переходе правильном #slide2 не открывается третий слайдер(если учитывать что массив с 0).
    Просто грузит страницу основную.

    var galleryThumbs = new Swiper('.gallery-thumbs', {
        spaceBetween: 10,
        slidesPerView: 4,
        freeMode: true,
        watchSlidesVisibility: true,
        watchSlidesProgress: true,
      });
      var galleryTop = new Swiper('.gallery-top', {
        pagination: {
          el: '.top-pagination',
          type: 'fraction',
        },
        spaceBetween: 10,
        navigation: {
          nextEl: '.swiper-button-next-top',
          prevEl: '.swiper-button-prev-top',
        },
        thumbs: {
          swiper: galleryThumbs
        }
      });
                galleryTop.on('init', function () {
                  if (window.location.hash) {
                    const hash = window.location.hash
                    const slideIndex = parseInt(hash.replace('#slide', ''), 10)
                    galleryTop.slideTo(slideIndex) // либо slideToLoop, если у вас включен loop
                  }
                });
                
                galleryTop.on('slideChange', function () {
                  window.location.hash = `#slide${galleryTop.activeIndex}` // либо realIndex, если включен loop
                });


    Если нужны ссылки не с номерами слайдов, а с какими-то текстовыми идентификаторами, сделайте с ними массив и по нему находите нужный индекс слайда в свайпере, делов-то.

    Не подскажете как это реализовать? В JS ноль полный...
  • Как сделать активный слайд Swiper по текстовому анкору?

    @AlexWD Автор вопроса
    #slide1, #slide2 - это примеры. Вместо них нужно прописать реальные названия по типу "#home", "#garage" и т.п.

    И при смене слайдов он мне назначает #slide1 и т.д., но если переходить по ссылке site.ru/slide#2, он всё равно грузит страницу начиная с нулевого