Друпалургия

Почему я выбираю docksal вместо docker4drupal

Drupal в рунете - вс, 01/03/2020 - 16:28

Сегодня я расскажу, почему мне больше нравится docksal, а не docker4drupal. Этот вопрос уже обсуждался в телеграм чате, но я решил резюмировать обсуждение в виде статьи.

Скажу сразу, я буду сравнивать docksal и docker4drupal с точки зрения новичков и вебмастеров. К сожалению, многие разработчики стали забывать, что когда-то и они были новичками и то, что сейчас для них очевидно, для других совсем не очевидно. Помните об этом.

1) Централизованная установка и обновление. docksal устанавливается в вашу систему привычным образом, а обновляется командой fin update. Если вы используете стэк приложений по умолчанию, то он сразу обновится во всех контейнерах. d4d же нужно обновлять в каждом контейнере отдельно. Опять таки, в комплекте с d4d идет набор файлов, которые на 99% обычных проектов не нужны: Makefile, traefik.yml, docker-sync.yml. Это сбивает с толку начинающих пользователей d4d.

2) Не нужно нигде прописывать имя проекта. docksal берет имя проекта из имени каталога (как OpenServer на windows). В d4d же нужно обязательно в .env файле прописывать имя и ссылку для проекта. Это затрудняет обновление, потому что "нельзя просто так взять и заменить .env файл на новый". Нужно со старого скопировать имя вашего проекта и вписать в новый. Это такие мелочи, на которые бывалые разработчики не обращают внимания. Многие вообще перестают обновлять d4d потому что лень с этим заморачиваться.

3) Прокси сервер. Сразу после установки docksal будет запущен nginx который будет проксировать все ваши виртуальные хосты. Это позволит вам запустить сразу несколько сайтов одновременно на 80 порту. d4d "из коробки" такого не умеет.

4) Импорт больших баз. Наверняка многие пользователи d4d помнят

the input device is not a TTY при импорте БД через drush

Новичков это очень сбивает с толку. Через PMA БД не грузится, через drush тоже. Как быть? Нужно штудировать документацию, найти там ключ -Т и помнить о нем. В docksal же всё намного проще. Есть централизованная команда fin db import ИМЯ-ДАМПА, которая сама дропнет все таблицы и загрузит данные из файла дампа.

5) На работе мы используем docksal на dev сервере и там есть возможность просто прописать директиву VIRTUAL HOST и доксал автоматом разрулит когда будет обращение к нужному хосту по внешнему адресу и отправит в нужный проект. Например site1.mycompany.com, site2.mycompany.com
Я не сторонник использования докера на проде, но на дев сервере это невероятно удобно. Чтобы сделать такое в d4d нужно долго и внимательно штудировать документацию к traefik.

Приятные мелочи:

6) Установочные скрипты. В docksal есть встроенная возможность добавить к конфигурации сайта установочные скрипты и вызывать их удобным способом fin init-site, например. Скрипт поднимет контейнеры, запустит composer install, скачает БД с дев сервера, импортирует ее. И вот мы имеем готовый сайт для локальной разработки. В d4d можно такое сделать, но вручную.

