<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Category RSS</title>
        <link>https://graker.ru</link>
        <description></description>
        <atom:link href="https://graker.ru/drupal/rss.xml" rel="self" type="application/rss+xml" />
                <item>
            <title>Критичное обновление безопасности в Drupal</title>
            <link>https://graker.ru/news/2026/05/19/drupal-highly-critical-update</link>
            <guid>https://graker.ru/news/2026/05/19/drupal-highly-critical-update</guid>
            <pubDate>Tue, 19 May 2026 21:05:00 +0300</pubDate>
            <description>Как понять, что у какого-то проекта клёвая инфраструктура?
Ты прочитал письмо в рассылке, что у проекта через несколько дней выйдет обновление безопасности. Добавил в календарь, чтоб не забыть обновить всё и всех. Потом получил письмо СРОЧНО ВАЖНО от одного хостера. Потом от другого и третьего. Всё про это обновление безопасности.
Потом прочитал напоминание в тематическом телеграм-канале. Потом ожили коллеги в джире, каждый тоже написал о будущем обновлении. Вслед за коллегами ожили клиенты: они тоже получили уведомления от своих хостеров и теперь переживают. В общем ВСЕ уже знают, что у Друпа...</description>
        </item>
                <item>
            <title>Как мы обновляем Drupal</title>
            <link>https://graker.ru/news/2026/02/08/how-we-do-drupal-updates</link>
            <guid>https://graker.ru/news/2026/02/08/how-we-do-drupal-updates</guid>
            <pubDate>Sun, 08 Feb 2026 09:30:00 +0300</pubDate>
            <description>&lt;p&gt;Год назад, в январе, окончательно наступил конец жизненного цикла Drupal 7. Однако заявки на обновление с «семерки» до актуальной версии появляются до сих пор. Как и в целом заявки на обновление Друпала. В связи с чем небольшой ликбез о том, как мы обновляем Drupal и&lt;/p&gt;
&lt;h4&gt;Зачем вообще что-то обновлять&lt;/h4&gt;
&lt;p&gt;Основных причин обновлять Drupal, как и другую CMS, как и программное обеспечение в общем, три:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Новый функционал. Разработчики добавили, выпустили обновления. Мы обновили, получили новые штучки.&lt;/li&gt;
&lt;li&gt;Исправление ошибок — программ без них, как известно, не бывает. Разработчики нашли баг, исправили, выпустили обновление. Мы обновили, получили более стабильное ПО.&lt;/li&gt;
&lt;li&gt;Обновления безопасности. В программах, с которыми можно работать через Интернет, регулярно находят уязвимости, то есть потенциальные точки взлома. Уязвимости бывают разными, одни позволяют увидеть информацию, к которой доступ ограничен, другие позволяют подготовить покражу пароля у пользователя, третьи — получить полный контроль над программой или вообще над сервером.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;И если без пунктов 1 и 2 в принципе можно жить, то пренебрегать обновлениями безопасности не следует. Дело в том, что сайты взламывают не только в кино, и не только какие-нибудь крупные, или известные. Со временем к найденным в ПО уязвимостям пишут сканеры и эксплойты — программы, которые автоматически находят сайты с незакрытыми уязвимостями и автоматически же их взламывают. А взломщику достаточно просто запустить эту программу — и вот у него уже доступ к вам на сервер.&lt;/p&gt;</description>
        </item>
                <item>
            <title>Играюсь в Drupal Canvas</title>
            <link>https://graker.ru/news/2026/01/27/playing-with-drupal-canvas</link>
            <guid>https://graker.ru/news/2026/01/27/playing-with-drupal-canvas</guid>
            <pubDate>Tue, 27 Jan 2026 19:15:00 +0300</pubDate>
            <description>Играюсь с Canvas, новым визуальным конструктором страниц под Drupal, первая версия которого вышла в декабре. Вскоре должна получиться статья на тему, а может даже и видео — не решил еще. 
Пока вкратце:
— прикольно;
— польза от компонентной верстки / SDC / сторибуков и этого всего — возросла;
— интеграция с остальной инфраструктурой Дру пока невысока;
— есть конечно немного багов.</description>
        </item>
                <item>
            <title>Happy birthday Drupal!</title>
            <link>https://graker.ru/news/2026/01/15/happy-birthday-drupal</link>
            <guid>https://graker.ru/news/2026/01/15/happy-birthday-drupal</guid>
            <pubDate>Thu, 15 Jan 2026 23:25:00 +0300</pubDate>
            <description>Официальный сайт внезапно сообщил, что сегодня Друпалу стукнуло 25 лет! И это отличный повод предаться старческому ворчанию воспоминаниям.
