Drupal в рунете

Подписка на Лента Drupal в рунете
Drupal (Друпал) — голландское "druppel" («капля») в английском произношении. Drupal — платформа для создания сайтов и управления ими (CMF). Посредством данной системы можно строить сайты различного назначения и сложности, для управления созданным на Drupal сайтом не требуется владение вебвёрсткой и знание программирования. Drupal создан международной командой разработчиков, как программное обеспечение с открытыми исходными текстами, защищенными общественной лицензией GNU. Международный сайт проекта — drupal.org, а наш сайт предназначен для общения и координации работ русскоговорящих участников проекта. Сообщества проекта Drupal доступны также на других языках.
URL-адрес: https://drupal.ru
Обновлено: 1 час 27 мин. назад

Layout Builder - новый подход к созданию страниц в Drupal.

сб, 16/02/2019 - 14:28


Laoyut Builder - это один из модулей ядра Drupal, который появился в ветке 8.5 в списке экспериментальных модулей, сейчас в ветке 8.6 он по-прежнему экспериментальный, но уже уже не альфа, а бета и уже вполне пригоден к использованию, а движуха в issues даёт понять, что разработчики твёрдо нацелены сделать этот модуль стабильным.

Зачем же нужен этот модуль? Он позволяет настраивать отображение любых сущностей с использованием Layout API,то есть берём шаблон (лэйаут) и вставляем в его регионы блоки. Помимо всех стандартных блоков (Block Content, Views и прочее) есть блоки с полями сущности. Пытливый читатель уже наверняка задался вопросом, зачем это всё, если есть Page Manager, Panels, Display suite и Panelizer? Ответ прост - перечисленные модули были популярны в 7 версии Drupal, а с выходом 8 версии эти модули наспех были портированы, в то время, как в ядре параллельно велась работа по созданию этого функционала с нуля, учитывая особенности архитектуры восьмёрки. Как итог - Page Manager на данный момент практически заброшен своими создателями, которые переключились на разработку Layout Builder. Разработчики Panelizer признают, что Layout Builder полностью заменяет его, и ведут разработку способов миграции с Panelizer на Layout Builder. Кроме того, интерфейс Page Manager и Display Suite выглядит совершенно дубовым для 2019 года. Раньше я во всех своих проектах использовал Page Manager и Panels и за это время уже надоело, что с выходом каждой минорной версии ядра Page Manager начинает глючить и приходится ставить всё новые патчи. К слову в моей заготовке composer.json было три патча для пэйдж менеджера, один для панелей и один для ядра, который был необходим для нормальной работы пэйдж менеджера. Использование Layout Builder позволило отказаться от всего этого.

Перейдём к делу - как пользоваться модулем? Тут всё невероятно просто: нужно включить модуль, а затем включить его функционал на странице управления отображением нужной сущности:

Как видно, у каждого режима отображения появляются две галочки - первая просто включает Layout Builder для данного типа сущности и вместо привычного списка полей появляется кнопка Manage Layout. Вторая галочка - наиболее интересная - она позволяет настраивать лэйаут для каждой сущности отдельно! Причём это не значит, что поставив её, скажем для статей, вам придётся постоянно собирать лэйаут каждой статьи. По умолчанию в каждой статье будет использован лэйаут, который вы настроите в Manage Layout, а при редактировании и просмотре статей будет просто ещё одна вкладка "Макет" (в английской версии Layout), где вы при необходимости можете настроить вывод отдельно взятой сущности.

Страница редактирования макета выглядит так:

Разделы (они же Sections) представляют из себя отдельные лэйауты. Тут очень важное преимущество перед Panels - можно поледовательно поставить в столбик несколько лэйаутов, в то время, как Panels позволяет использовать одновременно лишь один лэйаут. Как видно на картинке, один лэйаут добавлен, и можно добавить лэйаут до и после него. Когда лэйаутов много, можно вставлять лэйауты между ними, а также перетаскивать. Также можно перетаскивать блоки из региона в регион и из лэйаута в лэйаут. На картинке выбран двухколоночный лэйаут, поэтому горят две кнопки "Добавить блок" по одной в каждом регионе. Кстати, интересный момент, при вставке блоков с полями сущности можно настраивать форматтер поля как угодно - отображение лэйбла поля и все настройки, например, стиль изображения для картинок. Это позволяет одно поле выводить многократно разными способами.

У некоторых лэйаутов есть настройки (см на рисунке надпись Configure Section). Всё зависит от того, как сделан сам лэйаут - у самых простых лэйаутов настроек вообще нет. Но я использую модуль Bootstrap Layouts, в котором у каждого лэйаута можно выбрать классы обёртки и классы регионов - там стандартные колоночные классы бустрапа, плюс классы оформления, плюс возможность добавить любые свои атрибуты, что порой очень полезно. Даже если вы не используете Bootstrap, я очень рекомендую вам посмотреть модуль Bootstrap Layouts, ведь вы по образу и подобию сможете сделать настраиваемые лэйауты и для вашего сайта. Ниже скрины настроек лэйаута и списка выбора блоков:
 

Кнопка Create Custom Block заслуживает отдельного внимания - она создаёт обычный блок, но параметр reusable у него имеет значение FALSE. Это значит, что этот блок нельзя будет нигде повторно использовать, он не появится на странице "Пользовательские блоки" или "Схема блоков", а редактировать его можно будет только по "карандашику" из формы редактирования лэйаута. Если вы хотите использовать блоки повторно, то создате блок обычным способом через меню Структура - Схема блоков - Добавить блок и выберите этот блок из списка.

Преимущества Layout Builder перед похожими модулями:

1. Можно настраивать лэйаут как для типа сущности в целом, так и для отдельной сущности.

2. Можно ставить несколько лэйаутов подряд.

3. Более быстрый доступ к редактированию лэйаутов (по сравнению с Page Manager, где нужно было кликнуть 4 ссылки, чтобы добраться до страницы с перетаскиванием блоков) и в целом боле удобный UX.

