Иногда кнопки на сайте содержат очень разный по длине текст. С коротким текстом всё просто: он помещается в одну строку и выглядит аккуратно. Но как только текст становится длиннее, приходится переносить его на две строки. Проблема в том, что при автоматическом переносе строки получаются неравномерными: в первой может влезть почти вся фраза, а одно слова оказаться во второй строке.
Читать далее »Все записи категории ‘Программирование’
Как удалить дубликаты из таблицы в MySQL
Под дублями можно иметь в виду разные условия. Возьмем как пример таблицу имен. В этой таблице есть повторяющиеся значения в поле name
. Разберём практический способ удалить такие записи в MySQL с помощью одного SQL-запроса.
Drupal: как получить список target_id из ссылочного поля без перебора массива
При работе с сущностями в Drupal нередко возникает задача: из ссылочного поля (entity reference
) нужно достать список ID связанных объектов.
Скрипт для рекурсивной распаковки
Столкнулся с задачей на практике — в архиве tar.gz лежит еще один архив, в котором еще один и так далее… Как с кощеевым яйцом, только цепочка в матрешке куда более длинная.
Читать далее »Как в шаблоне параграфа получить заголовок родительской ноды
Иногда возникает задача: в Twig-шаблоне параграфа (paragraph.html.twig
) нужно отобразить заголовок материала (ноды), к которому этот параграф прикреплён.
Drupal: возврат страницы из контроллера с установкой cookie и использованием шаблона темы
В Drupal контроллеры чаще всего возвращают Renderable
-массивы. Такие массивы автоматически проходят через систему рендеринга и подставляются в базовый шаблон темы (page.html.twig
). Но иногда бывает нужно получить полный Response
с темизацией вручную — например, когда дополнительно требуется работать с заголовками, cookie или особыми параметрами ответа.
GIT: перестать отслеживать файл или папку
Иногда в процессе разработки возникает ситуация, когда файл или целая директория уже добавлены в репозиторий, но их больше не нужно отслеживать. Например:
- вы по ошибке закоммитили файлы логов или временные данные;
- в проекте появилась папка с кэшем;
- какие-то данные должны оставаться только локально (например, настройки IDE).
Как полностью удалить поле в Drupal, если оно «зависло» в хранилище полей
Иногда в Drupal возникает ситуация: вы удаляете поле с типов сущностей (bundle), но оно не исчезает полностью из системы. UI говорит, что поле «используется», хотя на самом деле ни одна сущность его не использует. В этом случае поле остаётся в конфигурации как FieldStorageConfig
.
Разберёмся, как удалить такое «висящее» поле.
Читать далее »Подключение к GitHub по SSH: пошаговая инструкция
Работа с репозиториями через SSH удобнее и безопаснее, чем по HTTPS — вам не нужно вводить пароль при каждом пуше, а авторизация выполняется с помощью криптографических ключей. Разберём процесс полностью: от создания ключа до проверки подключения.
Читать далее »Анимация прокрутки в CSS: animation-timeline: scroll()
Ещё недавно для прогресс-бара чтения на сайте приходилось подключать JavaScript: отслеживать событие scroll
, вычислять процент прокрутки и менять ширину элемента. Теперь это можно сделать чисто на CSS, благодаря новой возможности — Scroll-driven animations.