Сам я прикоснулся к прекрасному примерно 20 лет назад. Трудился я тогда в микроэлектронике, зарплаты были небольшими, зато платили их довольно нестабильно. И все ребята искали способов подзаработать. Кто-то увольнялся в коммерческую разработку, кто-то открывал параллельно малую торговлю. 
Ну а я полез на веблансер искать заказы. Благо задержки зарплаты в несколько месяцев и работа рядом с домом позволяли иметь весьма свободный график. И там, на веблансере,...</description>
        </item>
                <item>
            <title>Друпал жыв!</title>
            <link>https://graker.ru/news/2025/12/12/drupal-lives</link>
            <guid>https://graker.ru/news/2025/12/12/drupal-lives</guid>
            <pubDate>Fri, 12 Dec 2025 14:10:00 +0300</pubDate>
            <description>В ходе нетворкинга общаюсь с разными людьми, тоже связанными с веб-разработкой. И конечно часто упоминаю Drupal, раз уж последние 20 лет чаще всего работаю с ним.  
И довольно часто слышу в ответ что-то вроде: «Друпал? А он что, еще жив?»  
Понять можно. Если человек сталкивался с ним когда-то давно, в начале 10х годов например, и тогда показалось что он не очень актуален, то сегодня-то тем более. Тогда Друпал критиковали за всякое — и за «отсутствие ООП», и излишнюю функциональность, и за принцип not invented here, и за сложность перехода от одной мажорной версии к другой. Хотя лично мне и D6...</description>
        </item>
                <item>
            <title>Вернёмся к истокам</title>
            <link>https://graker.ru/news/2025/11/28/back-to-roots</link>
            <guid>https://graker.ru/news/2025/11/28/back-to-roots</guid>
            <pubDate>Fri, 28 Nov 2025 17:20:00 +0300</pubDate>
            <description>Обсуждал тут улучшения своих сайтиков с чатом жопотэ, дипсиком, перплексити и другими сказителями. Идей роботы озвучили очень много, и внезапно я понял, что нужно возвращаться к истокам: взять и переписать эту домовую страницу и лендинг студии обратно на Turbo Pascal Друпал.
Эксперимент с October CMS был по-своему прекрасен, узнал и сделал много нового, и CMS неплохая. Но ряд вещей, которые я хочу сделать, на Друпале сделать тупо в 2–3 раза быстрее.
Перенести в принципе недолго, сделать всё на вьюзах, а шаблоны фронта в October уже сделаны на twig. Можно даже управиться к Новому году. Надо тол...</description>
        </item>
                <item>
            <title>О выборе между CMS и фреймворками и некоторых мифах этого выбора</title>
            <link>https://graker.ru/news/2025/11/14/some-myths-on-choosing-between-cms-and-frameworks</link>
            <guid>https://graker.ru/news/2025/11/14/some-myths-on-choosing-between-cms-and-frameworks</guid>
            <pubDate>Fri, 14 Nov 2025 17:50:00 +0300</pubDate>
            <description>&lt;p&gt;С каждым новым проектом в разработке и разработчикам, и порой заказчикам, приходится делать такой выбор. При этом часто можно услышать:&lt;/p&gt;
&lt;p&gt;— CMS только для несложных / шаблонных проектов;&lt;br&gt;
— если нужна нестандартная логика — поможет только фреймворк.&lt;/p&gt;
&lt;p&gt;Посмотрим, так ли это, всегда ли это так, а заодно рассмотрим несколько, возможно, странных, но настоящих мифов и возражений заказчиков.&lt;/p&gt;
&lt;blockquote&gt;CMS — Content Management System, система управления контентом. Популярные CMS — это Wordpress, Drupal, ModX, Joomla и, конечно же, 1С-Битрикс. В CMS предполагается наличие административного интерфейса и настроек.&lt;/blockquote&gt;
&lt;blockquote&gt;Фреймворк (framework) — это набор инструментов, библиотек и способов написания кода, который обычно не предполагает уже существующих настроек и конфигураций, а предполагает их программирование. Популярные фреймворки веб-разработки — это, например, Laravel, Symfony, Django, Yii, Ruby on Rails, Next.js.&lt;/blockquote&gt;</description>
        </item>
                <item>
            <title>Кэш</title>
            <link>https://graker.ru/news/2025/10/08/cache</link>
            <guid>https://graker.ru/news/2025/10/08/cache</guid>
            <pubDate>Wed, 08 Oct 2025 16:40:00 +0300</pubDate>
            <description>Если бы не работа на европейских проектах с CMS Drupal, никогда бы и не узнал, что