Резюме:
Если вы давно хотели попробовать докер для локальной разработки, то я рекомендую начать именно с docksal. Он проще и дружелюбнее к начинающим пользователям.

  • Drupal9
  • Drupal8
  • Drupal7
  • Веб-мастерам и владельцам сайтов Автор ivnish Drupal backend developer в компании Abventor
    Категории: Друпалургия

    Преодоление трудностей, с которыми сталкиваются организаторы Drupal-мероприятий

    Drupal в рунете - вс, 01/03/2020 - 16:25

    Перевод статьи Марины Пайч «Overcoming challenges faced by Drupal events organizers» с советами по координации мероприятий по обучению Drupal.

    Организация мероприятий в рамках Drupal Global Training Days — это отличный способ рассказать о Drupal, привлечь новых разработчиков и повысить его популярность.

    Если вы еще не слышали о Drupal GTD, обычно это одно- или двухдневный тренинг, где опытные разработчики проводят сессии, посвященные Drupal, и обучают участников созданию своего первого сайта на Drupal или модуля. Почему это мероприятие называется глобальным? Потому, что оно проводится по всему миру ежеквартально в определенные дни (или около того). Организаторы из Северной и Южной Америки, Европы, Африки, Азии и Австралии объединили свои усилия, чтобы создать движение GTD и показать силу мероприятий, проводимых сообществами по всему миру.


    Знакомство с Drupal 8 в Рияде. Фото @EssamAlQaie.

    Однако организаторы Drupal-мероприятий сталкиваются с проблемами при проведении тренингов и конференций. Рабочая группа Drupal Global Training Days провела опрос, чтобы выяснить общие трудности для организаторов и то, как они могут помочь с проведением мероприятий GTD. Сначала мы разработали анкету для онлайн-опроса, а затем провели несколько обстоятельных интервью для подтверждения собранных данных. В этой статье я собрала наиболее распространенные проблемы, с которыми сталкиваются организаторы Drupal Global Training Days и провела мозговой штурм, чтобы найти пути их преодоления, основываясь на своем личном опыте организации мероприятий и положительном опыте других организаторов. Что ж, приступим.


    GTD в Омске. Фото @ADCISolutions.

    Проблема 1: Нехватка материалов для докладов (документация или презентации других организаторов)

    Чему мы должны научить? Отсутствие готовых материалов является самой распространенной проблемой организаторов во всем мире. Это действительно очень острая проблема. Не существует «специальной папки» с постоянно обновляемыми и готовыми к использованию презентациями и докладами.

    На это есть две основные причины:

    1. Большинство организаторов проводят мероприятия GTD на своем родном языке: испанский, русский и т. д., что делает такие презентации малопригодными для использования в других странах.
    2. Программы мероприятий составляются с учетом уровня участников: в некоторых странах на GTD в основном приходят люди не знакомые с Drupal, в других странах — более опытные.

    Эти факторы весьма затрудняют (если не делают невозможным) создание презентаций, которые могут подойти для всех видов тренингов.

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

    Я поступила именно так, когда мы решили добавить семинар к нашему GTD. В прошлом у нас были только теоретические мероприятия, но затем мы захотели провести практический семинар. Поскольку мы никогда раньше не проводили практикумов, я обратилась к другим организаторам с вопросом, кто уже проводил семинары. И Маурисио ответил мне и поделился большим количеством материалов, которые они использовали в Никарагуа.

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

    Опираясь на опыт никарагуанских мероприятий GTD, мы смогли не начинать все с нуля, а провести качественное мероприятие.

    Реализуется также глобальная инициатива по переводу руководства пользователя Drupal 8 на различные языки. Если вашим родным языком является один из следующих: Català, Magyar, Español, Українська, 简体中文, Français, Deutsch, فارسی, Bahasa Indonesia, 日本語 — вы можете использовать эти материалы для своих тренингов. Если вашего языка пока нет в этом списке, вы можете помочь перевести его. (Примечание: теперь руководство доступно и на русском языке).

    Проблема 2: отсутствие унифицированных рекламных материалов

    Вторая широко распространенная проблема — отсутствие промоматериалов. Эта ситуация аналогична первой проблеме. Разные языки и разные профессиональные навыки участников затрудняют создание единого набора материалов для продвижения всех мероприятий GTD. В ходе дискуссий с участниками рабочей группы GTD мы обсудили, что мы можем сделать, и поняли, что для каждого организатора лучше всего создавать собственные промоматериалы, поскольку они лучше знают свою аудиторию и могут передать основную цель GTD — «Введение в Drupal» на простом и понятном языке.

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

    Проблема 3: нехватка докладчиков

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

    Ситуация #1

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

    Ситуация #2

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

    Ситуация #3

    Вы являетесь единственным организатором или некому выступить в вашей организации. Преодолеть эту проблему можно двумя способами:

    1. Поищите докладчиков из других Drupal компаний в вашем регионе. Они смогут прорекламировать свою компанию, а вы получите докладчиков с опытом. Другой вариант может быть применен, если у вас сильное сообщество в вашем городе или регионе. В этом случае вы можете пригласить людей из сообщества выступить на мероприятии.
    2. Если первый способ не может быть реализован, найдите дистанционных докладчиков и сделайте видеозвонок или даже организуйте онлайн-событие. Глобальное сообщество Drupal невероятно огромно. Я уверена, что вы найдете замечательных и мотивированных докладчиков для вашего мероприятия в сообществе.
    Проблема 4: низкая конверсия (многие регистрируются, немногие посещают)

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

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

    • Промо материалы вводят в заблуждение: ожидания участников не оправдались. Убедитесь, что обещанные цели достигнуты, и усовершенствуйте промо материалы и тексты в соответствии с этим. Чтобы определить разрыв между ожиданиями и реальностью, организуйте несколько обстоятельных интервью с представителями вашей целевой аудитории или добавьте вопрос об ожиданиях в регистрационную анкету.
    • Проблемы с сопровождением участников: обычно с момента отправки заявки на участие в мероприятии до фактической даты его проведения проходит пару недель. Человек мог забыть о событии, потерять интерес или даже передумать. Чтобы этого не произошло, предусмотрите несколько возможных способов контакта с уже зарегистрированными пользователями. Отправляйте электронные письма, информируйте о ходе подготовки тренингов и расписании их проведения, отправляйте напоминания.
    • Не совсем ваша целевая аудитория: если ваши промо материалы будут рассылаться более широкой аудитории (например, не только студентам технических специальностей, но и всем студентам), вы можете получить много регистраций, но только технари примут участие. Будьте внимательны при выборе каналов продвижения, убедитесь, что вы привлекаете целевую аудиторию.

    Могут быть и другие причины низкой посещаемости: трудно добраться до места проведения мероприятия, слишком высокая стоимость билета (если это платное мероприятие), не очень интересная программа и т. д. Но вы должны найти причины для вашего конкретного случая. Пообщайтесь с участниками, спросите их, что могло бы повысить их удовлетворенность; посещаемость ваших мероприятий возрастёт, когда вы наладите обратную связь с ними. Только не забудьте рассказать о сделанных улучшениях в ваших промо материалах, чтобы люди знали, что вы действительно прислушались к ним.

    Проблема 5: нехватка денег для оплаты площадки и кофе-брейков

    Согласитесь, здорово, когда вы приходите на мероприятие и там есть бесплатный кофе? Позаботьтесь о том, чтобы участникам мероприятия было удобно и приятно и во время докладов и на кофе-брейках:

    • Организуйте мероприятие в офисе IT-компании. Если ваш офис не подходит для проведения мероприятий, обратитесь в более крупные компании и предложите сотрудничество: вы организуете мероприятие, а они предоставят площадку. В обмен, они смогут прорекламировать себя во время мероприятия. Необязательно, чтобы это был офис именно IT-компании, можно поискать любое удобное и красивое место; просто зачастую IT-офисы круто выглядят и уже оборудованы для проведения таких событий.
    • Организуйте мероприятие в вузах. Попробуйте договориться с руководством учебного заведения о безвозмездном предоставлении помещения для проведения мероприятия. Преимущества вузов в том, что они, как правило, располагают всем необходимым оборудованием и там можно найти потенциальных участников вашего мероприятия — студентов технических специальностей.
    • Ищите спонсоров на бартерной основе. Drupal GTD — международное событие, притягивающее внимание множества людей. Используйте это в своих интересах и привлекайте компании, которые окажут вам поддержку в организации вашего тренинга и предоставят необходимые ресурсы или услуги в обмен на рекламу. Предложите разместить их рекламу на площадке мероприятия. Это даст возможность провести мероприятие на хорошем уровне: участники получат более приятные впечатления, а вам не придется беспокоиться о финансовых затратах.
    Проблема 6: отсутствие спонсоров

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

    Если же без спонсорской поддержки не обойтись, то:

    1. Создайте список компаний, которым может быть интересно ваше мероприятие.
    2. Узнайте, кто в этих компаниях принимает решения по таким вопросам.
    3. Напишите, чем ваше мероприятие может быть полезно компаниям-спонсорам: продвижение, брендинг, доклад на мероприятии и так далее и обозначьте стоимость спонсорского пакета.
    4. Подготовьте индивидуальное спонсорское предложение для каждой компании.

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

    Обратитесь к местным компаниям, которые активно участвуют в жизни it-сообществ, они с большой вероятностью поддержат ваше мероприятие.

    Проблема 7: недостаточная осведомленность

    Не везде еще знают о мероприятиях GTD, что может создать определенные сложности для организаторов. Сложно найти спонсоров, докладчиков и привлечь посетителей. Чтобы решить подобные проблемы, вам стоит связаться с компаниями, которые разрабатывают проекты на Drupal, и рассказать им о преимуществах участия в GTD-движении. Среди таких преимуществ — продвижение компании в Drupal-сообществе, возможность засветиться в блогах, твитах, на карте событий Drupal и даже получить кредиты на Drupal.org!

    Чтобы привлечь больше внимания к вашему мероприятию, вам стоит проводить его в тот же день, когда такие мероприятия устраиваются глобально по всему миру. Масштабность проводимого мероприятия часто вызывает у людей любопытство и желание его посетить. Для продвижения своего мероприятия не стесняйтесь использовать видео других организаторов GTD: видеоролик №1, видеоролик №2.


    Томас П. Томас (исполнительный директор Zyxware Technologies) рассказывает о Drupal GTD и сообществе Drupal на мероприятии GTD в Керале. Фото @zyxware.

    Выводы

    Организация мероприятий — сложная и хлопотная задача. Вместе с тем она открывает широкие возможности для профессионального роста и экспериментов в сфере PR, маркетинга и ивент-менеджмента. Я занимаюсь организацией мероприятий не первый год, и до сих пор нахожу в работе много нового и интересного.

    Организаторам GTD я желаю быть активными, креативными и целеустремленными. Эти качества помогут вам проводить яркие и запоминающиеся мероприятия и привлекать к Drupal внимание множества людей!

    Рабочая Группа Drupal GTD (paych, lizzjoy, dinarcon, rgs, rachit_gupta, pendashteh, solomonkitumba) всегда готова протянуть вам руку помощи и подсказать, что делать.

    Вступайте в группу Drupal GTD, подключайтесь к нашему каналу в Slack и подписывайтесь на наш Twitter :)

    Удачных GTD!

  • Предлагаю решение
  • Статьи и публикации
  • Категории: Друпалургия

    Выборочный деплой контента с Drupal 8 на Drupal 8

    Drupal в рунете - пн, 24/02/2020 - 22:42
    Вступление

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

    Напомню, что является контентом. Это созданные ноды, пункты меню, кастомные блоки, термины таксономии, файловые сущности.

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

    На этом вступительная часть окончена.

    Экспорт контента

    Итак, для деплоя контента я перепробовал разные способы. И миграции, и VDE, и feeds'ы всякие. Наиболее удобной оказалась связка модулей default_content + default_content_deploy. default_content умеет экспортировать контент в виде JSON файлов, а так же импортировать. Проблема в том, что нет никакого интерфейса для этого. Ни в админке, ни drush команд. Только программно через код. Так и появился default_content_deploy, в который добавили возможность экспорта/импорта контента используя drush. А в dev-ветке уже есть возможность импорта через админку и скоро будет готов экспорт. Как это работает?

    drush dcde node
    Экспортировать все ноды.

    drush dcde node --folder='../content'
    Экспортировать все ноды в указанный каталог (а не в каталог, указанный в конфигурации модуля)

    drush dcde node --bundle=page
    Экспортировать все ноды определенного типа.

    drush dcde node --bundle=page,article --entity_id=2,3,4
    Экспортировать все ноды определенного типа плюс ноды с ID 2,3 и 4

    drush dcde node --bundle=page,article --skip_entities=5,7
    Экспортировать все ноды определенного типа и пропустить экспорт нод с ID 5 и 7

    drush dcde node --skip_entities=5,7
    Экспортировать все ноды и пропустить экспорт нод с ID 5 и 7

    Вместо node вы можете использовать наименования других сущностей.

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

    Окей, мы выгрузили нужный нам контент, добавили его в гит и теперь он лежит на продакшене в виде JSON файлов.

    Импорт контента

    Для импорта существует команда

    drush dcdi
    Она отобразит найденные сущности в виде файлов и предложит их импортировать. Если UUID сущности уже будет найден в системе, то эта сущность будет пропущена.

    drush dcdi --force-override
    Ключ force-override скажет программе импорта перезаписать содержимое контента из файлов в БД. Нужно использовать его с осторожностью.

    Вот собственно и всё. Добавив нужные команды в Gitlab CI (или в любой другой CI) вы сможете автоматизировать доставку контента с дева на прод.

    Послесловие

    Я настоятельно рекомендую использовать именно альфа-версию, а не дев-версию default_content_deploy. Модуль сейчас в стадии активной разработки и вы можете столкнуться с проблемами после очередного коммита.

  • Drupal8
  • Разработчикам Автор ivnish Drupal backend developer в компании Abventor
    Категории: Друпалургия

    Drupal: Показать форму входа при попытке анонимного пользователя поставить флаг

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

    src/Plugin/ActionLink/AjaxOrLoginActionLink.php:

    /** * @ActionLinkType( * id = "ajax_login_link", * label = @Translation("AJAX link (for loged users)"), * description = "An AJAX JavaScript request will be made without reloading the page." * ) */ class AjaxOrLoginActionLink extends AJAXactionLink {   /** * {@inheritDoc} */ public function getAsFlagLink(FlagInterface $flag, EntityInterface $entity) {

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Устойчивое развитие Drupal: вклад, признание заслуг и отдача

    Drupal в рунете - чт, 20/02/2020 - 18:26
    Перевод статьи «Drupal Sustainability: Contribution, Credit and Impact» (автор Tiffany Farriss)

    Увеличение числа компаний, работающих с Drupal, — нужная и важная задача. Но это требует от нас улучшения того, как мы привлекаем людей к поддержке и развитию Drupal, а также то, как мы признаем их вклад в общее дело.

    Несколько недель назад я получила свое первое признание вклада в Drupal за программную речь на DrupalCamp Colorado. Несмотря на то, что я необычайно взволнована произошедшим, все же нахожу это несколько забавным, так как этот доклад — не первый мой вклад в Drupal.

    На странице моего профиля на Drupal.org можно увидеть, что я являюсь участником сообщества уже более двенадцати лет. К тому времени я уже выступала с программными докладами на трех других друпалкемпах, выступала на сессиях и участвовала в рабочих группах во время конференции DrupalCon Boston 2008, руководила разработкой технического задания по редизайну Drupal.org, была председателем DrupalCon Chicago 2011, на протяжении девяти лет являлась членом правления Drupal Association, а совсем недавно входила в состав Комиссии по выбору Исполнительного директора Ассоциации. Это лишь часть моего личного вклада и, кроме того, компания Palantir.net, совладельцем которой я являюсь, сделала значительный вклад временем, творческим потенциалом и другими ресурсами за все эти годы.

    Признание заслуг не является для меня движущей силой. Как и многие участники проектов с открытым исходным кодом, я делаю свой вклад в Drupal, потому что готова оказывать поддержку, когда я вижу в этом необходимость или перспективу. Раньше, когда я была еще новичком в сообществе, о вкладе в развитие Drupal (и кодом и не кодом) могли знать только в узком кругу. Я постоянно ощущала, что заслужила доверие и поддержку тех, с кем тесно сотрудничала в решении все новых и новых задач.

    В итоге Drupal стал крупнейшим независимым проектом с открытым исходным кодом, управляемым сообществом. И многие из нас верили, что нашего коллективного успеха и того влияния, которое мы оказывали, было достаточно для дальнейшего раскручивания спирали успеха открытого программного обеспечения. Но так ли это было?

    Open source победил, и сегодня множество людей и компаний доверяют Drupal и другим инструментам и продуктам с открытым исходным кодом. Но эти компании могли сделать свой выбор в пользу инструмента с открытым исходным кодом не до конца осознавая возможности, которые открывает Open Source. Двенадцать лет назад сообщество Drupal было достаточно маленьким, чтобы устоявшиеся нормы и надежды передавались от человека к человеку, как легенды и предания. Прежние способы формирования поведения и обеспечения соблюдения норм через социальное взаимодействие (так называемое товарищеское воздействие) не являются достаточно действенными для новых участников сообщества.

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

    В своей программной речи в Амстердаме в 2014 году Дрис отметил, что в мире Open Source уже давно есть механизм признание заслуг отдельных разработчиков (за вклад кодом), но для компаний и организаций пока не выработаны соответствующие методы признания (и поощрения) их заслуг и вклада, который они делают. Он предложил для этого простой способ признания заслуг организаций, которые участвовали в работе над проблемами ядра Drupal либо непосредственно кодом, либо финансируя разработку, о чем было сообщено в докладе Drupal Association в конце 2015 года. С течением времени эта система была расширена, чтобы охватить больше, чем только участие вкладом в код.

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

    Однако, будучи исполнительным директором компании Palantir, я поняла, что невозможность в полной мере отразить вклад, который делают компании (и который от них ожидают), гораздо более проблематична с точки зрения долгосрочных перспектив развития проекта. Некоторые из основополагающих направлений работы сообщества (Совет директоров Ассоциации Drupal, Общественная рабочая группа (CWG), Команда безопасности и другие виды деятельности команды ядра Drupal, не связанные с написанием кода, включая управление релизами, обеспечение взаимодействия, организацию спринтов, а также общую координацию проектов и инициатив) серьезно недооценены или полностью проигнорированы системой признания заслуг. Деятельность Джорджа ДеМета как председателя CWG в среднем занимает от четверти до половины его рабочего времени (и больше в наиболее загруженные периоды), а за последний год он получил только четыре упоминания в системе признания заслуг (остальные члены CWG получили даже меньше!). Сообщество и проект испытывают серьезные трудности из-за подобной неизвестности, которая затушевывает, а со временем и вовсе обесценивает ожидания и надежды сообщества. Это происходит из-за того, что мерилом вклада становится лишь активность, легко поддающаяся измерению, а не то, что имеет действительное значение.

    После выхода Drupal 7, компании, принимавшие участие в его разработке, получили конкурентное преимущество, поскольку те, кто хотел использовать Drupal, знали, какие компании внесли существенный вклад в его создание, и почему это имеет значение. Однако, за последние пять лет, экосистема Drupal расширилась и теперь включает в себя много новых, более крупных компаний, которые приобрели свою репутацию в мире Drupal благодаря партнерским и спонсорским программам.

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

    • Получения статуса в рамках этих программ изначально является платным и нефинансовый вклад в проект не требуются.
    • Эти программы ни прямо, ни косвенно не поддерживают и не побуждают вкладывать время или творческий капитал, от которых зависит Drupal.
    • Финансовые поступления от таких программ приносят пользу инфраструктурным инициативам (Drupal.org и, в более широком плане, Ассоциации), а также способствуют повышению узнаваемости на рынке, которые отнюдь не являются наиболее востребованными для Drupal или сообщества.
    • Эти программы подорвали репутационную систему, в которой предпочтение отдавалось достижениям (успешные внедрения и вклад в Drupal), и заменили ее такой, где предпочтение отдается показателям (финансовый успех и список клиентов).

    Предоставление компаниям возможности позиционировать себя в качестве ведущих экспертов в Drupal без подтверждения того, что они вносят свой вклад, соизмеримый с выгодами, полученными от Drupal, негативно сказалось на устойчивости проекта. В результате это косвенно способствовало исчезновению дифференциации между провайдерами Drupal-услуг, девальвировало конкурентное преимущество, полученное от прямого вклада, и одновременно стимулировало увеличение косвенного вклада через спонсорство, оплату рекламы на Drupal.org и мероприятиях, включая конференции DrupalCon.

    Как я отметила во время дискуссии на конференции OSCON, я вижу во всем этом угрозу на пути достижения прогресса. Наличие большего количества компаний, в том числе крупных интеграторов и агентств, работающих с Drupal — это хорошо и полезно для сообщества. Что нам необходимо совершенствовать, так это методы привлечения людей к развитию и улучшению Drupal и, что особенно важно, найти способы подчеркнуть их деятельное участие в проекте, чтобы восстановить культуру внесения вклада в Drupal. Для достижения этой цели необходимо создать новые и доступные способы внесения вклада, соответствующие как значимым целям Drupal и сообщества, так и ресурсам, которыми располагают компании, будь то время, творческий капитал или иной вклад, который они могут внести в проект. Сосредоточение внимания на том, что имеет существенное значение, укрепит Drupal на пути долгосрочного устойчивого развития.

    Расскажите, как вы участвуете в развитии Drupal и сообщества? Какую поддержку вам оказывает компания, в которой вы работаете?

  • Есть вопрос
  • Статьи и публикации
  • Категории: Друпалургия

    Может быть, это уже не управление контентом. Может быть, это управление контекстом.

    Drupal в рунете - сб, 15/02/2020 - 22:09

    Перевод статьи «Maybe It’s Not Content Management Anymore. Maybe It’s Context Management.» (автор Ernie Smith)

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

    Устарела ли сама концепция систем управления контентом?

    Так можно подумать, основываясь на недавнем решении компании Gartner, известной прогнозами технологических тенденций, которая ежегодно публикует исследования рынка CMS в отчете Magic Quadrant for Web Content Management (магический квадрант управления веб-контентом). Точнее... публиковала до недавнего времени... Спустя два десятка лет Gartner решила отказаться от этого отчета в 2020 году.

    Эти 20 с лишним лет охватывали множество тенденций — взрывной рост блогов, растущее влияние открытого программного обеспечения на индустрию онлайн-паблишинга (в частности, WordPress и Drupal), появление Web 2.0 и отзывчивого дизайна, а также более современные подходы к управлению контентом, такие как JAMstack и headless CMS. Однако в 2020 году компания Gartner решила, что нужен новый термин для обозначения пространства цифрового контента, который бы лучше соответствовал текущему состоянию рынка. Как отмечает CMSWire, Gartner теперь применила более широкий подход с помощью своего нового отчета Magic Quadrant for Digital Experience Platforms (магический квадрант платформ цифрового взаимодействия).

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

    «Теперь это не только веб, и, безусловно, мы должны управлять новыми каналами распространения информации: Alexa, чат-боты и различные устройства», — сказала ведущий аналитик Gartner Ирина Гусева изданию CMSWire. «Контент не умирает. Он просто превращается в исходную сущность систем управления контентом, которые были предназначены для разных типов контента, а теперь и для разных каналов.»

    Содержание и контекст повсюду

    В значительной степени пересмотр отчета Magic Quadrant связан с ростом влияния таких игроков, как компания Acquia, основного разработчика Drupal, и Adobe, которая недавно приобрела Magento и Marketo, чтобы увеличить свое присутствие в цифровом маркетинге.

    Новый отчет в основном обходит стороной вопросы о роли открытого исходного кода в современном управлении контентом. Так, например, компания Automattic, которая управляет разработкой невероятно популярного WordPress, отсутствует в новом исследовании, хотя в отчете Magic Quadrant for Web Content Management, вышедшем прошлой осенью, она была упомянута. Ребрендинг отчета дает понять, что, по мнению Gartner, все более важной становится поддержка крупной компании.

    Я, по правде говоря, скептически отношусь к этому. Вы можете получить довольно хорошую поддержку от организаций, которые управляют платформами CMS с открытым исходным кодом. Но я думаю, что в Gartner правы: если мы ограничимся управлением контентом только в интернете, то это существенно сузит наши возможности. Мы живем в мире, где дистрибуция контента стала важна как никогда. Искусственный интеллект и голосовые помощники — инструменты, которые не были существенными десять лет назад, теперь стали повсеместно распространенными. И в какой-то момент ваша организация должна начать учитывать их в стратегическом плане и, если не сегодня, то в ближайшем будущем.

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

    В следующий раз, когда вы услышите термин «CMS», подумайте о нем как о «системе управления контекстом». Позволяет ли этот инструмент упростить дистрибуцию контента, скажем, через API? Или вам придется извернуться, чтобы добиться этого?

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

    Сегодня контекст стал важнее, чем когда-либо.

  • Предлагаю решение
  • Статьи и публикации
  • Категории: Друпалургия

    Drupal: Создать свою ajax команду (8)

    Пример создания ajax команды для вывода сообщений в консоль браузера.

    src/Ajax/ConsoleLogCommand.php:

    namespace Drupal\modulename\Ajax;   use Drupal\Core\Ajax\CommandInterface;   class ConsoleLogCommand implements CommandInterface {   protected $message;   /** * Command constructor. */ public function __construct($message) { $this->message = $message; }   /** * {@inheritDoc} */ public function render() { return [ 'command' => 'consoleLog', 'message' => $this->message, ]; }   }

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Создать свой ajax индикатор прогресса

    Пример создания индикатора прогресса с именем toggleClass, который добавляет/удаляет класс у элемента:

    (function ($, Drupal) {   /** * Create custom progress type "toggleClass". * @see Drupal.Ajax.prototype.beforeSend() */ Drupal.Ajax.prototype.setProgressIndicatorToggleclass = function () { var $progressTarget = this.progress.target ? $(this.progress.target) : $(this.element); var progressClass = this.progress.class ? this.progress.class : 'ajax-progress-animation';   // Add class $progressTarget.addClass(progressClass);

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Красивые release notes на drupal.org

    Drupal в рунете - вс, 02/02/2020 - 22:20

    Задался я сегодня вопросом, как на drupal.org делают "красивые" release notes. Например https://www.drupal.org/project/jsonapi/releases/8.x-2.1

    Красивость в том, что номер issue является ссылкой на issue, а имя пользователя ссылкой на пользователя. Плюс есть разделение по типу issue (bug, task, feature)

    Выяснилось, что есть инструмент помогающий в этом. Это drupalorg-cli

    Пример использования:

    1) Переходим в каталог, где находится .git вашего модуля
    2) Запускаем drupalorg rn 8.x-1.0, где 8.x-1.0 это номер ПРЕДЫДУЩЕЙ версии
    3) Получаем в ответ что-то вроде

    <p><em>Add a summary hereem>p>
    <h3>Contributors (1)h3>
    <p><a href="https://www.drupal.org/u/ivnish">ivnisha>p>
    <h3>Changelogh3>
    <p><strong>Issues:strong> 2 issues resolved.p>
    <p>Changes since <a href="https://www.drupal.org/project/visually_impaired_module/releases/8.x-1.0">8.x-1.0a>:p>
    <h4>Featureh4>
    <ul>
      <li><a href="https://www.drupal.org/node/3110474">#3110474 by ivnish:">https://www.drupal.org/u/ivnish">ivnish: Allow choose image or text in the block
    ul>
    <h4>Taskh4>
    <ul>
      <li><a href="https://www.drupal.org/node/3025823">#3025823 by ivnish:">https://www.drupal.org/u/ivnish">ivnish: Fix coding standards
    ul>

    4) Вставляем этот код в release notes вашего модуля на drupal.org при создании нового релиза.

    Выглядит это примерно вот так

  • Drupal 8
  • Drupal 7
  • Разработчикам Автор ivnish Разработка, поддержка и лечение сайтов после заражения
    Категории: Друпалургия

    Drupal: Отправить уведомление о новом заказе в Commerce 2

    Во втором комерце практически все хуки заменили на события, поэтому теперь вместо реализации hook_commerce_checkout_complete() надо подписаться на событие commerce_order.place.post_transition:

    src/EventSubscriber/ModulenameEventSubscriber.php:

    namespace Drupal\modulename\EventSubscriber;   use Drupal\commerce_order\Entity\OrderInterface; use Drupal\state_machine\Event\WorkflowTransitionEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface;   class ModulenameEventSubscriber implements EventSubscriberInterface {   /**

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Функции для работы с адресами в twig

    Функция file_url($uri)

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

    {{ file_url('public://images/example.jpg') }} {# /sites/default/files/images/example.jpg #} {{ file_url('/images/example.jpg') }} {# /images/example.jpg #} {{ file_url('images/example.jpg') }} {# /images/example.jpg #}

    Функция path($name, $parameters, $options)

    Возвращает относительный адрес по роуту.

    {{ path('entity.node.canonical', {'node':123}) }} {# /node/123 #}

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Добавить в основные настройки сайта свою опцию

    Пример добавления в основные настройки сайта поля для ввода телефона:

    1. MODULENAME.module:

    /** * Implements hook_form_FORM_ID_alter(): system_site_information_settings. */ function MODULENAME_form_system_site_information_settings_alter(array &$form, FormStateInterface $form_state) { $form['site_information']['site_phone'] = [ '#type' => 'textfield', '#title' => t('Phone'),

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    С девятнадцаткой! Дру!

    Drupal в рунете - ср, 15/01/2020 - 21:17

    С днем рождения, капелька! Ты все лучшеешь. Совершенствуешься.

    Не останавливайся!
    А мы - прикроем.

    Какоой же славныый паа-арень! Та-тара-та-там-там... Друпал.

    ЗЫ - Дрисовы поздравления тут: https://dri.es/happy-nineteenth-birthday-drupal

  • Есть вопрос
  • Статьи и публикации
  • Категории: Друпалургия

    Drupal: Как сделать чтобы все письма отправлялись в html формате (8)

    1. Скачиваем модуль Swift Mailer — composer require drupal/swiftmailer

    2. Включаем — vendor/bin/drush en swiftmailer

    3. На странице admin/config/swiftmailer/messages выбираем формат сообщений HTML и убираем галочку с опции Respect provided e-mail format:

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Обновление drupal.ru до Drupal 8

    Drupal в рунете - вс, 12/01/2020 - 18:02

    Всем привет!

    Мы наконец-то закончили с подготовительными операциями и начали активную стадию по обновлению нашего любимого сайта на Drupal 8. Да, многие уже и не верили, что это когда-нибудь произойдет. Также многие говорили, что "вот когда будет Drupal 8, вот тогда я и буду помогать". Вот и настал этот день

    Итак, что будет представлять из себя новый drupal.ru?

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

    Очень вовремя к команде присоединился Мирослав Ли взяв на себя разработку основного функционала "вопросов и ответов". Было решено разработать контрибный модуль (мы назвали его "Your own Stack Overflow"), чтобы и у других разработчиков со всего мира была возможность внести вклад в развитие drupal.ru (многоходовочка ). Модуль уже в виде альфа-версии, но работы еще очень много.

    Поэтому я приглашаю всех, у кого есть время и желание, а также навыки разработки модулей для Drupal 8, оказать помощь нашему общему делу. Тестируйте, пробуйте, пишите issues

  • Drupal8
  • Drupal7
  • Есть вопрос
  • Сайт и проект Drupal.ru
  • Категории: Друпалургия

    Drupal: Программно наполнить меню ссылками на термины таксономии

    Пример программного наполнения меню main ссылками на категории из словаря category (повторение функционала модуля Taxonomy Menu).

    src/Plugin/Derivative/TermLinks.php:

    class TermLinks extends DeriverBase {   /** * {@inheritDoc} */ public function getDerivativeDefinitions($base_plugin_definition) { /** @var TermStorageInterface $term_storage */ $term_storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Добавить в меню динамическую ссылку

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

    src/Plugin/Menu/MyDynamicMenuLink.php:

    class MyDynamicMenuLink extends MenuLinkDefault {   /** * {@inheritDoc} */ public function getTitle() { $current_user = \Drupal::currentUser(); return $current_user->isAuthenticated() ? $current_user->getAccountName() : t('Registration'); }   /** * {@inheritDoc} */

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Программная реализация ЧПУ

    Задача — из адреса в формате /catalog/notebooks?price_from=xxx&price_to=yyy, в котором /catalog/notebooks это синоним термина, а ?price_from=xxx&price_to=yyy динамические параметры, сделать человекопонятный адрес в формате /catalog/notebooks/price-xxx-yyy.

    Теория есть у niklan'a, поэтому сразу к коду.

    Для решения надо создать сервис с двумя методами:
    processOutbound() — изменяет исходящие адреса в новый формат

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Модуль EAV Field — хранение большого числа характеристик сущности в одном поле

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

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Drupal: Как расширить функционал фильтр-плагина Views? (добавляем возможность фильтровать числовые поля по нескольким значениям)

    Пример добавления возможности фильтровать числовые поля по нескольким значениями (добавления оператора "in").

    1. В папке своего модуля src/Plugin/views/filter создаём класс и наследуем его от класса, который нужно расширить. В этом классе переопределяем нужные методы и по необходимости добавляем свои. Аннотацию плагина добавлять не нужно.

    class ExtendedNumericFilter extends NumericFilter {   /** * {@inheritDoc} */ public function operators() { $operators = parent::operators();   $operators['in'] = [ 'title' => $this->t('Is one of'),

    Читать дальше →

    Похожие записи:

    Категории: Друпалургия

    Страницы

    Подписка на Друпалургия сбор новостей - Друпалургия