Друпал 8


Drupal — любимая многими и мной в том числе, CMS. Когда-то, она славилась высоким уровнем защиты, стабильности, а так-же простотой модифицирования. Сохранила ли новая Drupal, а именно Drupal 8 — свои положительные стороны? И почему вебмастера все больше обращают внимание в сторону joomla и wordpress? Давайте разберемся.

Ремарка — в релизе, актуальная на данный момент, версия Drupal 8, а именно 3.2

Минимальные системные требования

В отличие от предыдущей версии, Druapl 8 требует, чтобы на вашем сервере стоял минимум php 5.6, а еще лучше 7 и выше, ибо, php этих версий работают на порядок быстрее. Многие вебмастера все еще используют php 5.4, а так-как обновление версии этого языка — та еще проблема, drupal тут однозначно проигрывает своим более гибким конкурентам. К счастью, у меня на сервере стоит стабильный php 5.6, а это значит, что Drupal будет работать.

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

  • MySQL 5.0.15/MariaDB 5.1.44/Percona Server 5.1.70 or higher with PDO,
  • PostgreSQL 8.3 or higher with PDO,
  • SQLite 3.3.7 or higher

Установка

В плане установки особо ничего не поменялось, выбираем язык —

Друпал 8

После чего необходимо будет указать настройки базы данных на следующей форме —

Друпал 8

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

Нажимаем на сохранение и через 15-20 секунд вводим данные администратора, после чего получаем работающий сайт.

Быстро, легко. Установка гораздо проще чем у той-же joomla 3 (к которой еще и отдельный языковой пакет придется устанавливать вручную), но зато, сам Drupal уступает ей в управлении материалами, а потому плохо подходит для сайтов — статейников.

Плюсы — автоматическая загрузка локализации, быстрая установка

Минусы — требование к железу(php 5.6)

Первый взгляд

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


Друпал 8

Довольно чисто выглядящая стандартная тема + админка. Не густо, особенно в сравнении с конкурентами. Удобство в полной … удобства нет. Чтобы добавить новый материал надо сделать аж 3 клика мышью (Содержимое -> Добавить материал -> Статья), причем каждый раз у нас будет грузиться новая страница. Это УЖАС.

Друпал 8

Страница содержимого выглядит убого и неинформативно + грузится долго. Нет возможности быстро перейти и добавить новый материал.

Теперь о текстовом редакторе. Наконец-то в Drupal соизволили завезти tinymce, что не может не радовать, до поры до времени.

Друпал 8

Имеется 3 текстовых формата, все как обычно, короче. Из коробки(алилуя!) есть возможность вставить в материал изображение. Но не стоит радоваться слишком сильно, ибо медиа-менеджер так и не завезли.

Друпал 8


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

Шаблон, предоставляемый по умолчанию тоже не блещет своей функциональностью: шрифт мелкий, острые грани сочетаются со сглаженными. Сложность настройки и установки — прилагается. К примеру в wordpress 80% шаблонов можно прямо из админки установить. В последней joomla так тоже можно сделать, что стало для меня приятным открытием. А тут, как было все на уровне 2009 года, так и осталось.

Друпал 8

Шрифт размером 14 пикселей в 2017 году… это что-то особенно извращенное видимо. О, разумеется, мы можем поставить в Drupal другой шаблон, например, премиумный. Давайте посмотрим цены на премиумные шаблоны к этой CMS.

Простой новостной шаблон стоит 69$, хотя, в отсутствие конкурентов эту цену я называю приемлимой. Для того-же wordpress шаблоны продаются по 45$, что больше чем на 1000 рублей дешевле. И опять-же малые шрифты на таких премиум-шаблонах раздражают. Серьезно, зачем новостному сайту шапка в пол-экрана, да еще и красного цвета? Туда что, люди заходят смотреть на шапку? Серьезно?


Итого:

Плюсы — …. что-то не нашел

Минусы — медленно, не удобно, сложно, проблемы с нормальными шаблонами

Годится ли Drupal 8 под статейники с тысячами материалов? Нет. Абсолютно точно — нет. Drupal 7 еще можно было приспособить к статейникам ибо там была более удобная админка с оверлеем. Но восьмую версию, увы, из коробки ни к чему не приспособить.

Так можно ли исправить ситуацию? Ну… я попробую.

Превращаем гадкого утенка в … менее гадкого

К счастью для нас — часть минусов из прошлого пункта можно исправить, повысив интерактивность и удобство админки. Для начала обратим внимание на плагин — Admin Toolbar. Он позволяет изменить убогое стандартное меню в лучшую сторону.

Чтобы быстро установить плагин, достаточно скопировать ссылку на архив плагина, вот так —

Друпал 8

А потом вставить ее в соответствующее поле в Drupal, перейдя в Расширения -> Установить новый модуль:

Друпал 8

Запустив установку мы получаем статусный отчет, следующего вида

Друпал 8

Теперь мы можем включить установленную модификацию.


Друпал 8

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

Друпал 8

Это уже лучше, чем было. Но что мешало авторам CMS сразу сделать такое меню, не заставляя нас работать с сырым движком?

В дополнение к этому меню, советую вам поставить плагин Adminimal Admin toolbar, чтобы ваше меню выглядело красиво, как у меня.