по-русски     — кэш
по-английски  — cache
по-французски — cache
по-испански   — caché
по-итальянски — cache
по-шведски    — cache
по-румынски   — cache
по-немецки    — Zwischenspeicher</description>
        </item>
                <item>
            <title>Про разработку и поддержку магазина на Drupal 9</title>
            <link>https://graker.ru/news/2025/09/08/drupal-9-ecommerce-dev-and-support</link>
            <guid>https://graker.ru/news/2025/09/08/drupal-9-ecommerce-dev-and-support</guid>
            <pubDate>Mon, 08 Sep 2025 23:40:00 +0300</pubDate>
            <description>Как-то сделали мы крутой магазин на Drupal 9 американскому отделению известного бренда, называть который конечно же не следует.
Импорт товаров, постоянная синхронизация складов, десяток видов доставки, трекинг, фасеты. Поиск и каталог на Apache Solr с кастомизированным индексом: заказчик хотел, чтобы некоторые атрибуты товара отображались в каталоге как отдельные позиции, а страница у товара была при этом одна.
Пару лет поддерживали, до Drupal 10 поапгрейдили. А потом решил заказчик сменить всю маркетинговую команду, а команда, соответственно — субподрядчика по сайту, то есть разработчика.
А п...</description>
        </item>
                <item>
            <title>Деплои и удаление зависимостей</title>
            <link>https://graker.ru/news/2025/05/23/removing-dependencies-on-deploy</link>
            <guid>https://graker.ru/news/2025/05/23/removing-dependencies-on-deploy</guid>
            <pubDate>Fri, 23 May 2025 15:55:00 +0300</pubDate>
            <description>Note to self: когда есть задача выключить из проекта тот или иной контриб-модуль, никогда не надо в этой же задаче требовать убрать сам код модуля из проекта. 
На примере Drupal и PHP: во всех деплой-скриптах, что мне доводилось видеть или писать, composer install (установка/обновление/удаление зависимостей) всегда идет первее drush updb (миграции БД) и drush cim (импорт загруженной из гита конфигурации). И это разумно в большинстве случаев: сначала при деплое мы тянем из интернета новые зависимости, затем запускаем миграции БД, требуемые этими зависимостями, затем применяем конфиг для этих за...</description>
        </item>
                <item>
            <title>VS Code и Codeium</title>
            <link>https://graker.ru/news/2024/11/19/vs-code-and-codeium</link>
            <guid>https://graker.ru/news/2024/11/19/vs-code-and-codeium</guid>
            <pubDate>Tue, 19 Nov 2024 21:55:00 +0300</pubDate>
            <description>Перешел не так давно на VS Code с phpstormа, работает неплохо, плагины есть, в целом доволен. А сегодня поставил Codeium — ИИ-плагин, чтобы вкалывали, значит, роботы, а не человек.
Сначала говорю ему: — чат жопотэ, напиши чтобы я нажимал на иконку, а из неё плашка выпадала с уведомлениями!
Он написал. И даже once не забыл, и переделывать почти не пришлось. Потом попросил сделать плашку белой, с синим скругленным бордером и тенью. 2 секунды, сделал, про position absolute сам догадался.
Решил попробовать что-нибудь друпальное. Вот что я получил по промпту Count workflow notifications where recip...</description>
        </item>
                <item>
            <title>Хакаем Drupal правильно</title>
            <link>https://graker.ru/news/2020/09/11/hack-drupal-the-right-way</link>
            <guid>https://graker.ru/news/2020/09/11/hack-drupal-the-right-way</guid>
            <pubDate>Fri, 11 Sep 2020 14:35:00 +0300</pubDate>
            <description>С переходом в Drupal 8 на composer запихивать контрибные модули и само ядро в git стало совсем не удобно и не правильно. Но хакать (точнее, делать лучше!) модули и ядро все равно хочется. К счастью, с композером это даже удобнее.
