• Как транслитировать на кириллицу динамический маршрут в NEXT JS?

    @cazumbra Автор вопроса
    Огромное количество ответов. Видимо криво задан вопрос))) Поковырялся тут и вроде что-то нашел) Если в файле [tag].js прописать функции getStaticPAths вот так:

    export async function getStaticPaths() {
        const posts = getAllPosts();
        const tags = new Set(posts.flatMap((post) => post.tags));
    
        return {
            paths: [...tags].map((tag) => {
                return {
                    params: {
                        tag:  _.kebabCase( transliterate( tag ) )
                    }
                }
            }),
            fallback: false,
        };
    }


    то все вроде работает, то есть создается страница с обработанным тегом (с латиницей вместо кириллицы и дефисами между словами), но теперь получается обратный эффект - nextjs ищет именно этот тег в моем фронтметтере ( у статьи написан тег "мощный код" , а фильтрация идет по "moschnyi-kod"). Страница с тегом теперь показывается, но без статей, хоть и не 404. Что теперь хз...
    Ответ написан
    Комментировать
  • Как изменить title и description на определенных страницах DLE?

    @cazumbra Автор вопроса
    Спасибо alexalexes . В общем не ахти документация какая-то у DLE. Отыскал то что нужно. Все по мета-тегам из engine.php удалил, нашел главный макет main.tpl и вставил в нем между тэгами head конструкцию типа
    [static=uslugi] здесь метатеги для страницы услуг [/static]
    
    [static=about] здесь метатеги для страницы о нас [/static]
    
    [available=main] здесь метатеги для страницы главной [/available]


    Соответственно в static указывается слаг статичной страницы. Работает и это главное)
    Ответ написан
  • Почему пропадает параллакс у картинки при использовании свойства transform?

    @cazumbra Автор вопроса
    Короче, может есть еще шизики кроме меня, но я нашел в чем проблема. Что в Гугл Хром, что в Файрфокс наблюдается баг, при котором если задать элементу transform через css, то будут проблемы с позиционированием его на странице. В огнелисе элемент растянется, но пропадет параллакс эффект (заданный свойством background-attachment: fixed; ), а в хроме картинка сместится в сторону на половину страницы. Победить эту ситуацию можно если обернуть растянутый блок в див. Чтобы этого в ручную не делать, можно вставить вот такую конструкцию в functions.php

    function zm_wrap_alignment( $block_content, $block ) {
    	if ( isset( $block['attrs']['align'] ) && in_array( $block['attrs']['align'], array( 'wide', 'full' ) ) ) {
    		$block_content = sprintf(
    			'<div class="%1$s">%2$s</div>',
    			'align-wrap align-wrap-' . esc_attr( $block['attrs']['align'] ),
    			$block_content
    		);
    	}
    	return $block_content;
    }
    add_filter( 'render_block', 'zm_wrap_alignment', 10, 2 );


    Тогда все блоки в Гутенберге, которые поддерживают свойства alignwide и alignfull встанут внутри дива align-wrap. Дальше мы задаем css свойства

    .align-wrap {
    	width: 100vw;
    	margin-left: calc(50% - 50vw);
    }
    
    .align-wrap .alignfull {
    	width: 1280px;
    	max-width: 100%;
    	margin: 0 auto;
    }


    При этом, если ширина блока .align-wrap .alignfull неизвестна, то можно также как я использовать скрипт подгона ширины одного элемента под другой (в моем вопросе выше это есть)

    function resize() {
        $('.alignfull').width($('.overlay').width() - 1)
    }
    resize();
    $( window ).resize(function() {
        resize()
    });


    Теперь и параллакс и нормальное выравнивание будет работать и в Гугле и в Мозилле. Такая штука подойдет тем, у кого контент сайта находится внутри бокса, то есть ограничен рамками, которые отступают от границ viewbox.
    Ответ написан
    Комментировать
  • Почему не закрывается окно при клике вне элемента?

    @cazumbra Автор вопроса
    Сделал вот так

    $(document).on('click', function(event) { 
    if (!$(event.target).closest('#mc_embed_signup').length) {    
      $('.subscribe').slideToggle('hide');
      }
      $body.removeClass('subscribe-fullscreen');
        event.preventDefault();
        event.stopPropagation();
    });
    
    $('.subscribe-open').on ('click', function(event) { 
       $body.addClass('subscribe-fullscreen');
      $('.subscribe').slideToggle('show');
      event.preventDefault();
      event.stopPropagation();
    });


    вроде ок, только теперь окно открывается по нажатию на любое место на сайте...
    Ответ написан
    Комментировать