Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 102 комментария

Алексей Шумаев
Алексей Шумаев
Артур Шевченко
Артур Шевченко
А ещё говорят я компоненты не для новичков пишу))) Вот где хардкор, хотя очень интересно, надеюсь в этом году будет время попробовать.

Есть в планах написать документацию?
Дмитрий Середюк
Дмитрий Середюк
А примерно понял что имели ввиду, можно сделать как то так

<!-- above-the-fold:start -->
    <header class="site-header">
        <div class="logo-wrapper">
            <img src="logo.svg" alt="Логотип" class="logo">
        </div>
        <nav class="main-nav">
            <a href="#" class="nav-link active">Главная</a>
            <a href="#" class="nav-link">Контакты</a>
        </nav>
    </header>

    <section class="hero-slider js-slider">
        <div class="slide">Слайд 1</div>
        <div class="slide">Слайд 2</div>
    </section>
<!-- above-the-fold:end -->

Обрамляем нужные элементы маркерами

Далее парсим всем классы, индификаторы, теги. Ищем их в файле стилей и формируем.
Но есть конечно же нюансы если к примеру используется какие либо js библиотеки по типу того же swiper slider которые после рендора внедряют свои классы элементам то это не сработает, в общем нужно обмозговать это дело, возможно что то и выкачу позже.
Дмитрий Середюк
Дмитрий Середюк
Не совсем понимаю что имеете ввиду, но у себя я делаю так
Использую migx в админке выглядит вот
так
и на каждую секцию генерирую свой css
Далее в head прохожусь только по текущим секциям страницы собираю объект path, который в свою очередь передаю в MinifyX

{set $rows = json_decode($_modx->resource.id | resource : 'multiMigx', true)}
{if $rows}
    {set $arrDouble=[]}
    {set $path=[]}
    {foreach $rows as $row}
      {if $row.MIGX_formname | in : $arrDouble}{continue}{/if}
      {set $arrDouble[] = $row.MIGX_formname}
      {if $row.MIGX_formname != 'default' && $row.MIGX_formname != 'code'}
        {set $path[] = ('project_path' | config)~'css/modules/'~$row.MIGX_formname~'.min.css'}
      {/if}
    {/foreach}
{/if}

{'!MinifyX' | snippet : [
    'minifyCss' => 1,
    'cssSources' => ($path | join : ','),
]}

Для страниц где не используется migx просто добавляю по условию на нужные страницы

{if $_modx->resource.id === 245}
    {set $path=[
      ('project_path' | config)~'css/modules/cart.min.css',
      ('project_path' | config)~'css/modules/order.min.css',
    ]}
{/if}

В общем суть я думаю ясна
Дмитрий Середюк
Дмитрий Середюк
Ivan
Ivan
Наверно было бы круто если бы можно было первый экран страницы обрамить маркером, например

И сделать проверку всех тегов и классов которые есть в этой области в html коде и чтобы плагин подключил в head из основного файла стилей, в все стили для всех тегов и классов которые ему встретились. А все остальные подключения стилей можно было бы разместить перед . Тогда бы у пользователя который заходит первый раз первый экран загрузился бы максимально быстро, а остальные стили уже чут позже.
Артур Шевченко
Артур Шевченко
По-моему как раз когда икоки индивидуальные самое то делать через migx, так как там можно задавать любую конфигурацию полей, в том числе сделать отдельное поле для иконки. А то что импорт из файла это вообще прекрасно, плагином собрал данные в нужный формат и записал в migx. И работало бы всё автоматически, а не как сейчас.
Олег
Олег
Делать через MigX не вариант т.к. иконки идут индивидуальными для каждого товара (а товаров много и импортируются они из файла, а не вручную)
Добавлять каждому товару поле «показывать блок или нет» тоже не вариант. Надо, чтобы все автоматом работало.
Написал сниппет:
if ($ozon!='' and $wb!='' and ...){
echo '...';
}
Вопрос задавал в надежде узнать, что можно какими-то стандартными модификаторами сделать сложный запрос на несколько проверок