Допустим, мы внесли изменения в модуль contrib_module и хотим их увековечить в своем гите. Действия следующие:


Ставим пакет cweagans/composer-patches:
composer require cweagans/composer-patches


Хакаем, собственно, модуль.


Переходим в директорию с модулем и делаем патч:
git diff HEAD &gt; contrib_module_patch_1.patch
Если в директории модуля отсутсвует .git и патч п...</description>
        </item>
                <item>
            <title>Формула плюрализации в Drupal 8</title>
            <link>https://graker.ru/news/2020/07/24/plural-formula-drupal-8</link>
            <guid>https://graker.ru/news/2020/07/24/plural-formula-drupal-8</guid>
            <pubDate>Fri, 24 Jul 2020 12:40:00 +0300</pubDate>
            <description>Недавно заметил, что в одном из проектов после экспорта-импорта переводов (через po-файлы) поломалась плюрализация. То есть вместо обычных 3-х форм перевода на русский, стали появляться английские две формы. Раньше, несколько лет назад, с таким уже сталкивался. Чтобы починить, нужно было экспортнуть файл с сайта, где работает нормальная русская формула и импортнуть на сломанный.
Но оказалось, что в Drupal 8 эта проблема начинается уже с экспорта. Экспортированный ru.po с сайта, где с плюрализацией всё в порядке, внезапно содержал дефолтную английскую формулу. Попытка выкачать и вставить нормал...</description>
        </item>
                <item>
            <title>Делайте дампы правильно</title>
            <link>https://graker.ru/news/2020/07/13/delajte-dumpy-pravilno</link>
            <guid>https://graker.ru/news/2020/07/13/delajte-dumpy-pravilno</guid>
            <pubDate>Mon, 13 Jul 2020 13:32:00 +0300</pubDate>
            <description>Прислали тут мне дамп друпальной БД в таком формате. Сначала описание таблицы без ключей, затем вставка данных в таблицу, затем, в конце файла после всех таблиц и данных — объявление ключей для каждой таблицы. Хрен его знает, чем и зачем этот дамп так сделали. Но оказывается — в таком формате его нельзя импортироать в MySQL, настроенную на работу в кластере. На этапе вставки данных будет ругаться, что primary-ключей еще нет. Вот так:

ERROR 3098 (HY000) at line 40: The table does not comply with the requirements by an external plugin.

А чтобы вылечить, надо накатить этот дамп куда-нибудь лока...</description>
        </item>
                <item>
            <title>Бобёр</title>
            <link>https://graker.ru/news/2019/09/25/bober</link>
            <guid>https://graker.ru/news/2019/09/25/bober</guid>
            <pubDate>Wed, 25 Sep 2019 10:50:00 +0300</pubDate>
            <description>Всегда скептически относился к объявлениям с заказами на Drupal.ru. Не потому что я такой зазнайка, а просто очень долго не удавалось нормальный заказ там подписать. Но все равно, на всякий случай просматривал объявления, иногда отвечал, и в конце-концов все-таки нашел.
В прошлом году именно по объявлению на Д.ру удалось подписать контракт аж с «Первым каналом», и это было круто! Сейчас контракт формально и фактически завершился, так что можно и рассказать. Добавить результат в наше портфолио уже несколько месяцев руки не доходят, так что упомяну хотя бы здесь.
Участвовали мы в разработке сайт...</description>
        </item>
                <item>
            <title>Drupal 7 AWS S3 и проверка файла на существование</title>
            <link>https://graker.ru/news/2019/03/21/drupal-7-aws-s3-file-exists</link>
            <guid>https://graker.ru/news/2019/03/21/drupal-7-aws-s3-file-exists</guid>
            <pubDate>Thu, 21 Mar 2019 10:15:00 +0300</pubDate>
            <description>Есть в Drupal такой модуль, S3FS, создает стрим-враппер s3:// для работы с файловыми бакетами на Amazon S3. Модуль в принципе удобный и работает, но вот только не все файловые функции умеют в такой стрим. Например, если мы хотим проверить, существует ли в бакете файл, то file_exists(&#039;s3://myfile.txt&#039;) всегда вернёт FALSE.
