Комментарии

Узнайте какие публикации сейчас обсуждаются.

Хотите обсудить в реальном времени? Вступайте в Discord чат.

Drupal 8: Рендер массивы и их рендеринг Niklan пт, 18/06/2021 - 10:44

Честно говоря, по меркам Drupal это говнокод.

Правильное решение - создать свой тем хук, в нём добавить разметку, а также в нём подключать библиотеку с кодом для Vue.

Если вам нужен цельный компонтент в одном файле, так вы и создавайте .vue файлы и компилируйте, а затем подключайте где надо.

Не делайте так, как вы сделали.

Drupal 8: Рендер массивы и их рендеринг Дмитрий пт, 18/06/2021 - 09:46

это очень удобно для разработки и вообще для соотвествия идеологии VUE и однофайловых компонент, конечно впоследствии можно всё перекинуть и во внешний файл хотя это будет уродливо

вот что я накопал, спасибо за наводку $form['vueblock'] = array( '#markup' => new FormattableMarkup(file_get_contents( dirname(FILE)."/../myvuefile.html"),[]), '#allowed_tags' => ['script'], );

Drupal 8: Рендер массивы и их рендеринг Niklan пт, 18/06/2021 - 07:10

Лучше так не делать! Это очень плохо. То что так можно, не означает что так нужно.

Правильно — объявить библиотеку и подключить. И никаких проблем не будет и избежите множества побочных проблем.

Drupal 8: Рендер массивы и их рендеринг Дмитрий пт, 18/06/2021 - 00:35

Подскажите пожалуйста, мучаюсь никак не могу понять, все пишут что в #markup можно запихать javascript, оно конечно работает до определённого момента, но команда if (4>3&&5<7)alert("!!!") превращается в if (4>3&&5<7)alert("!!!") что есть полный синтакс еррор это как то можно забороть?

Drupal 8: Migrate API — Source, Process, Destination Niklan чт, 17/06/2021 - 07:48

У всех файлов вроде как указаны пути где они примерно должны располагаться.

Если не указано, значит это «цитирование» или просто пример для рассмотрения. Например, примеры конкретных плагинов не имеют никаких файлов, это часть общего файла с миграцией, а в коде лишь пример использования и его синтаксиса.

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

Может я не вижу где я пропустил, но вроде все пути у всех файлов, что нужно создавать, указаны корректно.

Drupal 8: Migrate API — Source, Process, Destination Николай ср, 16/06/2021 - 11:31

Доброе время суток! Спасибо за ваши ТРУДЫ! Очень ценю, это огромная помощь начинающим разработчиками. Огромное спасибо и низкий поклон. У меня огромная к вам просьба. Вы выкладываете содержимое yaml файлов но совершенно не указываете где должен файл лежать и как он должен называться. Исправьте пожалуйста, а то такие как я дундуки не понимают:( Спасибо еще раз.

Drupal 8: #cache — cache tags, context и max-age Niklan вт, 15/06/2021 - 08:56

Привет. Да, Internal Page Cache не работает с контекстами. Это достаточно примитивный кеш, для примитивных и статичных сайтов. Деление сайта на две версии на уровне бэкенда, уже не звучит как-то примитивно.

Решения:

  1. Internal Page Cache — это мидлвара, а следовательно является сервисом. Создаём свой класс расширяющий оригинальный PageCache, и подменяем им class в сервисе мидлвары. Правим метод, отвечающий за формирование кеша так, чтобы учитывал нужные контексты. Думаю, в данном кейсе хватит слегка подкорректировать ::getCacheId() чтобы он учитывал в своём CID мобильники и ПК, а именно, добавить обозначение в $cid_parts.
  2. Написать свое решение подглядывая в Internal Page Cache.

Тут очень важно понимать, что даже дробление на мобильные \ ПК в контексте Internal Page Cache — это уже серьезная потенциальная проблема. И проблема тут в том, что данный кеш и так не лёгкий, а тут его станет х2 на ровном месте, а если есть еще деление на планшеты… На проекте с большим количеством страниц это приведёт к тому, что таблица с данным кешем будет настолько "толстой", что окажется, что без данного модуля, на одном лишь Internal Dyanamic Page Cache будет работать быстрее. Тут нужно серьёзно замерять и профайлить, предварительно разогрев весь сайт, чтобы таблица раздулась.

Как правило, если Internal Page Cache начинает не справляться и с ним что-то работает не так, то либо вы делаете что-то не так, либо ваш проект вышел за рамки данного подхода к кешированию. Как я уже написал выше, добавление к нему контекстов, может дать отрицательный эффект в сравнении с простым его отключением. Это далеко не единственный кеш в друпале.

Этот модуль не панацея, на определенных этапах и в определенных условиях, его нужно отключать.

Drupal 8: #cache — cache tags, context и max-age Константин пт, 11/06/2021 - 12:20

Всем привет. Сделал свой контекс для кеша. На главной странице меняется блок слайдера в зависимости от того с мобилки или ПК зашли на сайт. Если пользователь залогинен, то контекс отлично отрабатывает. Если аноним, то не работает. Как выяснилось, модуль "Internal Page Cache" не работает с контекстом. Он предполагает, что для анонимов страницы всегда отдаются одинаковые. Об этом написано вот тут в конце статьи https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts

Вопрос: может кто смог решить проблему кеширования для анонимов без отключения модуля "Internal Page Cache" и без использования \Drupal::service('page_cache_kill_switch')->trigger();