Друпал 8

Архиважно установить так-же Module Filter — этот плагин позволяет удобно работать с той кучей модификаций, которые нам приходится устанавливать. Собственно, так выглядит список модулей, после активации этого плагина —

Друпал 8

Уже лучше, верно?

Впрочем, все равно плохо. Жаль, а ведь именно Drupal был той самой CMS, которая мне понравилась сильнее всего.

Производительность

Даже в базовом виде, всего с одним материалом, страница грузится почти 600 миллисекунд:


Друпал 8

 

 

WordPress, для сравнения, прямо на моем блоге, грузится за 500 миллисекунд:

Друпал 8

И это притом, что тут стоит тяжеленная тема и туча расширений.

Кодинг

Давно пора бы уже перевести движок под bootstrap или его аналоги. Но нет. Увы. Разработчикам Drupal рассказать об таком замечательном фреймворке, видимо, забыли.

Понятия не имею, на сколько удобно сейчас программировать под Drupal, одно скажу — под ЭТО свой код я писать точно не буду.

Вывод

Число недостатков сильно перевешивает количество достоинств.

Drupal 8 не оправдал моих ожиданий, а потому я решил полностью отказаться от использования этой CMS, как и многие другие вебмастера. Жаль, что это случилось, но ничего не поделаешь. Сегодня WordPress и Joomla — гораздо удобнее, лучше и быстрее, не говоря уже о DLE.


 

aftamat4ik.ru

Привет друзья, все мы наверное уже устали ждать, когда же разработчики все таки выпустят в свет первую, стабильную версию нового поколения Drupal. Не знаю как вы, а я жду этого момента с нетерпением, хотя честно говоря, оно уже заканчивается. И дело не в том, что 7я версия меня чем-то не устраивает — я ее считаю одной из лучших версий, а в том что тяга к чему то новому меня никогда не покидает. Сегодня просто хочу поделиться своими впечатлениями при работе с новой веткой Drupal. При написании статьи – доступна только альфа версия 8.0 – alpha 10. Скачать ее можно здесь

Инсталяция:

Весь процесс установки движка ничем не изменился, все так же необходимо скопировать файл default.settings.php, в каталоге sites/default, затем вставить его туда же и затем переименовать в settings.php. При установке движка, в глаза сразу же бросается измененный интерфейс, как по мне он стал лучше. На что же стоит обратить внимание, так это на минимально поддерживаемую версию PHP, теперь она не должна быть ниже 5.4 (любители использовать Denwer из коробки в пролете). Также есть приятный момент выбора языка еще при установке движка (правда у меня перевёлся он на половину). Установка происходит значительно дольше чем 7я ветка, так что есть повод добавить значения повыше в max_execution_time вашего файла php.ini. Что касается файловой системы, то есть так же изменения, теперь все файлы ядра (модули, темы, библиотеки и т.д.) расположены в папке core, для разработчиков сайтов теперь модули располагаются в папке modules, в корне сайта, а темы в папке themes , так же в корне сайта. Подключение дополнительных библиотек осталось без изменений, т.е. sites/all/libraries.


Интерфейс:

После установки движка, мы все так же наблюдаем страницу «Добро пожаловать», и сразу же видим измененный тулбар

Измененный тулбар в Drupal 8

Так же есть, опция которая меня очень порадовала – это редактирование контента без дополнительно перехода в overlay (если вы его использовали), а прямо со страницы контента (Inline редактирование)

Inline редактирование контента в Drupal 8

Так же появился встроенный редактор (CKEditor), который из коробки умеет загружать изображения в контент, без использования дополнительных модулей.

Встроенный CKEditor

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

Так же Drupal поддерживает адаптивный дизайн из коробки (для встроенных тем естественно, но это так же отображается и на тулбаре)


Адаптивный дизайн в Drupal 8

Модули:

Ну наконец-то, один из самых востребованных модулей Drupal – Views, все таки включили в ядро и кстати, не малую часть работы он взял под свое у правление, например как вывод материалов на главной или отображение блока «новые комментарии». Вот список представлений, которые идут из коробки:

Список представлений в Drupal 8 из коробки

Про редактор CKEditor – мы уже упомянули. Так же в комплект теперь входит и модуль Migrate, для тех кто не в курсе, данный модуль позволяет мигрировать с например Drupal 7 на Drupal 8, а также поможет перенести сайт с другого движка. Появился новый модуль Responsive image – который должен изменять размеры изображения в зависимости от разрешения экрана текущего пользователя, вещь очень актуальная, так как все больше сайтов теперь ориентируются на адаптивные дизайны, но на данный момент были не решенный вопросы по данному модулю и кстати до конца так и не принято решение будет ли данный модуль в релизе Drupal 8, кому интересно может почитать вот здесь

Список удаленных модулей:

  • Dashboard
  • Poll
  • Blog
  • Profile
  • Open ID
  • PHP filter
  • Trigger

Но для тех, кто все таки хочет использовать и дальше эти модули в свои проектах, то может не переживать – они будут доступны в качестве отдельных модулей на d.org. Хотя по себе скажу, что мне они по сути не нужны, разве что только Trigger, но с приходом Rules и в нем отпадает необходимость.