Если заглянуть в код класса S3fsStreamWrapper, то там для проверки используется $this-&gt;s3-&gt;doesObjectExist(). Можно было бы сделать красиво, вот так:
file_stream_wrapper_get_instance_by_scheme(&#039;s3&#039;)
  -&gt;s3
  -&gt;doesObjectExists(&#039;my-bucket&#039;, &#039;myfile.txt&#039;);
Только вот незадача:...</description>
        </item>
                <item>
            <title>Drupal и фильтр по редакциям</title>
            <link>https://graker.ru/news/2019/02/19/drupal-revisions-filtering</link>
            <guid>https://graker.ru/news/2019/02/19/drupal-revisions-filtering</guid>
            <pubDate>Tue, 19 Feb 2019 10:45:00 +0300</pubDate>
            <description>&lt;p&gt;Как я уже упоминал, в коробке Drupal 8 есть такой полезный модуль Content Moderation. Он позволяет модерировать материалы на базе редакций (revisions): материал может быть в состоянии (moderation_state) &lt;em&gt;черновик&lt;/em&gt;, &lt;em&gt;опубликован&lt;/em&gt;, или &lt;em&gt;в архиве&lt;/em&gt;. Названия состояний можно менять, можно добавлять и новые состояния, и переходы между ними. При каждой смене состояния материала создается новая редакция. Благодаря этому можно, например, оставить проверенную редакцию опубликованной для всех пользователей сайта и, в то же время, работать с более новой редакцией в состоянии черновика.&lt;/p&gt;
&lt;p&gt;Если мы на сайте используем такую модерацию, рано или поздно нам может понадобиться программно загрузить все материалы, у которых последняя редакция в состоянии черновика. Например, чтобы их сосчитать, или еще зачем-то.&lt;/p&gt;</description>
        </item>
                <item>
            <title>Drupal 8 и дефолтные редакции</title>
            <link>https://graker.ru/news/2019/02/15/drupal-8-default-revisions</link>
            <guid>https://graker.ru/news/2019/02/15/drupal-8-default-revisions</guid>
            <pubDate>Fri, 15 Feb 2019 11:10:00 +0300</pubDate>
            <description>Есть в Друпале такая полезная штука — редакции (которые revisions). На базе редакций работает, например, модуль Content Moderation, реализующий workflow для модерации контента с помощью состояний (черновик — опубликовано — в архив, и всё такое). Благодаря управлению состояниями через редакции, можно без труда реализовать такой сценарий: 

Пользователь добавляет статью как черновик.
Модератор проверяет черновик и публикует статью.
Пользователь вносит правки.
Обновленная статья отправляется в черновики.
Но отмодерированная ранее статья остается опубликованной, пока модератор не примет новую верс...</description>
        </item>
                <item>
            <title>Drupal 8 и плюрализация в twig</title>
            <link>https://graker.ru/news/2018/10/29/drupal-8-twig-format-plural</link>
            <guid>https://graker.ru/news/2018/10/29/drupal-8-twig-format-plural</guid>
            <pubDate>Mon, 29 Oct 2018 16:55:00 +0300</pubDate>
            <description>Раньше не обращал внимания, а оказывается в Drupal 8 прикольно так сделана плюрализация в шаблонах. То, для чего раньше нужно было бы вставлять вызов format_plural(), в восьмерке можно сделать операторами твига:
{% set count = node.my_node_views_count %}
{% trans %}
    1 view
    {% plural count %}
    {{ count }} views
{% endtrans %}
</description>
        </item>
                <item>
            <title>Drupal и ok.ru</title>
            <link>https://graker.ru/news/2018/10/01/drupal-okru</link>
            <guid>https://graker.ru/news/2018/10/01/drupal-okru</guid>
            <pubDate>Mon, 01 Oct 2018 10:35:00 +0300</pubDate>
            <description>Время идет, часики тикают. И если пенсия от меня отдаляется, то почтенный возраст — наоборот, приближается стремительным домкратом. И подстилать соломку нужно уже сейчас.
В общем, смастерил на днях модуль для авторизации drupal-сайта в «Одноклассниках». Называется Social Auth Odnoklassniki, сделан на базе Social Auth, для которого все остальные более молодежные интеграции уже есть.
Модуль поддерживает авторизацию через ok.ru, с извлечением имени пользователя, имейла и юзерпика. После установки нужно создать приложение в ОК как написано тут и запросить разрешение на извлечение имейла (см. здесь...</description>
        </item>
            </channel>
</rss>
