marassa: Блог

Главные вкладки

Безопасно ли снести модуль Libraries API?

10 апреля в 12:01

Когда-то давно ставил модуль Libraries API, явно не по своему желанию, а потому что какой-то нужный контрибный модуль его требовал. С тех пор прошли годы. Насколько я понимаю, на сегодня функциональность этого модуля полностью перекрывается композером, если только вдруг какой-нибудь старообрядческий модуль не использует Libraries API в явном виде. Ни один из установленных модулей в сегодняшних версиях не признается что требует Libraries API (что конечно не означает, что кто-то не может им пользоваться втихую :).

Как избавиться от зависимости? (от модуля ctools :)

6 июня 2023 в 20:32

Решил снести тяжелый модуль ctools, которым вроде бы в трезвом уме не пользовался. Он был нужен для модуля Cloudflare, но после сноса последнего стал не нужен (казалось бы).
Никаких жестких зависимостей других модулей от ctools нет.
Пытаюсь деинсталлировать ctools и вижу следующее:

Ищу надежный универсальный хостинг

19 февраля 2023 в 22:13

Есть ли у кого-нибудь реальный опыт работы с надежным хостингом, который предоставлял бы одновременно и shared хостинг для Друпала и мелкие vps для vpn и некоторых других вещей? Сервера должны быть не в РФ. Оплата рублями из РФ не обязательна, можно и зарубежной картой. Не обязан быть самым дешевым, но и не "от $160 в месяц" )

Престранный баг после обновления модуля VBO с 8.x-3.13 до 4.1.2

14 апреля 2022 в 16:43

Обновил (композером) модуль. Теперь на странице Content всегда вижу такое:

При этом никаких видимых глазу выбранных/отмеченных записей нет. Если кликнуть на "Select/deselect all results", выбирает все и показывает их правильное количество (не плюс один), если кликнуть еще раз или на Clear, опять показывает загадочный 1 item.
update.php запускал, кэш чистил, из сессии выходил и снова входил.

С переходом на 9.3 везде отвалился autocomplete

30 декабря 2021 в 22:09

Перешел на 9.3 (с 8.9). Уже слегка задолбался отлавливать мелкие не сразу заметные баги, но большинство вылечилось имеющимися патчами.

Вопрос к гуру ООП

25 декабря 2021 в 13:49

Давно-давно написал восьмерочную версию модуля KML. Большую часть "ООП-обвязки" просто скопипастил оттуда и отсюда, не всегда на 100% понимая что делаю, но модуль работает у меня и еще нескольких десятков человек Wink

После апдейта на 8.9.16 у всех input'ов появился tabindex=-1

4 июня 2021 в 10:45

Нечасто пользуюсь клавиатурной навигацией в формах, но тут заметил, что при нажатии на tab курсор перепрыгивает не на следующее поле, а хз куда. Глянул в код - у всех инпутов стоит tabindex=-1. Раньше этого точно не было.
Что делал в последнее время - обновлял ядро с 8.9.13 на 8.9.16 и целую кучу контрибных модулей.
Что бы это значило? Гугл не даёт лёгкого ответа.

Каким образом композер определяет установленные версии модулей?

23 мая 2021 в 19:11

Верит info.yml или реально сличает все файлы с дистрибутивом модуля?
Я к чему спрашиваю: у меня несколько контрибных модулей существенно доработаны, настолько существенно, что нет смысла генерить патчи. Если я залочу их версии в composer.json, я могу быть спокоен, что композер их не будет трогать, или он, как только я отвернусь, затрёт все мои правки дистрибутивами соответствующих версий?

Нода спокойно сохраняется с пустым required multi-value полем

12 мая 2021 в 18:25

Есть content type с полем image. Оно было и есть required. Раньше оно было single value, и сохранить ноду с пустым полем image было невозможно: выдавалась стандартная ошибка Друпал типа "поле должно иметь значение". Какое-то время назад я изменил allowed number of values в field settings с 1 на 24. Теперь почему-то при сохранении ноды с незаполненным полем image никакой ошибки не выдаётся, и спокойно сохраняется нода с пустым обязательным полем. При этом поле в форме снабжено красной звёздочкой как обязательное, как и раньше.

Галка "согласен с правилами" в форме добавления материала

18 марта 2021 в 19:19

Как вы решаете подобную задачу в восьмерке?
В форме добавления некоего типа материала (желательно, чтобы только при добавлении, но не при редактировании) должен быть чекбокс с описанием правил игры, без галки в котором материал не должен сохраняться.
На первый раз для каждого пользователя чекбокс изначально должен быть off (т.е. пользователь должен в явном виде сам проставить галку), в последующем для данного пользователя галка должна быть по умолчанию проставлена.

Devel Debug Log записал в свою таблицу что-то настолько ужасное, что...

16 февраля 2021 в 13:31

она теперь не открывается даже в phpMyAdmin ;)))

Клонирование сущностей в hook_entity_presave()

11 февраля 2021 в 17:58

Прошу совета у более опытных товарищей.
Что нужно: загружать по несколько картинок одним махом.
Почему сложно: каждая картинка хранится в отдельной ноде (специальный тип материала), вместе с ней хранятся всевозможные ее атрибуты - теги, дата съемки из EXIFа, копирайт, ссылка(и) на объект(ы), к которым относится картинка и т.п. Если бы делал сейчас, наверное попробовал бы сделать картинку не нодой, а медиа-сущностью, но уж сделано как сделано - что ж теперь об этом.

А как нынче модно создавать кастомные токенизированные поля?

6 февраля 2021 в 17:35