4. Более наглядный интерфейс - редактирование происходит в теме сайта по умолчанию, то есть все стили применяются сразу, а блоки при возможности показываются с нужным содержимым (иногда используются плэйсхолдеры, в зависимости от особенностей самих блоков). Также по субъективному ощущению - формы и ajax-коллбэки у Layout Builder работают значительно быстрее, чем у Page Manager.

Ложка дёгтя.

Обзор был бы нечестным, если бы не были затронуты недостатки.

Первый недостаток: некоторые элементы интерфейса пока сыровато свёрстаны и могут "разваливаться" на некоторых темах. Но это очень легко решается, ведь для редактирования используется основная тема сайта, мне просто понадобилось добавить несколько строк CSS в свою тему, чтобы всё смотрелось хорошо.

Второй недостаток: Layout Builder не может полностью заменить Page Manager, ведь лэйаут билдер - это просто настройка отображения сущностей, соответственно, нет возможности перекрыть существующий роут, создать разные варианты для разных ролей или создать страницу с несколькими аргументами. Правда для себя я этот вопрос решил через кастомный модуль, который создаёт ещё один тип Section Storage, который можно прикрепить к своей Config Entity, и вызвать в своём кастомном контроллере, но это вариант для очень продвинутых.

Третий недостаток: модуль пока ещё экспериментальный, поэтому есть некоторые "детские болячки" и для некоторых вещей приходится ставить патчи, но насколько мне известно, часть этих "болячек" будут исправлены с выходом версии 8.7.

Как бы то ни было, взвесив все за и против, по личному опыту использования уже более, чем на пяти проектах, я однозначно могу сказать, что Layout Builder значительно лучше, чем Page Manager.

И напоследок пару советов, как использовать лэйауты более эффективно:

1. Вы можете создать тип ноды, в которой не будет вообще никаких полей (даже Body можно выпилить), оставить только метатеги.Это позволит вам собирать произвольные страницы из произвольного набора блоков. Очень удобно для главной страницы, страниц-лэндингов и просто страниц с уникальным дизайном.

2. Создавайте новые типы блоков подключайте лэйауты к ним, а потом используйте эти блоки в лэйаутах нод или терминов таксономии.

2.1. Добавляйте в блоки параграфы. У меня есть тип "Блок с виджетами", у которого виджеты - это разные типы параграфов на выбор.

3. По аналогии с "пустым" типом нод вы можете создать пустой тип блока, в который можете собирать другие блоки.

Перечисленные методы позволят вам неограниченно вкладывать лэйауты в лэйауты, как результат, вам больше не понадобится создавать в теме 100500 шаблонов.

