Задать вопрос
  • Как поставить первый элемент вторым на мобильных?

    @lagudal Автор вопроса
    VolgaVolga,
    Блин, да , точно - спасибо - меняю местами первый со вторым и order для десктопа, а для мобильных order сбрасываю.
    Так получается!
  • Как поставить первый элемент вторым на мобильных?

    @lagudal Автор вопроса
    historydev, вот так на десктопе

    64ef09088ef60593792139.png

    вот так на моб

    64ef093806fc5248003056.png

    я хочу на моб сдвинуть на один вправо, чтобы первый стал вторым - т.е. первым будет предыдущий а нужный будет стоять по центру.

    64ef09662fead708286878.png

    Пришло пока в голову только симулировать клик на прев баттон, если экран меньше заданного, но должно быть более правильное решение
  • Как еще можно добавить PHP код в посты Wordpress?

    @lagudal Автор вопроса
    Дело в том, что определенная логика должна отработать внутри поста - поясню конкретно на моем примере.
    Пост в моем случае - краткое описание вакансии, при этом сама вакансия, с полным описанием и контактной формой находится на другом сайте. На этот сайт на эту конкретную вакансию юзер переходит по ссылке, ссылка добавлена к посту как кастомное поле - form_link.
    Поскольку постов с вакансиями может быть довольно много, редактор заполняет только краткое описание вакансии и url этой ссылки. Пост вакансии шаблонизирован, разбит на блоки, один из блоков как раз эта ссылка. Вот в коде этой ссылки и прописана логика, а именно в атрибут href вызывается значение поля -

    ....href="<?php the_field('form_link'); ?>"

    Вот этот код и был добавлен в сниппет с помощью Insert PHP Code Snippet, и добавляется он именно шорткодом. Проблема в том, что с новыми версиями WP плагин этот работает корректно только если шорткод прописан в классическом редакторе чистым текстом, а в моем случае, где все вокруг шаблоны гутенберга - нужно извернуться, чтобы сработало правильно. Если я просто добавляю в шаблон абзац с шорткодом, или Reusable Block c шорткодом, php-код не отрабатывает, выводится текстом шорткод и все.

    Я сейчас нашел временный выход, но понимаю, что надо конечно на уровне темы прописать, что то вроде такого:
    Если встречается ссылка с таким то css-классом, взять значение ссылки из поля form_link и использовать его как атрибут href.
    Но с php не очень, если мои рассуждения верны, подскажите как это правильно сделать?
  • Как отравить почту на smtp от gmail?

    @lagudal Автор вопроса
    Нашел. Может, кому то еще пригодится.
    На странице безопасности действительно не видно. Даже если включена двухфакторная аутентификация.
    Идем в самый низ страницы, где написано "не нашли то, что искали?"
    И в поле поиска начинаем вводить "пароли приложений", по ходу ввода будут предложены ссылки, среди которых искомая. Жмем, вуаля. Можем создать новый пароль.
    645fbf50aa67b314405809.png
  • Посоветуете простое решение для вывода альбомов google photos?

    @lagudal Автор вопроса
    вот тут в принципе тоже решение, но я никак не пойму, как получить API альбома. Почему и причем тут glitch?
  • Посоветуете простое решение для вывода альбомов google photos?

    @lagudal Автор вопроса
    выглядит обнадеживающе, но к сожалению
    error An unexpected error occurred: "https://registry.yarnpkg.com/react-google-photos: Not found".
  • Как добавить анимацию к простой карусели React?

    @lagudal Автор вопроса
    а нет. все работает - css забыл подключить, спасибо )
  • Как добавить анимацию к простой карусели React?

    @lagudal Автор вопроса
    все глаза проглядел, почему в моем коде не работает?
    Код
    import React, { useState, useEffect, useRef } from 'react'
    import { BsChevronCompactLeft, BsChevronCompactRight, BsDot } from 'react-icons/bs'
    import Slide_1 from '../assets/slide1.jpg'
    import Slide_2 from '../assets/slide2.jpg'
    import Slide_3 from '../assets/slide3.jpg'
    import { SwitchTransition, CSSTransition } from 'react-transition-group'
    
    
    const slides = [
    
      {
        url: Slide_1
      },
      {
        url: Slide_2
      },
      {
        url: Slide_3
      },
    ];
    
    
    function Hero() {
    
      const [currentIndex, setCurrentIndex] = useState(0);
    
      const slideRef = useRef();
    
      const prevSlide = () => {
        const isFirstSlide = currentIndex === 0;
        const newIndex = isFirstSlide ? slides.length - 1 : currentIndex - 1;
        setCurrentIndex(newIndex);
      }
      const nextSlide = () => {
        const isLastSlide = currentIndex === slides.length - 1;
        const newIndex = isLastSlide ? 0 : currentIndex + 1;
        setCurrentIndex(newIndex);
      }
    
      const goToSlide = (slideIndex) => {
        setCurrentIndex(slideIndex);
      }
    
      useEffect(() => {
        const interval = setTimeout(nextSlide, 4000);
        return () => clearTimeout(interval);
      }, [currentIndex]);
    
      return (
        <div className='w-full h-auto mx-auto my-8'>
    
          <div className='w-full max-w-[1280px] h-auto mx-auto duration-500 relative group'>
            <SwitchTransition mode="out-in">
              <CSSTransition
                key={currentIndex}
                nodeRef={slideRef}
                addEndListener={done => slideRef.current.addEventListener('transitionend', done, false)}
                classNames="fade"
              >
                <div ref={slideRef}>
                  <img className='mx-auto border-gray-100 border-[10px]' src={slides[currentIndex].url} alt="" />
                </div>
              </CSSTransition>
            </SwitchTransition>
            {/* left arrow */}
            <div className='opacity-30 group-hover:opacity-100 absolute top-[50%] -translate-x-0 translaty-[-50%] left-5 text-2xl rounded-full p-2 bg-black/20 text-white cursor-pointer'>
              <BsChevronCompactLeft onClick={prevSlide} size={30} />
            </div>
    
            {/* right arrow */}
            <div className='opacity-30 group-hover:opacity-100 absolute top-[50%] -translate-x-0 translaty-[-50%] right-5 text-2xl rounded-full p-2 bg-black/20 text-white cursor-pointer'>
              <BsChevronCompactRight onClick={nextSlide} size={30} />
            </div>
          </div>
    
          <div className="flex top-4 justify-center py-2">
            {slides.map((slides, slideIndex) => (
              <div key={slideIndex} onClick={() => goToSlide(slideIndex)} className='text-2xl cursor-pointer'>
                <BsDot />
              </div>
            ))}
          </div >
        </div>
      )
    }
    
    export default Hero
  • Как правильно прописать autoplay для карусели?

    @lagudal Автор вопроса
    а не подскажете, как добавить анимации - достаточно fade-in(out) в начале / конце каждого слайда.
    Нашел вот такое вроде решение, но то ли неправильно имплементирую, то ли что, ошибка в консоли
    in.242eb634b702bd9fbbc8.hot-update.js:39 Uncaught TypeError: Cannot read properties of undefined (reading 'id')

    Как то может можно попроще сделать?
  • Как выделить селектор?

    @lagudal Автор вопроса
    понятно. Да, можно и так - но я пока сделал выборку из фрейма querySelectorAll('button') и первый элемент из массива. Чуть лаконичнее получается. Посмотрим, что будет надежнее то и буду использовать.
  • Порекомендуете фотогалерею на реакте?

    @lagudal Автор вопроса
    Владимир Коротенко,
    спасибо, смысл понятен. Повникаю на досуге. Думал, может что готовое есть например в MENR стеке или в каком нибудь headless wordpress + Next.
    Просто в общей сложности порядка 1000 фотографий, нужно вывести их в 10 разных категориях, ручками конечно прописывать не очень.
  • Порекомендуете фотогалерею на реакте?

    @lagudal Автор вопроса
    Алексей Дубровин,
    ну думал что весь массив файлов с соответствующими расширениями в директории переберется и по одному выводить.
  • Как перенести сайт с uCoz на WordPress?

    @lagudal
    Preiwer,
    Инструменты - пожалуйста: голова и руки. Или деньги.
  • Как в этом дизайне карточки сделать кнопку кликабельной?

    @lagudal Автор вопроса
    szQocks,
    напишите ответом, отмечу решением
  • GDRP и США - не пойму, какой именно регулирующий закон в Америке?

    @lagudal Автор вопроса
    Максим Федоров,
    Т.е. это единственный регламент в штатах? Я вижу например такое:
    The California Consumer Privacy Act (CCPA) is a state statute intended to enhance privacy rights and consumer protection for residents of California, United States.
    А для резидентов остальной части США он обязателен к исполнению? Или как там вообще... где находится физически фирма, где сервера, где посетитель...
  • Как реализовать скачивание svg в формате PDF на JavaScript?

    @lagudal
    а можете чуть прояснить задачу, что именно требуется. У нас просто тоже есть подобная задача, как раз на стадии выбора метода реализации.
    У нас svg создается динамически пользователем, и нужно как забрать себе, так и ему дать возможность забрать pdf. Конвертация в pdf, и уже его давать скачивать. Но как именно, пока окончательно не решено.
  • Можно как то убрать эти артефакты в slick слайдере?

    @lagudal Автор вопроса
    да, что то в css там много лишнего, спасибо, поубирал.

    теперь вот что получается - смена центрального слайда - первого на второй или второго на первый - задержка где-то в полсекунды на
    filter: none;
    .slick-current+.slick-slide.slick-active a img {
        filter: none !important;
    }

    Задача - средний слайд всегда цветной, остальные серые. Видимо как то селектор не совсем корректно задал, но как еще можно точно задать селектор среднему слайду?
  • Как правильно удалить слеши в начале и в конце?

    @lagudal Автор вопроса
    Сергей delphinpro,
    эти спаны - замаскированные ссылки, у них нет атрибутов href, но есть другой атрибут, в моем случае data-submit.
    Чисто интерес, непонятка.
    Ну вот воспроизвел ситуацию тут.
    Проблему со слешами - а именно почему их надо удалять - воспроизвести сложнее, она существует на реальном проекте - на суть что меня интересует тут это не влияет.
    Пункты меню раскрываются по клику, не по hover, После перехода по клику по любому подменю пункту добавляется класс current для корневого пункта меню. Добавил пару маскированных меню пунктов (спанов) - можно увидеть в woman - additional link-2, additional link-4.
    Сейчас как видно нужная функциональность не работает - Uncaught TypeError: Cannot read properties of undefined (reading 'replace')
    Текущий код( можно увидеть в файле uxmenuprod.js - функция markCurrent
    Для удобства.
    require(['jquery'], function ($) {
        var removeSlash = function (string) {
            return string.replace(/^\/|\/$/g, '');
        }
        const rootUrl = window.location.origin;
        var currentUrl = window.location.href;
        $('.uxnav-main-prod li a, .uxnav-main-prod li span.redir-mask').each(function () {
    
            if (removeSlash(currentUrl) === [rootUrl, removeSlash($(this).attr('href'))].join('/') || removeSlash(currentUrl) === removeSlash($(this).attr('href')) || removeSlash(currentUrl) === [rootUrl, removeSlash($(this).attr('data-submit'))].join('/')) {
                $(this).parents('li.level0.category-item').addClass('current');
            }
        })
    })


    НО если убрать replace - то можно просто в консоли убедиться, что все работает.
    require(['jquery'], function ($) {
        const rootUrl = window.location.origin;
        var currentUrl = window.location.href;
        $('.uxnav-main-prod li a, .uxnav-main-prod li span.redir-mask').each(function () {
    
            if (currentUrl === [rootUrl, $(this).attr('href')].join('/') || currentUrl === $(this).attr('href') || currentUrl === [rootUrl, $(this).attr('data-submit')].join('/')) {
                $(this).parents('li.level0.category-item').addClass('current');
            }
        })
    })

    Если же мне действительно нужна эта замена (а она мне обязательно нужна) то работает только если выбираю из 2 циклов, например:

    require(['jquery'], function ($) {
        var removeSlash = function (string) {
            return string.replace(/^\/|\/$/g, '');
        }
        const rootUrl = window.location.origin;
        var currentUrl = window.location.href;
        $('.uxnav-main-prod li a').each(function () {
    
            if (removeSlash(currentUrl) === [rootUrl, removeSlash($(this).attr('href'))].join('/') || removeSlash(currentUrl) === removeSlash($(this).attr('href'))) {
                $(this).parents('li.level0.category-item').addClass('current');
            }
        })
        $('.uxnav-main-prod li span.redir-mask').each(function () {
    
            if (removeSlash(currentUrl) === [rootUrl, removeSlash($(this).attr('data-submit'))].join('/')) {
                $(this).parents('li.level0.category-item').addClass('current');
            }
        })
    })


    В принципе ладно, просто удлиняет код.
  • Как правильно удалить слеши в начале и в конце?

    @lagudal Автор вопроса
    Сергей delphinpro,
    да вы правы, ошибка не в этом была. У меня на самом деле 2 селектора, я их оба в одном цикле перебирал. Оттуда и ошибочная запятая )
    И вот тут ошибка -- если так делаю
    $('.uxnav li a , .uxnav li span.redir-mask').each(function () {
    .... тут код с заменой и функционалом...
    }

    то вот ошибка c undefined replace
    Если 2 отдельных цикла то без проблем.
    Причем, если нет этой замены, то нет и ошибки, поскольку нет replace.