Юзкейс: в типе материала имеются три поля: street address (дом и улица, просто текст), city и country (эти два ER на соответствующие справочники). В куче мест нужно вывести полный адрес в формате "street address, city, country", как на страницах нод, так и в разнообразных views. Сейчас это реализовано довольно бардачно: где-то вручную выводятся отдельные поля (а потом секс с css чтоб они были на одной строке и с запятыми между ними), а где-то используется token field от Display Suite. Token field в Display Suite прекрасно работает на страницах нод, но views его не видит.

Установка отдельного пакета с помощью composer

1 февраля 2021 в 9:50

Имеется сайт на восьмерке, который пока не ведется в композере (ну так вышло, виноват, сейчас не об этом). Позарез нужно поставить один компонент, который корректно ставится только композером (autoupload, PSR-4 и т.д.). Сам композер есть (от хостера), composer.json тоже какой-то есть (из дистрибутива, не соответствует реальной конфигурации).
Вопрос: если я тихонечко запущу

Хранение мультимедиа на отдельном специализированном хостинге

23 января 2021 в 8:34

Трафик сайта стал стабильно превышать 50 ГБ в месяц, что у ра-дона сто́ит 1300 рублей. Сумма не то чтобы напрягает, но заставляет задуматься об оптимизации.
90% трафика составляют jpg-файлы, то есть по факту проходит мимо друпала. Суммарный объем jpg-файлов на сервере порядка 20-25 ГБ.
Возникла мысль проработать хранение всей этой мультимедии не на ра-доне, а на некоем отдельном хостинге, на мультимедию заточенном.

CKEditor, inline-картинки и FileField Sources: что, правда никак?

19 января 2021 в 13:24

Впервые в жизни плотно столкнулся с CKEditor Wink

При вставке картинки предлагается загрузить ее строго с локального диска, по внешней ссылке никак. При работе с обычными полями типа Image очень помогает модуль FileField Sources, но тут он, похоже, не помогает: https://www.drupal.org/project/filefield_sources/issues/3081777

Чё, серьёзно? А как же быть?

Сто́ит ли делать форум на Друпале 8/9?

16 января 2021 в 15:56

Жена с группой единомышленниц, задумавших уйти с некоего популярного в узких кругах тематического форума в связи с несогласием с политикой его хозяев, просят сделать им новый форум. Это не форум как приложение к некоему сайту, а именно новый сайт, на котором кроме форума ничего (пока) и не планируется. Язык исключительно русский, пользователи - тётки, далёкие от IT, функциональность - ну обычная для форума - картинки, цитирование, модерация, поиск и т.п.

Откуда Яндекс мог узнать адрес вьюхи, которую я открыл для экспериментов на пару дней?

31 августа 2020 в 17:44

Тут довольно часто люди спрашивают как удалить из Гугла/Яндекса кучу "несуществующих" страниц, которые каким-то образом оказались в поисковых базах. На это всегда следует ответ, что Гугл и Яндекс адресов никогда не выдумывают, а могут их взять только с существующих страниц. И как правило в каждом конкретном случае находится вполне рациональное объяснение тому, откуда и как эти мусорные страницы появились в базах поисковых систем.

Переход к следующей/предыдущей ноде свайпом

24 августа 2020 в 12:47

Есть такой замечательный модуль - Entity Pager. Он позволяет со страницы ноды одним кликом перейти на "следующую" и "предыдущую" ноду. Естественно, из контекста должно быть интуитивно понятно, что такое "следующая" и "предыдущая" нода, иначе смысла нет. Порядок нод задается через специальное view. Давно использую этот модуль в десктопной версии, переход осуществляется стрелочками влево-вправо.

Почему может не загружаться конфигурация вьюшки с прода на дев?

9 августа 2020 в 17:22

Имеются два сайта - прод и дев, версия ядра идентична: 8.8.5. Некоторое время назад экспортировал какие-то изменившиеся блоки и вьюхи с дева и успешно импортировал их в прод.

А как вы формируете мобильное меню, что под гамбургером?

17 июля 2020 в 11:58

В десктопной версии есть сразу несколько отдельных меню, раскиданных по разным углам страницы:
- Main navigation
- User account menu
- Language switcher
- Footer

Как работать с брейкпойнтами в Drupal 8?

22 июня 2020 в 11:43

Наконец-то созрел сделать для сайта мобильную версию с раскладкой, отличающейся от десктопной. Вроде придумал как оно должно выглядеть, осталась сущая ерунда - реализовать.
Нужно спрятать пяток блоков если ширина вьюпорта меньше определенного порога и наоборот показать пару блоков, спрятанных в десктопной версии. Также нужно слегка менять главный шаблон страницы в зависимости от брейкпойнта.

Посоветуйте нормальный хостинг для почты

20 июня 2020 в 10:40

Офф, конечно, но описание форума говорит "применительно к размещению Drupal и не только", так что может быть ничего? Wink
Волею судеб давным давно имею маленький хостинг на reg.ru, от которого фактически пользуюсь только почтой. Ну и там же зарегены все мои домены, что удобно.

Обновление до 8.8 + переход на composer: совет нужен

9 апреля 2020 в 10:32

Прошу совета опытных по наилучшему порядку действий.

Идеологический вопрос про search index'ы

15 февраля 2020 в 15:22

Разбираюсь с Search API.
Цель: сделать человеческий поиск по сайту с осмысленными подсказками в поле поиска и красивыми результатами (список, фотогалерея, карта).
Получается нужно сделать четыре разных вьюхи для результатов (autocomplete callback, список, фотогалерея и карта). Вьюхи, само собой, достаточно разные, хотя в чем-то пересекаются. А вот как идеологически правильно разобраться с индексами, у меня нет полного понимания.