Ссылка на оригинал статьи в моём блоге

  • Drupal 8.*
  • Предлагаю решение
  • FAQ
  • 7 Thanks
    Категории: Друпалургия

    Доклады для PHP Russia 2019

    ср, 13/02/2019 - 13:39

    17 мая 2019 года в Москве пройдет конференция PHP Russia 2019. Организаторы и активисты конференции — сотрудники крупнейших российских и международных компаний, лидеры сообщества веб-разработчиков и различных тематических сообществ.

    Главные темы
    • Развитие экосистемы (сам PHP, стандарты, фреймворки, библиотеки, OpenSource)
    • Опыт крупных компаний, показывающий как можно использовать PHP для построения действительно сложных проектов используя современные подходы и лучшие практики.

    От организаторов поступило предложение организовать мини-митап в рамках конференции или подготовить доклады.

    Спикерам оплачиваются перелёты, размещение, участие и прочее.

    Подробная информация о конференции: https://phprussia.ru/2019

    .event-cover { margin-bottom: 1em; margin-left: 1em; } @media (max-width: 576px) { .event-cover { width: 100%; height: auto; display: block; margin-bottom: 1em; } }
  • Есть вопрос
  • Проекту нужна помощь
  • 2 Thanks
    Категории: Друпалургия

    Модуль Simple Comment Notify

    сб, 19/01/2019 - 23:03

    У меня есть несколько личных проектов с небольшой посещаемостью и несколькими комментариями в неделю. Чтобы не отслеживать комментарии вручную (как вы знаете, иногда бывает и спам), я начал искать модуль для уведомления меня о новых комментариях. Кто еще помнит Drupal 7, то там был модуль ядра trigger, который позволял отправлять уведомления о новых комментариях, пользователях, материалах и т.д. В Drupal 8 в ядре такого модуля нет. Я отправился в гугл.

    Первое что гуглится по запросу "Drupal 8 admin comment notify" это конечно же модуль comment_notify, но если присмотреться к нему поближе, то окажется, что модуль не для администраторов, а для посетителей сайта. У нас, на друпал.ру, он тоже используется.

    rules я отбросил сразу, т.к. это слишком тяжеловесное решение для отправки email.

    Затем я нагуглил модуль simple_comment_email_notification, но он шлёт письма... сам себе, а именно на адрес указанный как ИСХОДЯЩИЙ АДРЕС в настройках сайта



    Непорядок, подумал я и отправился писать issue и прикладывать патч, чтобы слать не на адрес сайта, а на email админа. "Засунь свой патч себе в..." ответил мне немец, автор модуля.

    Следующим был comment_admin_notify, однако модуль выглядит как заброшенный. Пару коммитов в год плюс автор абсолютно игнорирует issue, патчи и присваивает авторство коммитов себе.

    Ну вы уже поняли, да? Да, я написал свой модуль :)

    Встречайте, Simple Comment Notify

    Я решил не ограничиваться только лишь отправкой админу и сделал форму настроек:



    Модуль может отправлять письма:

    • админу сайта (пользователю с uid=1)
    • группе пользователей, имеющим указанную роль (например роль "модератор")
    • на кастомный список адресов, если по какой-то причине вы не можете завести пользователя на сайте (или не хотите), а отправлять уведомления надо
    По просьбам трудящихся теперь можно отправлять уведомления в телеграм!

  • Drupal 8.*
  • Предлагаю решение
  • Программирование
  • 3 Thanks
    Категории: Друпалургия

    Модуль для call tracking

    сб, 19/01/2019 - 16:50

    Выпустил недавно модуль в alpha версию, который предназначен для замены телефонов на сайте в зависимости от UTM меток. Он может быть полезен для директологов и SEOшников.
    Для настройки достаточно зайти на соответствующую страницу, и заполнить поля необходимыми значениями.
    Пример см. на рис. ниже

    Если появятся идеи или найдете баги, буду рад вашим issue и патчам на drupal.org

    Ссылка на модуль: https://www.drupal.org/project/calltracking
    Команда для composer: composer require drupal/calltracking

  • Drupal 8.*
  • Есть вопрос
  • Программирование
  • 4 Thanks
    Категории: Друпалургия

    Single Image - форматтер для вывода только первой картинки.

    сб, 19/01/2019 - 14:42

    Недавно мы в нашей компании webxayc.by решили потихоньку начать выкладывать свои различные наработки в контриб.
    И вот первая ласточка - Single Image. Модуль решает всего одну задачу: иногда нужно вывести из поля с множеством картинок только первую, например в анонсах. Для этого модуль предоставляет форматтер поля Single Image Formatter, который унаследован от обычного ImageFormatter, но выводит только первую картинку. Как и в обычном форматтере картинок, можно выбрать стиль изображения и куда будет вести ссылка с картинки.

    Кроме того, в последней версии добавлен подмодуль single_image_formatter_media, который предоставляет форматтер Single Media Thumbnail, который делает всё то же самое, только для полей типа Media. Этот форматтер унаследован от стандартного MediaThumbnail.

    В общем, кому надо - пользуйтесь :) Никакого страха, никакого риска - модуль прошёл security review. Также, можете не переживать за производительность - модуль очень простой и не усложняет стандартные форматтеры, а скорее наоборот - немного их упрощает?

    PS: версия только для Drupal 8.
    PPS: в скором времени планируется выложить ещё несколько намного более интересных модулей.

  • Drupal 8.*
  • Предлагаю решение
  • Программирование
  • 4 Thanks
    Категории: Друпалургия

    Калькулятор на Drupal без программирования. Переходи на темную сторону силы! Познай мощь D7!

    чт, 17/01/2019 - 04:22

    Товарищ https://drupal.ru/username/bumble у себя на сайте https://blogpost.pp.ua/drupal/93 рассмотрел возможность формы заказа чего нибудь на webform. А что если к этой форме приделать калькулятор? Ура, такая возможность есть благодаря модулю webform_calculator
    Модуль позволяет ставить на вебформу новое поле типа формула.

    Краткая инструкция

    У модуля есть 2 не очевидных момента:

    1. Обработка списков.

    Есть переменная {rayon}. Принимает значения в зависимости от того, что выбрано в списке поля район. Естественно несколько районов могут иметь одинаковое значение переменной. Если заполнять поле район так:

    3500|Дзержинский район
    3500|Индустриальный район
    3500|Ленинский район

    ...калькулятор не сможет высчитать формулу ибо требует для каждого значения списка отличное число. Выход - ставить нули после точки, т. е.:

    3500|Дзержинский район
    3500.0|Индустриальный район
    3500.00|Ленинский район 2. Ограниченное количество математических функций (и операторов).

    На момент поста используется dev версия модуля. В ней работает больше операторов по сравнению с текущей «зеленой» версией. Например оператор возведения в степень.

    Мне была необходима функция округления в большую сторону — ceil.
    Полез в файл модуля matheval.class.php и добавил ее в конец поддерживаемых функций так:

    <?php
    public $fb = array(  // built-in functions
            'sin','sinh','arcsin','asin','arcsinh','asinh',
            'cos','cosh','arccos','acos','arccosh','acosh',
            'tan','tanh','arctan','atan','arctanh','atanh',
            'sqrt','abs','ln','log','ceil'); /*вот она в конце*/
    ?>

    Всё! Новая функция работает. Она же из PHP.

    Результат тут.
    http://kapital-trans.ru/arenda-kran-borta-perm
    http://kapital-trans.ru/kran-bort-kamaz

    Полная инструкция.

    Если кто-то не понял как сделана форма заказа, привожу методичку ниже. Инструкция установки вебформы перекликается с рецептом bumble. ИТ профессионалы могут не читать.

    Задача

    Сделать калькулятор аренды техники. Единица техники (самосвал, трактор) — отдельная нода. Для рассчета используется поле Цена — целое число, разделители тысяч, преффикис, суффикс в настройках не заданы. Стоимость аренды техники зависит от:

    • района города — дальше дороже, потому что время на дорогу. Можно вбить район не из списка — тогда стоимость договорная.
    • количества часов на которые орендуется техника.
    Используются модули

    Модули должны быть как минимум включены. Обращаем внимание на дату поста если в скобках указана версия.
    colorbox
    colorbox_node
    webform
    webform_ajax (7.x-1.1+4-dev)
    webform_calculator (7.x-2.0-beta1+5-dev)
    webform_default_fields

    Компоненты вебформы

    Создаем материал типа webform с компонентами. Настройки компонентов чуть ниже.

    Техника/модель

    Район

    Почему после точки нули? Скроллим наверх и читаем краткую инструкцию.
    n|Другой — свой вариант района. Цена будет договорная :)

    Количество часов


    Время на дорогу. Вот и наша первая формула. Просто получает число из списка районов.

    Общее время. Еще одна формула.

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

    Настройки вебформы

    Эти обязательные. Остальные настройки — по желанию.

    Пустая вебформа

    Полученная форма работает. Но ничего не считает.

    Вьюха для вывода кнопки заказа на ноде.

    Все настройки полей и контекстных фильтров на скринах.

    Контекстный фильтр вьюхи

    Код кнопки

    Вбита формула
    <a class="colorbox-node" href="/arenda-tehniki?product=[title]&tzena=[field_prise]" rel="nofollow" data-inner-width="600" data-inner-height="620">Заказать</a>

    Тут:
    colorbox-node – класс от модуля Colorbox node
    arenda-tehniki — урл нашей вебформы. Если пилите по это методичке самое время вернуться на вебформу и задать его.
    ?product=[title]&tzena=[field_prise] — соприкосновение полей вьюхи с полями формулы на вебформе.
    rel="nofollow" — директива для сеонистов, которые не хотят индексировать форму по ссылке.
    data-inner-width="600" data-inner-height="620" — ширина и высота всплывающего окна. Можно не использовать.

    Вывод кнопки на ноде.

    Полученная вьюха — это блок. Выводим его в нужном месте. Можно вывести блок программно. Можно добавить условия в фильтр вюхи. Или даже использовать модуль context. Можно воспользоваться модулем viewfield и тогда не будет потребности в выводе блока.

    В результате это должно выглядеть как-то так:

    По нажатию на кнопку закзать должна появится вебформа в колорбоксе. Заголовок формы (На скрине «Аренда техники») можно убрать через CSS или правку шаблонов.

    Вывод конопки заказа для группы нод

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

    Должно получиться что-то типа:

    Всё. Надеюсь кому-то пригодится. Кому что не понятно — спрашиваем. Критика разрешается.

  • Drupal 7.*
  • Предлагаю решение
  • Установка и настройка
  • 5 Thanks
    Категории: Друпалургия

    С совершеннолетием, Drupal!

    ср, 16/01/2019 - 07:25
    Сегодня Drupal - 18, ура!!!

    Сколько эмоций, сколько радости, сколько фич за все это время, и не без багов канеш - куда без них ;)
    Теперь, Друпал - буквально "взрослый продукт".

    Празднуем и радуемся! Мы заслужили.

    Поздравления от Дриса: https://dri.es/happy-eighteenth-birthday-drupal

    Свободный перевод:

    В этот день, 18 лет назад, Дрис зарелизил Drupal 1.0.0. Нечто, скромно начинающееся, превратилось в одно из крупнейших open-source сообществ в мире. Сегодня Drupal существует благодаря людям и коллективным усилиям тысяч участников. Спасибо всем, кто внес и продолжает вносить свой вклад в Drupal.

    Восемнадцать лет - это также возраст голосования в США и законный возраст употребления алкоголя в Европе. Не знаю какой из них лучше. :) Шутки в сторону, добро пожаловать во взрослую жизнь, Drupal. Пусть твой день пройдет без ошибок но со свежими патчами!

  • Разное непонятное
  • 5 Thanks
    Категории: Друпалургия

    Drupal-школа #18: используем Bootstrap для создания адаптивного сайта на Drupal

    вс, 06/01/2019 - 21:20

    Используем Bootstrap на Drupal. Ставим соответствующую тему оформления, позволяющую использовать фреймворк Bootstrap на сайте. Проведем некоторые правки на сайте, делая его адаптивным и, кроме того, более красивым, используя возможности бутстрапа.

    Содержание: поиск подходящей темы на основе фреймворка Bootstrap, установка тема Bootstrap на сайт на друпале, особенности многоуровневого меню на бутстрапе, проверка сайта на мобильности, инструмент проверки адаптивности сайта Google, блоки на bootstrap, настройки и скрытие блоков, настройка главной страницы сайта, стили бутстрапа для изображений, сетка на Bootstrap на друпал-сайте, цвета текста в Bootstrap.

    [hr]

    Предыдущие видео-уроки:
  • Drupal 8.*
  • Bootstrap
  • Bootstrap 3
  • Предлагаю решение
  • DrupalSib
  • 2 Thanks
    Категории: Друпалургия

    Drupal Global Contribution Weekend 2019

    сб, 29/12/2018 - 04:47

    Всем привет!

    Начиная с 2013 года сообщество Drupal проводит Global Contribution Weekend. В заранее определенные выходные дни локальные группы друпалистов по всему миру собираются для совместного решения вопросов и проблем ядра Drupal. Следующий Drupal Global Contribution Weekend будет проводиться 25-27 января 2019 года.

    Для участия в мероприятии необходим опыт разработки сайтов на Drupal, учетная запись на Drupal.org, git и локальная копия репозитория Drupal 8 core.

    На странице мероприятия https://groups.drupal.org/node/534537 перечислены группы друпалистов и указаны локации, где они собираются провести спринт. Там же есть ссылки на дополнительные ресурсы, которые помогут разобраться в вопросах участия в мероприятии и организации своей локации.

    Для участия в спринте необходимо личное присутствие в определенной локации с ноутбуком. В 2019 году также можно будет «не выходя из дома» принять участие в виртуальном онлайн-спринте, темой которого будет улучшение доступности (accessibility) Drupal 8.

    Предлагаю обсудить возможности русскоязычного Drupal-сообщества по организации локаций и онлайн-спринта для участия в Drupal Global Contribution Weekend 2019.

  • Drupal 8.*
  • core
  • Есть вопрос
  • Решение проблем
  • 0 Thanks
    Категории: Друпалургия

    Итоги 2018 года Drupal-сообщества — прямой эфир 20 декабря

    пн, 17/12/2018 - 16:28
    Видеозапись трансляции Аудиозапись
  • Есть вопрос
  • Решение проблем
  • 1 Thanks
    Категории: Друпалургия

    Drupal + Gatsby.js

    сб, 15/12/2018 - 17:16

    Решил ознакомиться с темой статических сайтов и сделать небольшой decoupled (он же headless) Drupal сайт с фронт-ендом, полностью написанным на React.

    https://z-portfolio.tk

    Изначально для реализации задуманного я выбрал Next.js, но в процессе работы неприятно удивил целый ряд недостатков и костылей. Пришлось отказаться от Next в пользу свежевышедшего Gatsby.js ver 2.

    Первая приятная неожиданность - Gatsby имеет специальный плагин для Druapal, позволяющий легко и непринуждённо подгружать контент через новомодный GraphQL, используя визуальный интерфейс. Никакого шаманизма, обнаженки и ритуальных танцев, всё работает "из коробки".

    Кроме удобства разработки, порадовал и процесс деплоя. В качестве хостинга был выбран Netify. В нём нужно было просто привязать мой репозиторий проекта на Gitlab и вуаля - при каждом коммите он автоматически деплоит на продакшн (опция на любителя, но для моего случая то, что надо).

    Статические сайты имеют свои особенности и ограничения, но производительности им не занимать.

    Оказывается, один из ключевых разработчиков Gatsby долгое время занимался Drupal - разработкой, отсюда и такая качественная поддержка. Я остался доволен симбиозом этих платформ и могу порекомендовать уважаемому и любимому русскоязычному Drupal-community (которое столько раз мне помогало:)

    Всем удачи!

  • Drupal 8.*
  • Предлагаю решение
  • Выставка сайтов
  • 0 Thanks
    Категории: Друпалургия

    Модуль Social Auth ESIA

    сб, 08/12/2018 - 00:01

    @Niklan разработал новый модуль. Вот, что он пишет по этому поводу:

    Опубликовал модуль Social Auth ESIA. Это дополнение для Social Auth, добавляющее поддержку авторизации через ЕСИА (Госуслуги).

    Пока в rc1, до тех пор, пока модуль не протестируется на боевом сервере ЕСИА, врятли что-то изменится, на тестовом отрабатывает полностью корректно.

  • Drupal 8.*
  • Предлагаю решение
  • FAQ
  • 3 Thanks
    Категории: Друпалургия

    DrupalCamp Ghent, 23-24 ноября

    пн, 03/12/2018 - 00:07

    Неделю назад я съездил на ДрупалКемп в Генте, Бельгия (http://drupalcamp.be). Попытаюсь кратко и по возможности беспристрастно о нём рассказать.

    По порядку: первое - Гент. В Бельгии я до этого ни разу не был, и по наивности предполагал, что это двуязычная страна, населённая франко- и голландско-говорящими гражданами. На самом деле это просто две разных страны - одна говорит на голландском, другая на французском. С очень чёткой территориальной границей. Плюс Брюссель, который говорит на арабском. Гент находится во фламандской части, и на том самом кемпе я не слышал ни слова по-французски. Сам Гент в средние века был одним из крупнейших и богатейших городов Европы и с тех пор очень хорошо сохранился. Каналы, портовые, рыночные здания, колоссальные соборы и ратуша, просто кварталы - производит впечатление. Но это центр, за его пределами, откровенно говоря, уныло.

    Второе - кемп. Времена, когда каждую неделю где-нибудь в Европе проходил ДрупалКемп, прошли. Тем не менее, в ноябре был всплеск, и имели место 4 кемпа - в Сербии, Норвегии, Эстонии и вот этот. И некоторые просто в одни и те же сроки. Впрочем, каждый кемп нацелен на национальную аудиторию, поэтому пересечение по срокам не так важно. Кемп в Генте традиционный, не могу сказать, какой по счёту, но помню, что лет 5 назад ещё его замечал. Народу было много: по официальным данным, больше 300 человек. И подавляющее большинство - это друпалисты из Фландрии или Голландии (хотя все доклады были на английском). На глаз, наверное, было представлено больше десятка местных компаний (судя по кучкам людей в одежде с одинаковыми эмблемами). Кемп проходил в пятницу и субботу, параллельно шло два потока докладов.

    Третье - Друпал. Доклады я бы условно разделил на две группы: there is a module for that и Друпал без Друпала. Первая группа - это то, чем Друпал всегда был силён: рассказы о том, как создать сайт, улучшить пользовательское взаимодействие, выполнить типичные требования без необходимости программирования. Вторая группа - это то, что стало появляться в последние пару лет: интеграция Друпала в общие концепции веб-разработки. Это и взаимодействие Друпала с такими инструментами, как React.js, Varnish, GraphQL, и применение стандартных подходов в разработке (автоматический контроль качества кода, локальная среда на VM/Docker, тесты). Уровень докладов был очень разный - так же, впрочем, как и аудитория.

    Четвёртое, оно же последнее, оно же основное, оно же самое длинное: впечатления. Я уже написал выше, что было удивительно много компаний, специализирующихся или серьёзно занимающихся Друпалом исключительно в Бельгии и Голландии. С одной стороны, Бельгия - родина Друпала, с другой - в России, да и во многих других странах, Друпал так серьёзно не воспринимают. Крупнейшие компании, а также государственные учреждения в Бельгии и Голландии используют Друпал. Европейская Комиссия (официальный бюрократический орган Евросоюза) переводит свои разрозненные сайты на Друпал. Danielle Jacobs, руководительница крупнейшей бельгийской ассоциации IT-управленцев Beltug в своём пленарном докладе отмечала, что Друпал используется многими крупнейшими международными компаниями и они испытывают нехватку кадров, способных работать с ним на промышленном (enterprise) уровне. В то же время (и из зала прозвучал такой вопрос) Друпал сообщество существует само по себе, а промышленность - сама по себе. Крупнейшие компании, обладающие большим ресурсом, вносят, тем не менее, несоразмерно малый вклад в развитие Друпала. Другое впечатление - Друпал развивается и не отстаёт от жизни. Например, административный интерфейс практически не изменился со времён 5ой версии, и есть понимание, что это уже не соответствует современным требованиям. Редактирование с фронтэнда, введённое в 8ой версии, особой популярности не приобрело и рискует повторить судьбу overlay’я из 7ки. Поэтому работает инициативная группа с целью обобщить опыт конкурентов, таких как Gutenberg из Wordpress’a или CraftCMS, выработать рекомендации и переработать административную панель. Географически Друпал уже перешёл все границы: так, рассказывали о ДрупалКемпе в Токио, весьма многочисленном и технически сильном, упоминался и ДрупалКемп в Маниле. Подводя черту, скажу, что впечатления в целом позитивные, Друпал и сообщество не стоят на месте и пользуются заслуженным авторитетом.

  • Разное непонятное
  • 6 Thanks
    Категории: Друпалургия

    Как выкладывать модули на drupal.org: руководство новичка

    пт, 30/11/2018 - 12:55

    Навеяно коментом

    Итак, вы решили поделиться своим модулем с сообществом, но не знаете с чего начать? Давайте разбираться вместе:


    1. Для начала нужно завести аккаунт на drupal.org. Это обычная процедура, как и на многих сайтах

    2. Попав в личный кабинет, нужно перейти в раздел Your Projects и там уже есть ссылка Add a new project

    3. Создайте страницу проекта. Выбирайте Full Project, больше нет смысла выбирать Sandbox. Как её оформлять можно посмотреть у других проектов, ведь наверняка вы часто бываете на страницах других контрибных проектов? Не нужно писать слишком много и делать из страницы "пестрящую новогоднюю ёлку", лучше кратко и по делу

    4. Для того, чтобы работать со своими проектами без паролей, вам понадобится SSH ключ. Загрузить свой ключ можно в своем профиле во вкладке SSH keys

    5. Вы создали проект, теперь нужно загрузить файлы в git-репозиторий. На странице проекта нужно пройти на вкладку Version control и следовать инструкциям. Вам придется или создать у себя новый репозиторий, если его нет, или загрузить на drupal.org уже готовый репозиторий с вашими коммитами. Я надеюсь, вы уже освоили git?

    6. Там же вам подскажут как создать dev-ветку в git. Если модуль для Drupal 7, то ветка должна называться 7.x-1.x, если модуль для Drupal 8, то 8.x-1.x. Обязательно удалите ветку master!

    7. Смысл dev-ветки вот в чем: все изменения поступают только в дев-ветку. Это как бы роллинг-альфа-версия модуля, в которой всегда есть свежие изменения. Когда вы понимаете, что модуль созрел, пусть даже для бета-версии, вам нужно создать в git тег, например 8.x-1.0-beta1, этот тег и будет названием вашего релиза. Возможны варианты: 8.x-1.0-alpha2, 8.x-1.0-rc7, ну и 8.x-1.0

    8. Релизный тег вы создали, теперь нужно создать сам релиз. В самом низу проекта есть ссылка Add new release

    9. Что обязательно нужно сделать в настройках проекта (вкладка Edit): выбрать Default branch, во вкладке Releases выбрать рекомендуемый релиз. У вас в проекте появится примерно такой вид


    10. Для солидности можно пометить модуль "зеленым щитом", об этом есть отдельная статья

    Пара полезных ссылок от пользователя bumble:

    1. Тут, вроде, все о модуле, тогда ссыль на создание лучше эта.
    2. Лучшие практики создания и поддержки проекта
    3. Создание ветки и тега модуля (еще более удобным будет ссылка после создания проекта, вида drupal.org/project//git-instructions )
    4. Соглашение об именовании


    Если что-то забыл, пишите в коменты, дополню пост

    Если материал был полезен вам, не забывайте поставить "спасибо". Ссылка находится сразу под материалом.
  • Drupal 8.*
  • Drupal 7.*
  • Предлагаю решение
  • FAQ
  • 4 Thanks
    Категории: Друпалургия

    Модуль Drupal 8 для отображения геолокаций на Yandex maps

    пт, 30/11/2018 - 00:16

    Наваял простенький модуль-форматтер для поля типа Geolocation для отображения координат точки плейсмарком на Yandex maps.

    Кому надо можно забирать и тестировать тут: https://www.drupal.org/project/ymaps_geolocation

    Краткое описание с картинками в блоге: http://big-gu.ru/blog/modul-yandex-map-dlya-drupal-8

  • Drupal 8.*
  • Geolocation
  • Предлагаю решение
  • Разработка модулей
  • 4 Thanks
    Категории: Друпалургия

    Как пометить свой модуль "зеленым щитом" на drupal.org

    чт, 29/11/2018 - 16:40

    Многие, наверное, обращали внимание, что некоторые модули на drupal.org помечены таким сообщением

    Если вы автор модуля на drupal.org и вам хочется, чтобы было так:

    то нужно выполнить пару несложных шагов:


    1. Создать страницу проекта, Full Project

    2. Создать dev-ветку в git, например 8.x-1.x

    3. Проверить свой код на следование стандартам кодирования друпал. Большинство ревьюверов проверяют через PAReview

    4. Создать стабильный релиз, например 8.x-1.0

    5. Подать заявку на получение "vetted" роли. Эта роль и позволит вам помечать ваши модули зеленым щитом.

    Как подать заявку на получение "vetted" роли:


    1. Выбрать свой наиболее сложный модуль. Модули в пару строк, к сожалению, не пройдут

    2. Убедиться, что код в dev-ветке соответствует стандартам кодирования

    3. Создать issue в разделе Drupal.org security advisory coverage applications. Шаблон issue вы можете посмотреть у других участников или в документации

    4. ЖДАТЬ. Ждать, пока кто-то из мирового сообщества посмотрит ваш код и скажет, что всё ок или выскажет мнение, что ему не понравилось. Ждать можно долго. Если вы уверены, что ваш модуль доведен до идеала, то проще всего попросить ваших товарищей, у которых есть более-менее прокаченные аккаунты на drupal.org, чтобы они сделали вам ревью. Для ревью тоже есть шаблон.

    5. После того, как несколько пользователей сделали ревью вашего модуля, на него обратит внимание модератор. В данный момент это итальянец kiamlaluno. Если у него не будет возражений, то он даст вам роль "vetted" и у вас появится возможность помечать ваши модули зеленым щитом.

    Очень важно создать только 1 (ОДИН) issue. Если вы сделаете несколько (например, для каждого своего модуля), модератор выберет один, а остальные закроет.

    Вот как то так. Давайте развивать друпал вместе и чтобы было побольше нужных и стабильных проектов!

    Если материал был полезен вам, не забывайте поставить "спасибо". Ссылка находится сразу под материалом.
  • Drupal 8.*
  • Drupal 7.*
  • Предлагаю решение
  • FAQ
  • 4 Thanks
    Категории: Друпалургия

    Drupal 8: webform/node в модальном окне

    вт, 27/11/2018 - 12:29

    Задача: быстро сделать форму "заказать звонок" для сайта

    Можно использовать контактную форму, но мне больше нравится webform

    1) Создаем вебформу с нужными полями

    2) Задаем ей алиас, например /call_me

    3) Делаем ссылку вида

    <a class="use-ajax" data-dialog-type="modal" href="/call_me">Обратный звонок</a>

    4) Выбираем тип "подтверждения" у вебформы. Мне больше понравился вариант с редиректом на главную и выводом сообщения в регион сообщений.

    Проверяем, работает. Всё? Нет, не всё. Работает для зарегистрированных пользователей, а для анонимов нет. Чтобы работало для анонимов

    5) Добавляем в наши библиотеки

    dependencies:
      - core/jquery.ui.dialog
      - core/drupal.dialog.ajax

    6) Сбрасываем кэш

    Теперь работает для всех.

  • Drupal 8.*
  • Предлагаю решение
  • Решение проблем
  • 3 Thanks
    Категории: Друпалургия

    Выбираем среду для локального развёртывания сайта.

    сб, 03/11/2018 - 16:01


    Излюбленный вопрос новичков (и не только) "как развернуть сайт для разработки" по-прежнему вызывает множество споров. С каждым годом появляются всё новые варианты, но в последнее время я стал натыкаться в интернете на вопросы новичков, попавших в какие-то совершенно нелепые ситуации из-за того, что среда для развёртывания сайта была выбрана изначально неверная. Именно поэтому я решил написать эту статью о выборе среды, обобщив свой личный опыт и наиболее часто встречающиеся ошибки.

    Далее я перечислю разные способы начиная от наименее предпочтительных, заканчивая наиболее предпочтительными, попутно перечислив их достоинства и недостатки. Сразу отмечу, что речь идёт о развёртывании сайта для разработки, а не для продакшена.

    1. Разработка сразу на shared-хостинге.

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

    - во-первых, новичку вряд ли придёт в голову закрывать тестовый сайт от индексации.
    - во-вторых, нет оперативного доступа к файловой системе (все эти синхронизации и FTP очень сильно замедляют работу)
    - в-третьих, зачем платить за это?
    - в-четвёртых, у вас может быть недостаточно опыта, чтобы выбрать подходящий хостинг, а когда вы это поймёте, тестовый бесплатный период скорее всего закончится.

    А потом кто-то гордый и обиженный напишет в интернете после пяти дней мучений "перешёл на вордпресс, потому что друпал так и не заработал на моём хостинге"

    2. Денвер.

    Этот способ я не советую использовать никогда. Вообще странно, что в 2018 году кто-то пользуется денвером. Когда я впервые использовал его в 2013, уже тогда его не советовали использовать, т.к. он уже тогда морально устарел. Как правило, те корчи, которые всё же отважились его использовать, переходят на что-то другое, когда пытаются развернуть на нём хотя бы самый примитивный интернет-магазин.

    3. OpenServer.

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

    непонятно, как обстоят дела с серверным софтом за пределами LAMP-стека, а именно со всякими Node.js, Solr, Redis и т.д.
    консольные инструменты не очень удобны. Это извечная проблема Windows - одна консолька для гита, одна для mysqldump, третья для drush, четвёртая для composer, но она не работает.

    4. Виртуальная машина.

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

    5. Разработка на нативном Linux.

    Это очень хороший вариант, но по понятным причинам подходит не всем. Но даже если вас полностью устраивает работа на Linux, всё равно здесь есть несколько подводных камней - если вы работаете над разными проектами, у которых разные продакшн-среды, вам нужно постоянно устанавливать весь серверный софт на свою машину. И если переключаться между версиями PHP можно сравнительно легко, то развернуть два проекта с разными версиями Node.js на одной машине будет крайне затруднительно, если вообще возможно.

    6. Docker.

    Мой любимый и, пожалуй, самый актуальный на данный момент способ. Docker - это способ контейнерной виртуализации linux-машин. С помощью утилиты docker-compose вы можете за считанные секунды поднять среду с абсолютно любой конфигурацией. Но главное преимущество докера - это экосистема. Вы можете найти контейнер для абсолютно любого серверного софта и включить его в свою сборку. Нужен к примеру solr - добавили пару строк в конфигурационный файл, при этом рядом можно развернуть проект с другой конфигурацией или другими версиями ПО, не загаживая свою систему. Docker можно использовать на любой ОС, правда для Windows нужна 10 версия,иначе не будет работать docker-compose. И даже если вы привыкли работать в нативном Linux, докер всё равно даст вам ряд преимуществ и ускорит работу. В частности в моей компании вся разработка ведётся в докере, все сборки основаны на сборке docker4drupal, ставшей уже де-факто стандартом в мире Drupal-разработки.

    Заключение.

    Если у вас лапки, используйте Openserver, если вы разработчик, используйте Docker. Остальное - отговорки.

    Ссылка на оригинал статьи: https://wellsolutions.by/article/vybiraem-sredu-dlya-lokalnogo-razvyorty...

  • Предлагаю решение
  • Системное окружение
  • 5 Thanks
    Категории: Друпалургия

    Мысли о сертификации Аквии

    пт, 02/11/2018 - 17:10

    Вчера я сдал экзамен на сертификат Acquia Backend Specialist Drupal 8. Тем, кого вдруг заинтересуют мои оценки, я предъявляю полный отчёт:

    Overall Score: 80.00%
    Result: PASS
    Topic Level Scoring:
    Section 1 : Fundamental Web Concepts: 100.00%
    Section 2 : Drupal core API : 70.00%
    Section 3 : Debug code and troubleshooting: 75.00%
    Section 4 : Theme Integration: 83.33%
    Section 5 : Performance: 75.00%
    Section 6 : Security: 87.50%
    Section 7 : Leveraging Community: 75.00%

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

    Для начала, краткое введение о том, что такое сертификация Аквии. Она предназначена для Друпал-профессионалов и имеет 3 уровня:
    Site Builder, Developer и Specialist (Back End или Front End). То есть 4 экзамена в 2 вариантах - для Друпала 7 или 8, что в сумме даёт 8 различных экзаменов и соответствующих сертификатов, которые может получить один человек. Site Builder не касается написания кода; Developer - это смесь использования модулей и основ программирования; Specialist целиком посвящён разработке для Друпала и принципам, на которых она основана. Все экзамены состоят из вопросов с вариантами ответов (самому не нужно писать ни строчки кода, ни давать ответы из головы в произвольной форме), и на весь тест отводится определённое время. В любой момент можно вернуться к любому вопросу. В моём экзамене (D8 Backend Specialist) было 60 вопросов и на них было отведено 90 минут. Вероятно, так же и для всех остальных экзаменов. Для сдачи экзамена существует порог в процентах от количества вопросов. Для Specialist это 70%, для остальных, кажется, 60. Экзамен платный, Specialist стоит $350, остальные - по $250. Если вы завалили экзамен или просто проспали, денег вам не вернут. Но можно заплатить снова и назначить новую попытку. Экзамен индивидуальный - вы можете настроить специальным образом свой компьютер или пойти в авторизованный центр, где вам предоставят пустую комнату, настроенный компьютер и вытряхнут всё из ваших карманов. Вы можете выбрать практически любое время для экзамена.

    А теперь - мысли.

    Мысль 1, непосредственно по выходу из учреждения: корреляция между очками, набранными на этом экзамене, и способностью разрабатывать если и отклоняется от нуля, то только случайно. Это скорее был тест на способность поддержать беседу о Друпале. Многие ситуации в вопросах достаточно надуманны и в них содержится уже больше чем половина ответа. В других случаях выбор мог быть достаточно очевиден - правильный ответ был единственным, который содержал осмысленно применённые термины Друпала. И, например, когда человек выбирает ответ “нужно создать сервис с таким-то тэгом” или “нужно наследовать класс для написания теста от такого-то базового класса” это вовсе не означает, что он вот так вот может сесть и написать этот сервис или тест.

    Мысль 2. Такой экзамен довольно непрост психологически, когда нужно нужно отвечать на большое количество вопросов, не имея никакой обратной связи и находясь при этом в незнакомом окружении. Я заметил, что начал я достаточно быстро - первые 20 вопросов быстрее 20 минут, но как только я напоролся на несколько вопросов, ответы на которые я просто не знал, моя уверенность пошатнулась, темп замедлился, и я начал колебаться при ответах даже на простые вопросы.

    Мысль 3. Всякая платная сертификация не заслуживает большого доверия. За пару дней перед тем, как идти на сертификацию Аквии, я прошёл тест по Друпалу на Upwork'е. И, прямо скажем, я его завалил (непопадание хотя бы в 30% на Upwork’e - это плохой результат, а у меня получилось только “выше среднего”). Несколько раз, конечно, я там откровенно облажался отчасти в силу опечаток и косноязычия вопросов, но, в основном, по своей вине, и я этот тест пересдам как можно раньше и сделаю это наверняка лучше, но, в любом случае, тест на Upwork’е - более сложный и требовательный. И, по крайней мере, тысяча разработчиков на Upwork’е получила за этот тест хорошие оценки (всего его сдали более 3000). В то же время разработчиков, сертифицированных Аквией как Back End Specialist - всего около 200. И причина, как мне кажется, на поверхности: только одна сертификация стоит 350$. Чтобы получить степень Grand Master, нужно заплатить около 1000$ (одна сертификация Developer и 2 - Specialist). Платить из своего кармана 1000 долларов не очень понятно за что желающих немного. В то же время у больших компаний денег часто в избытке, а красивые бумажки с печатями имеют над ними магическую власть, и эти компании охотно посылают своих сотрудников на сертификацию. С другой стороны, кто платит, тот и заказывает музыку. Никто не будет платить за слишком сложный экзамен, который могут пройти только лучшие. Поэтому моё мнение таково: сертификат Аквии - это некоторая минимальная гарантия квалификации. Полно на самом деле сильных разработчиков, у которых никаких сертификатов нет и они им не нужны. С другой стороны, ожидать от любого сертифицированного разработчика каких-то выдающихся навыков тоже не стоит. Скажем, если некая далёкая от разработки компания решает нанять Друпал-разработчика, своими силами она не может оценить его уровень и для неё такой сертификат - большая помощь. Но для компаний, непосредственно занимающихся разработкой - нет.

    Мысль 4. Тем не менее, это максимум из всего, что можно сделать за полтора часа. Тест покрывает все основные темы. Он требует в большей степени понимания и способности анализировать, чем способностей к механическому запоминанию и воспроизведению. Как и со всяким экзаменом, наиболее полезной частью является подготовка к нему. Я освежил многие знания, углубил и систематизировал свои знания API, мне даже захотелось писать тесты (программные). И сам экзамен выявил некоторые неожиданные пробелы в знаниях, за которые мне неловко и которые я первым делом намерен устранить.

  • Разное непонятное
  • 7 Thanks
    Категории: Друпалургия

    Обновление трекера на drupal.ru: views, улучшение вида, новые вкладки

    ср, 31/10/2018 - 13:07

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

    • Трекер переработан с использованием контриб-модуля views вместо двух кастомных модулей alttracker и altpager
    • Добавлены вкладки «Интересное» и «Последние публикации»
    • Изменен вид маркера комментариев/новых комментариев
    • Добавлено отображение даты создания/обновления/комментирования в списки материалов (кроме блоков)
    • Заменен блок «Новое на форуме» (кастом) на «Последние публикации» (views)
    • Внешний вид список приведен к единому стилю
    Главная

    Трекер

    Трекер: Интересное

    Трекер: Последние публикации

    Трекер: Материалы с моим участием

  • views
  • Сайт и проект Drupal.ru
  • 3 Thanks
    Категории: Друпалургия

    Страницы