Поля

Все мы наверное радовались, когда в D7 включили в ядро CCK и теперь пришло время дополнить его составляющую, а именно в Drupal 8 появились новые типы полей такие как:

  • Datetime — поля для ввода даты и времени или просто даты
  • Entity Reference – позволяет связывать контент между собой
  • Link – создание ссылки
  • Telephone – поле для ввода телефона

Ну а остальные остались без изменений.

Мультиязычность

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

Для разработчиков

Итак, теперь поговорим о внутренних изменениях движка. В новой версии шаблонизатором тем будет являться Twig, phpTemplate не будет поддерживаться (по крайней мере из коробки). Для тех, кто незнаком с данным шаблонизатором рекомендую все-таки начать потихоньку его изучать (официальный ресурс шаблонизатор http://twig.sensiolabs.org/), ибо релиз D8 не загорами. Twig имеет довольно не привычный синтаксис, но к которому потом очень быстро привыкаешь, да и в любом случае будет цикл статей про темизацию Drupal 8.

Внедрение использование ООП PHP. Так что для не знающих опять же есть чему учиться. Полный переход на ООП в D8 не произойдет, разработчики обещают это сделать в D9.

Частичное использование компонентов фреймворка Sympfony2, кстати Twig пришел оттуда же, список компонентов:

  • ClassLoader
  • EventDispatcher
  • Service Container
  • HttpKernel
  • Yaml
  • Serializer
  • Translation
  • Process
  • Validator

Для любознательных – описание и использование компонентов

Кстати, написание модулей теперь происходит через как раз один из компонентов – Yaml.

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

Мнение

Как по мне, разработчики очень сильно постарались и сделали ставку в сторону прогресса (ООП, Symphony2), но новый D8 кардинально отличается от 7ки и для его понимания теперь необходимо разобраться с моделью Symphony2, а на это опять же нужно время. Думаю останется еще много приверженцев, что нужно было оставаться так же на системе хуков и на привычном движке темизации, но как говорится учиться никогда не поздно, по крайней мере для меня. На этом все.

Возможные проблемы при установке:

При установке убедитесь, что у вас существует и подключен php_fileinfo.dll, до версии PHP 5.3 он шел отдельным модулем, начиная с версии PHP 5.3 и выше — включен в ядро. Для активации в php.ini добавьте (расскоментируйте) эту запись:

drupalfly.ru

Расписание выхода версий

Расписание выхода версий:

  • Первая среда каждого месяца — окно для PATCH-версии 7.x и 8.x.x
  • Третья среда каждого месяца — окно для security-версии 7.x и 8.x.x

Прошедшие выходы версий:

  • 2015.11.19 — выход Друпала 8.0.0
  • 2016.04.20 — выход Друпала 8.1.0
  • 2016.10.05 — выход Друпала 8.2.0
  • 2017.04.05 — выход Друпала 8.3.0
  • 2017.10.04 — выход Друпала 8.4.0
  • 2018.03.07 — выход Друпала 8.5.0
  • 2018.09.05 — выход Друпала 8.6.0

Предстоящие выходы версий:

  • 2019.05.01 — выход Друпала 8.7.0
  • 2019.12.04 — выход Друпала 8.8.0

Экспериментальные модули

В Друпале 8 введён подход «экспериментальных модулей». Это модули, которые включены в ядро Друпала с целью тестирования, но пока ещё полностью не поддерживаются. На странице модулей они размещены в отдельной секции «Ядро (Эксперимент)».

В отличие от других модулей, экспериментальные модули могут добавляться в MINOR-версии, вместе с этим, они могут меняться в PATCH-версии, включая изменение API, до тех пор, пока остаются экспериментальными. Это позволяет веб-мастерам заранее познакомиться и проверить работу тех модулей, которые в итоге должны стать частью ядра.

Как узнать какая версия Друпала у меня стоит?

  • Можно перейти на страницу статуса системы
  • Посмотреть файл CHANGELOG.txt в корневой папке

drupal.org.ru

Плюсы и минусы вариантов

Стандартный способ

  • Плюсы
    • Официальный и стандартный вариант установки. Для кого-то это может стать очень важным решающим фактором.
    • Не требует никаких дополнительных знаний и подготовки. Достаточно скачать архив, распаковать его в webroot проекта и запустить установку. Если вы пришли в Drupal из других CMS, это будет вам знакомо.
    • Данный вариант установки ядра без проблем и доп. настроек переносится на всевозможные хостинги и VPS. Опять же, стандартное поведение для большинства CMS, если не всех.

Drupal, как минимум с 7-ой версии, позиционируется как CMF решение. То есть, это некая золотая середина между CMS и чистыми фреймворками. Если у Drupal 7 был перевес в сторону CMS, то Drupal 8 ещё сильнее перевешивает в сторону фреймворков. И сторонние зависимости от Symfony ещё сильнее его туда склоняют. Исходя из этого, я выделяю следующие минусы.

  • Минусы
    • Самый фатальный недостаток, который и является следствием всех проблем и остальных минусов — то что composer внедрили после релиза Drupal 8, в Drupal 8.1. Получилось так, что структура проекта уже сформировалась и люди уже держали продакшен сайты на 8-ке. Но данная структура совершенно неудачное решение для такого уровня CMS. Именно поэтому все проблемы с composer на данном варианте и возникают. Конфликты версий, проблемы с зависимостями, потерянные файлы — всё это отсюда, потому что всё в куче.
    • Структура для такого уровня CMS просто напросто неудобная. Drupal 8 нам принес не только новую цифру в версии? и какие-то API и фишки, он также полностью меняет процесс разработки сайтов на Drupal в сравнении с Drupal 7, а структура, при этом, осталась прежней с косметическими изменениями.
    • Drupal 8 полностью крутится вокруг конфигураций. Конфигурации можно смело отнести в разряд кодовой базы. Это самые обычные YAML файлики, но при этом, они содержат кучу важной и приватной информации. Такие файлы ни в коем случае не должны быть доступны из сети по запросу. К сожалению, структура такого подхода делает данный момент максимально уязвимым. Конфиги, как вы ни крутите, будут лежать в пределах вебрута проекта, вся надежда на то, что .htaccess отработает корректно и вы его не потеряете, а если у вас NGINX, то вообще, если сами не проконтролируете, они из коробки будут качаться у вас. Такие файлы хранить в вебруте и ниже по иерархии — не нужно. Но выбора тут у нас нет.
      • ? Вы и сами можете проверить. Попробуйте запросить любой конфиг файл из проекта прямым запросом: http://example.com/sites/default/files/config_XYZ/sync/automated_cron.settings.yml (XYZ замените на ваш хэш, и если у вас конфиги экспортируются не в sites/default/files/config_XYZ, на новый путь). Скачался? Это очень тревожный звоночек. А что если эти XYZ узнаеет третье лицо? А если вы поменяете путь на какой-нибудь sites/default/config/sync, где даже XYZ знать не надо? А это очень популярный способ экспорта конфигов. Конфиги имеют стандартное именование у всех сайтов, и если у вас магазин, например, подогнать название конфига от какой-нибудь платежной системы или друго сервиса, и скомпрометировать ваши API ключи, не составит труда. Очень много если, и ни одной причины держать их открытыми для загрузки, НИ-О-ДНО-Й.
    • Аналогично и с зависимостями Composer. vendor директория находится в вебруте проекта. По умолчанию она хорошо защищена и часть файлов при установке оттуда удаляется. Но сторонние зависимости надо контролировать руками и слепо верить им, или проверять в ручную. Но вы сами то в это верите, что вы будите проводить аудит безопасности всех зависимостей которые у вас скачаются по ходу развития проекта, как вами, так и контриб модулями и т.д. там по цепочке зависимостей? Там могут быть совершенно неочевидные пути к взлому, все это, как минимум, компрометирует инфомрмацию о внутреннем устройстве проекта. И опять же, нет ни одной причины их держать открытыми в веб. Как по мне, это плохая практика. Посмотрите на структуру проекта Symfony или Laravel. А это, на минуточку, одни из топовых фреймворков, у которых управление зависимостями также построено на composer и они активно используют YAML конфигурации. Видите где у них index.php, а где конфиги и vendor? Захотите повторить — получится composer drupal project.
    • Возможно вы используете или собираетесь использовать данный способ как способ избежать взаимодействия с Composer, или свести её к минимуму. Возможно, вы сведете, на старте. Но когда у вас начнутся проблемы и конфликты версий, вы в итоге потратите больше времени на решение проблем и возню с ним. Вы не избежите композера никак.

Composer Drupal Project

  • Плюсы
    • От композера вы не убежите, он вас нагонет. А дальнейшая интеграция Drupal и Composer будет только усиливаться. Если же это неизбежно, проще сразу вести проект полностью на нем. Это решит проблемы в будущем, и текущие проблемы. У вас не будет каши, когда часть модулей стоит с drupal.org руками или ещё как, а другая через композер. Проще все вести в композере, зачем вам такой бардак на проекте? И это я не беру во внимания побочные плюсы самого композера, типа лока версий, автопатчинг, и возможность подключать свои приватные репы для обновления кастом модулей.
    • Структура файлов тут немного отличается от оригинальной. Тут появляется всего один новый уровень в иерархии, и это решает все минусы стандартного подхода. vendor и конфигурации тут находятся за пределами webroot проекта, а следовательно, эти файлы не доступны по прямому запросу, никак, вообще. Если вы сами не напишите контроллер который будет их отдавать. И не важно уже, apache у вас или nginx, потеряли вы .htaccess файли или нет, до них просто физически не добраться. Помните пример на проверку выше? Тут даже примера быть не может, так как данные файлы находятся на уровень выше вебрута. Если бы такое можно было писать, то было бы так: http://example/../config/sync/automated_cron.settings.yml. Но такой возможности нет, а следовательно, вы как в танке.
    • Такая структура также очень приятная если вы захотите сделать приватную файловую систему. Опять же, её можно положить в корень проекта, и она автоматически защищена от прямого запроса. Приватную файловую систему рекомендуется выносить за пределы вебрута, тут это будет за пределами и внутри проекта. На стандартном проекте, с 99.999% вероятностью она будет у вас в пределах вебрута. Так как вынести её за пределы? дело очень веселое и повлечет за собой множество проблем. И опять, придется заботиться как бы файлы оттуда не начали качаться по прямому запросу. А тут создали и забыли. Оно просто работает.
    • Репозиторий проекта максимально чистый. Из-за данной структуры и того, что она решает проблемы с композером, как минимум. Вам не придется держать в репозитории ядро друпала, что придется делать с очень высокой вероятностью на стандартном подходе, так как композер качает ядро на стандартном подходе как повезет. В итоге в вашем репозитории окажутся только кастомные темы, модули, а также файлы что вы положите, окружения, докер файлы и вот это вот всё. Никаких контрибов, ядра и зависимостей там не будет.
  • Минусы
    • Самый страшный минус. ? Из-за того что вебрут находится на уровень ниже, то на хостингах и VPS, с 99% вероятностью потребуется легкая настройка. Как правило, просто в настройках сайтадомена меняется настройка индекс файла с index.php на web/index.php. Делов, не более чем на 5 минут на 1 раз.
    • Это не минус, больше рекомендация. С данным подходом очень желательно начать пользоваться git для деплоя изменений. Иначе из него будет не выжать максимум. Деплоить изменения гитом и композером на такой структуре просто кайф.

Вывод

А теперь небольшой мой вывод: Я считаю что способ установки ядра через композер, в реалиях, друпал 8, должен быть одним единственным, как это сделано у Symfony. Вы у них нигде не скачаете на официальном сайте архив с фреймворком. Но по понятным причинам, такое уже сделать просто невозможно, я надеюсь что на такой шаг решатся с релизом Drupal 9. Тут можно дискутировать очень долго, нравится вам композер или нет, но факт в том, что если вы решили использовать Drupal 8, то композер де-факто становится обязательным, поэтому, лучше начать его использовать с самого старта и для всех задач которые он покрывает, а не выборочно там где у вас безвыходная ситуация.

Например, модуль Swift Mailer используется для отправки html писем, очень полезный и нужный. Попробуйте его установить и завести без композера. По факту то поставить можно, но это займет, скорее всего, часы в первый раз, а затем, любое обновлениеизменение композера или модуля — опять семь кругов ада и это даже близко не пара минут даже с опытом. Или Drupal Commerce. В общем, композер вас догонит, как ни крути, да ещё пнет так, что сами не рады будите. Именно поэтому, многие новички могут посмотреть на это, и сказать — «Drupal говно!». К сожалению, они так могут и не понять почему у них столько проблем. И причина тут не в композере, и не в новичках.

Composer — это круто и удобно, но то как он работает и приготовлен в ядре из коробки, вызывает ненависть к нему. Мысль о том, что что-то вы делаете не так, все равно начнет со временем расти у вас в голове, отчасти это проблема ядра, и решение поискать другие варианты установки или ведения проекта на Drupal может быть совершенно неочевидным решением, особенно для новичков. Поэтому этот материал и есть, а также есть composer drupal project.

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

Установка

Стандартный способ

  1. Заходим на страницу с ядром.
  2. Качаем актуальную версию в виде архива.
  3. Распаковываем в webroot вашего проекта.
  4. Устанавливаем.

Корень проекта, он же вебрут выглядит так.

niklan.net

Обновление Drupal 7 до Drupal 8

Процесс миграции больше напоминает создание нового сайта с переносом контента и настроек со старого. То есть в процессе обновления вы создадите полностью новый сайт на Drupal 8, на который уже и будет перенесен старый сайт (на Drupal 7) со всеми его настройками и контентом.

Основные требования

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

Оба сайта должны содержать последние версии Drupal (на данный момент – это Drupal 7.56 и Drupal 8.4.3).

Сайты должны находиться на одном хостинге или, как в моем случае, на одном локальном сервере. Здесь важно, чтобы один сайт мог получить доступ ко всем необходимым данным и файлам другого сайта. Из этого следует, что база данных исходного сайта на Drupal 7 должна быть доступна на сервере новому сайту.

Также необходим доступ и к файлам исходного сайта (папка sites/default/files при стандартной установке). Если файлы сайта хранятся в публичной папке, то они будут доступны через их url. Если же файлы сайта хранятся в приватной папке, то папка должна быть перенесена в место, доступное новому сайту.

На новом сайте Drupal 8 включите системные модули, которые находятся в ядре: Migrate, Migrate Drupal, Migrate Drupal UI. Для этого поставьте галочки напротив них и нажмите внизу страницы кнопку «Установить».

Включение модулей Migrate, Migrate Drupal, Migrate Drupal UI

Как только вы нажмете кнопку «Установить», появится предупреждение о том, что это экспериментальные модули. Даем свое согласие на их установку и нажимаем кнопку «Продолжить».

Подтверждение установки модулей

Включение необходимых модулей

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

В моем случае под новую версию Drupal 8 не оказалось таких модулей, как Gravatar, Simple Anti-Spam и других незначительных модулей, которые в целом не повлияют на работу нового сайта. Эти модули либо не были перенесены на новую версию Drupal, либо были заменены другими более улучшенными версиями, которые выполняют тот же функционал. Аналоги таких модулей можно доставить самостоятельно на новый сайт.

Используемый мной шаблон также не подходит для 8-й версии, поэтому он тоже не импортируется.

Не настраивайте новый сайт на Drupal 8 до окончания переноса

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

Миграция с Drupal 7 на Drupal 8

Как только выполнены все основные требования по подготовке нового сайта на Drupal 8, начинаем саму миграцию.

Чтобы начать миграцию, перейдите на страницу модуля Migrate Drupal UI. Для этого в адресной строке браузера к имени нового сайта допишите через слеш: /upgrade.

Переход на страницу модуля

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

Рекомендации перед миграцией сайта

На следующей странице выберите версию Drupal, с которой будет происходить перенос сайта (1), далее введите название базы данных (2), имя пользователя базы данных (3) и пароль к базе данных (4). Если в таблице вашей базы данных есть префикс таблиц, то обязательно укажите его в дополнительных настройках.

Ниже вам необходимо указать путь к публичной папке с файлами. Поскольку я выполняю миграцию на локальном сервере, то в путь ставлю обратный слеш: sitesdefaultfiles (5). Если вы используете приватную папку, то укажите путь к ней ниже, в поле «Private file directory».

Вносим параметры к базе данных и путь к исходным файлам

Как только все необходимые поля заполнены, нажмите кнопку «Обзор преобразования».

Далее на странице нам показывают отсутствующие пути преобразования, т.е. те модули, которые не удастся импортировать, у меня их 46. Ниже будет идти список доступных путей преобразования, данные которых будут перенесены.

Список модулей, которые не удастся импортировать

Внизу страницы нажмите кнопку «Выполнить преобразование».

Далее вы увидите, как начнется процесс миграции.

Процесс миграции

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

Завершение миграции сайта

Весь процесс миграции записывается в лог, который вы можете просмотреть в разделе Отчеты > Upgrade log. В системных событиях вы увидите, что происходило на каждом этапе миграции.

Записи в логах процесса миграции

Ну, а теперь давайте сделаем выводы.

Выводы

Несомненно Drupal 8 дает множество новых возможностей и преимуществ по сравнение с 7-й версией. И переходить на новую версии однозначно стоит!

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

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

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

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

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

Также напишите, как переходите на новую версию Drupal вы?

На этом все, до скорых встреч 🙂

onedrupal.com

Зарождался друпал в далёком 1999 году, а активно развиваться начал уже с 2001 года. В настоящее время последней версией системы является восьмая. На начало 2015 года восьмая ветка ещё проходит бета тестирование, но уже вполне пригодна для разработки сайтов. Седьмая версия весьма стабильна, но мы не будем ориентироваться на неё, а пойдём в ногу со временем. Итак, Drupal 8. Восьмая версия имеет значительные отличия от 6 и 7 версий. Как в административном интерфейсе, так и в написании модулей. Многие вещи уже есть в ядре. Некоторые из них вошли ещё в седьмую версию системы, какие-то решили включить лишь в восьмой версии. В настоящее время на восьмёрке работает уже порядка 4500 сайтов. На той же семёрке немногим более миллиона. Ещё 150 тысяч на шестёрке и 1.170.000 на более старых версиях движка. Полная статистика здесь https://www.drupal.org/project/usage/drupal Drupal уникален тем, что на его основе можно собрать фактически любой сайт. Например визитку, интернет магазин, каталог, доска объявлений, блог или даже социальную сеть. Скажу честно-неподготовленному пользователю, даже с серьёзным опытом программирования или опытом работы с другими CMS, разобраться в друпале будет сложно. У него достаточно высокий порог вхождения. Но, думаю вы не испугаетесь. На этом всё. Больше не будем углубляться в теорию, а посмотрим как же это всё работает. В ключевых моментах я дам точные определения различных сущностей и объясню для чего они предназначены и как их можно использовать в реальных задачах. Начнём с установки системы на сервер. Это может быть как локальный сервер, так и сервер в интернете. Скажу сразу-друпал достаточно требователен к ресурсам сервера, в частности к оперативной памяти. Для Drupal 8 нужно минимум 128Mb ОЗУ. Но, чем больше-тем лучше. Я буду вести разработку на VPS под управлением Debian 7. Друпал так же вполне работает под Windows. Вы уже должны знать, как создать домен и базу данных, в нашем случае это будет MySQL. Скачиваем последнюю версию друпала тут https://www.drupal.org/project/drupal Я скачиваю 8.0.0-beta7 Вы можете скачать в zip архив и распаковать на локальной машине. Если используете сервер-лучше качать в tar.gz и распаковывать(командой tar xvzf archive.tar.gz) уже на сервере, используя протокол SSH. Будьте внимательны — в папке с сайтами(обычно /var/www) должна быть папка сайта и в ней листинг файлов друпала установка Drupal 8 Я создал БД с именем dr8_test, а так же пользователя dr8_user Открывайте сайт в браузере. Если вы всё сделали верно — то попадёте на адрес core/install.php Хочу обратить ваше внимание-что в восьмёрке стандартная тема свёрстана адаптивно и отлично адаптируется под любые разрешения экранов. установка Drupal 8 Систему можно сразу ставить на русском языке. В шестой и даже седьмой версиях локализация проводилась вручную или с помощью специальных модулей. Я выберу русский язык. Я сразу же столкнулся с ошибкой «The translations directory does not exist.». Установщик сразу подсказывает как её решить «Create the directory sites/default/files/translations .». Важно! При работе с сайтом вы можете загружать файлы в директорию sites/default/files. Модули нужно складывать в sites/default/all/modules и темы в sites/all/themes. Создаём папку translations в директории sites/default/files. Папки files в sites/default тоже нет — создадим и её. Папки files и translations должны иметь права 777. Если создали папку-то выбираем стандартный профиль и продолжаем установку: установка Drupal 8 Я получил ещё 2 ошибки «The Файл настроек does not exist.» и «The Services file does not exist.» установка Drupal 8 Для решения первой проблемы нужно создать копию файла sites/default/default.settings.php и назвать её settings.php. Дать права 777. Если вы работаете на сервере и у вас под рукой консоль — можете использовать данные команды, находясь в корне сайта: Вторая проблема решается аналогично, только с файлом services.yml. Я так же приведу листинг команд. Обе ошибки ушли и на следующем шаге необходимо ввести данные для доступа к БД. Дополнительные настройки оставляем по-умолчанию. Некоторые хостинги имеют хост базы данных отличный от localhost, так что не забывайте об этом. установка Drupal 8 Пошел процесс установки. Устанавливаются модули ядра. установка Drupal 8 Что стоит знать о модулях. Модуль — это некий функциональный блок, который выполняет ту или иную функцию. Например позволяет комментировать материалы, даёт возможность оценить материал по пятибальной шкале, транслитерирует адреса, подгружает блоки аяксом и огромное количество другого функционала. Модули могут зависеть друг от друга. Например 1 модуль может требовать для включения ещё 5 других модулей, некоторые из которых могут требовать другие модули. Придётся их все скачать и включить. Все модули и темы хранятся на официальном сайте http://www.drupal.org . Они все бесплатны. Модули не имеют обратной совместимости. То есть модуль, написанный для 8 версии движка, будет работать только с ядром восьмой версии. Для семёрки нужен модуль, написанный под 7 версию. С шестёркой аналогичная ситуация. Тоже самое касается и тем. Исключение составляют лишь библиотеки, но только благодаря тому, что это сторонние скрипты и пишутся не под друпал. Если вы скачали модуль и положили его в папку sites/all/modules — то модуль ещё не будет работать, его ещё надо включить, но об этом позже. Ненужный модуль нужно выключить, потом удалить и лишь после этого можно физически удалить папку с модулем. Ну вот все модули установились и друпал выдал сообщение «Все необходимые изменения в sites/default и sites/default/settings.php были выполнены, но вы должны удалить разрешение на запись в них в целях безопасности.» Отнестись к этому нужно со всей серьёзностью. Файлам sites/default/settings.php и sites/default/services.yml выставляем права 444, то есть только чтение. На завершающей странице задаём название сайта, а так же логин и пароль администратора. Далее идёт завершение установки и можно лицезреть установленный сайт. установка Drupal 8 На этом установка сайта завершена. К оглавлению Следующая статья

php-include.ru

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

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

Ускориться!

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

Еще одна причина, почему D8 работает быстрее, чем D7 — он посылает меньше биты информации и части кода JavaScript на каждую страницу, и только те, которые необходимы в данный момент. Для вас это означает, что наша команда разработчиков читать и расширять код в этой CMS с меньшими затратами времени.

Улучшить безопасность!

Symfony PHP и Twig , включенные в D8, обеспечивают более высокий уровень безопасности . Таким образом, стало под силу отслеживать и удалять код, который способен манипулировать паролями или искажать вид сайта. Это особенно актуально для сайтов с возможностью комментирования пользователями.

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

Наслаждаться производительностью работы D8 и его масштабируемостью!

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

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

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

Легко интегрироваться!

Друпал — отличная платформа для управления контентом (CMS), а также и управления цифровым пользовательским опытом. Drupal 8 можно легко интегрировать с текущими и будущими цифровыми технологиями для маркетинга и не только, особенно важными в наши дни. Это дает вам гибкость и свободу выбора технологий, внедрять, например, автоматизация маркетинга или e-mail маркетинг для связи с клиентами. D8 имеет модули для интеграции с социальными сетями , ведь является мощным инструментом и для управления взаимоотношениями с потребителями (CRM).

Общаться на понятном языке!

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

Выделиться среди конкурентов!

Ядро Друпалу нацелено сделать ваш веб ресурс уникальным. Это дает вам свободу принимать решения относительно общего вида сайта. С помощью плагинов, инструментов и дополнительных функции Drupal 8 обеспечит вашему веб-продукта прогрессивный дизайн, который ваши клиенты не смогут найти где-либо в ваших конкурентов.

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

sitesnulya.ru

Эта статья является второй из трех частей серии о том, как построить модуль Drupal 8.
Как построить модуль Drupal 8:

• Построение модуля Drupal 8: маршрутизация, контроллеры и меню ссылок
• Построение модуля Drupal 8: блоки и модули
• Построение модуля Drupal 8: управление конфигурацией и служебный контейнер

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

В этой статье мы продолжим работу с нашим модулем, который вы можете посмотреть в этом хранилище, и рассмотрим два других важных функциональных элемента: блоки и формы.

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

Блоки Drupal 8

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

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

Давайте продолжим и создадим простой тип блока, который выводит на экран по умолчанию «Привет, Мир!«. Все, что нам понадобится — это один файл классов, расположенный в папке src/Plugin/Block корневой директории нашего модуля.

Давайте назовем наш новый тип блока DemoBlock, и, естественно, он должен будет содержаться в файле с именем DemoBlock.php. В этот файл мы для начала можем добавить следующее:

Как и для любого другого файла классов, мы начинаем с определения области имен нашего класса. Затем мы используем класс BlockBase, так чтобы мы могли расширить его, а также класс AccountInterface, так чтобы мы могли получить доступ к текущему активному пользователю. Затем следует то, с чем вы определенно не встречались в Drupal 7: аннотации.

Аннотации являются инструментом пояснения PHP, они расположены в блоке комментариев того же файла, в котором определяется класс. Используя аннотации, мы сообщаем Drupal, что мы хотим зарегистрировать новый тип блока (@Block) с идентификатором demo_block и admin_label — Demo block (передаваемым через систему перевода).

Далее, мы расширяем класс BlockBase в наш собственный DemoBlock, внутри которого мы реализуем два метода (наиболее распространенные из них мы будем рассматривать подробно позже). Метод build() — наиболее важный из них, так как он возвращает отображаемый массив, который будет выводить блок. Метод access() контролирует права доступа для просмотра этого блока.

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

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

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

Конфигурация блока Drupal 8

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

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

Во-первых, мы должны определить форму, содержащую текстовое поле. Так в нашем классе DemoBlock мы можем добавить новый метод blockForm():

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

Это элементы стандарта OOP. Затем мы извлекаем и сохраняем конфигурацию этого блока.

Класс BlockBase определяет метод getConfiguration(), который делает это для нас. И в случае, если он был уже установлен, мы устанавливаем для demo_block_settings значение #default_value.

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

Этот метод также находится внутри класса DemoBlock, и все, что он делает, это сохраняет значение поля demo_block_settings в качестве нового пункта конфигурации блока (с ключом того же имени для соответствия).

Наконец, мы должны настроить наш метод build(), так чтобы включить в него имя, которому блок должен говорить «Привет!«:

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

Для этого отредактируйте блок, чтобы назначить ему регион, и добавьте имя, которому блок должен сказать «Привет!»

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

Формы Drupal 8

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

В Drupal 8 функции определения формы сгруппированы внутри класса. Давайте определим простой класс DemoForm в файле src/Form/DemoForm.php:

Помимо элементов стандарта ООР, все остальное должно выглядеть для вас очень знакомым по Drupal 7. Форма API осталась в значительной степени такой же (за исключением добавления некоторых новых элементов формы и этого класса инкапсуляции). Так что же происходит в приведенном выше коде?

Во-первых, мы объявляем область имен класса и используем класс ядра FormBase, чтобы мы могли расширить его нашим собственным классом DemoForm. После этого мы реализуем четыре метода, три из которых должны быть вам знакомы. Метод getFormId() является новым. Его использование обязательно. Он применяется, просто чтобы возвращать машинное имя формы.

Метод buildForm() также обязателен, он создает форму. Как? Так же, как и в Drupal 7. Метод validateForm() является необязательным, и его предназначение должно быть вам понятно по Drupal 7. И, наконец, метод submitForm() производит обработку предоставления данных. Все очень логично и организовано.

Так чего мы пытаемся достичь с помощью этой формы? У нас есть поле электронной почты (новый элемент формы в Drupal 8), мы хотим, чтобы пользователи заполняли его. По умолчанию Drupal проверяет, является ли входное значение в действительности адресом электронной почты.

Но наша функция проверки определяет, принадлежит ли этот адрес электронной почты серверу с доменом .com, и если нет, то форма выдает ошибку. И в конце обработчик предоставленных данных просто выводит сообщение на странице.

И последнее, что нам нужно сделать, чтобы использовать эту форму, это предоставить для нее маршрут. Поэтому отредактируйте файл demo.routing.yml и добавьте в него следующее:

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

Очистите кэш и перейдите по адресу demo/form, чтобы проверить форму.

Если вы знакомы с drupal_get_form(), и задаетесь вопросом, как вам загрузить форму способом, к которому вы привыкли по Drupal 7, ответ заключается в глобальном классе Drupal.

Таким образом, чтобы получить форму, вы можете использовать его метод formBuilder() и сделать что-то вроде этого:

После этого вы можете вернуть $form, которая будет представлять собой отображаемый массив формы.

Заключение

В этой статье мы продолжили рассмотрение создания модуля Drupal 8. Мы изучили два новых функциональных элемента: блоки и формы. Мы узнали, как создать свой собственный тип блока, который вы можете использовать для создания блоков в пользовательском интерфейсе.

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

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

Перевод статьи «Build a Drupal 8 Module: Blocks and Forms» был подготовлен дружной командой проекта Сайтостроение от А до Я.

www.internet-technologies.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.