Drupal 8

Привет друзья, все мы наверное уже устали ждать, когда же разработчики все таки выпустят в свет первую, стабильную версию нового поколения 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

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
    • Использование компонентов Symfony2
    • YAML на смену .info файлам
    • Удалены функции drupal_add_css(), drupal_add_js() and drupal_add_library()
    • Роутинговая системы Symfony вместо hook_menu()
    • Замена page callback на контроллер
    • Система сервисов и плагинов
    • Новые типы полей
    • Views и Migrate в ядре
    • Новый подход к редактированию контента
    • Twig в ядре
    • Backbone и Underscore.js в ядре
    • Конфигурационная система
    • PHPunit тесты
    • Расширены возможности мультиязычности
    • Сокращение модулей ядра
  • Серверные и браузерные требования
  • Структура папок
  • Домашнее задание

Введение

Процесс работы над восьмой версией был продолжительным и болезненным. Начав старт с далекого 2011 года дата релиза постоянно откладывалась и сдвигалась. Ниже приведен график работы над восьмой версией с ключевыми датами[2].
drupal 8 releasesДля примера график релизов Друпала с версии 1.0 по 7.0 проходил в таких временных интервалах[3].
drupal релизы с версии 1.0 до 7.0

Что нового в Drupal 8

Данный список содержит основные изменения. Ознакомиться с полным списком можно по ссылке[4].


Использование компонентов Symfony2

В ядре произошло достаточно большое количество изменений. Одно из главных изменений, конечно же, — это переход к ООП и использование компонентов Symfony2. Полный переход на ООП не завершен в восьмой версии, поэтому в ядре еще используется процедурный подход и хуки. Перейти полностью на ООП нам обещают в 9 версии.
Ниже приведен неполный список компонентов Symfony2, которые используются в восьмерке:

  • HttpKernel — предоставляет структурированный процесс для преобразования запроса в ответ с помощью EventDispatcher;
  • HttpFoundation — преобразовывает все, что связано с HTTP при запросе и ответе — в объекты;
  • Routing — преобразовывает HTTP запрос в вызов определенной функции, подобно hook_menu;
  • ClassLoader — используется для загрузки классов по мере необходимости;
  • DependencyInjection или Service Container — позволяет сделать классы независимыми и доступными для повторного использования, юнит-тестирования;
  • EventDispatcher — реализует паттерн Посредник (Mediator). Делает тоже самое что и система хуков, но на данный момент, не заменяет их полностью;
  • Yaml — позволяет работать с форматом YAML;
  • Serializer — преобразовывает объекты в определенный формат и обратно;
  • Translation — система переводов;
  • Process — используется для выполнения в субпроцессе, команд из консоли;
  • Validator — компонент для проверки значений;

YAML на смену .info файлам

В Drupal 8 .info, а также конфигурационные файлы представлены в формате YAML[5].

YAML (рекурсивный акроним YAML Ain’t Markup Language — «YAML — Не язык разметки») — «дружественный» формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования.

Ниже приведены примеры содержания .info и .info.yml файлов на примере контрибного модуля admin_menu.

D7 D8

Подключение файлов и зависимостей теперь также согласно синтаксису YAML.

Удалены функции drupal_add_css(), drupal_add_js() and drupal_add_library()

В Drupal 7 эти функции использовались для подключения js, css, библиотек к странице. Помимо этого в D7 существует альтернативный способ через #attached. В Drupal 8 использование #attached в рендерном массиве — это единственный способ подключить js и css на конкретной странице. Кроме этого есть возможность подключать файлы через .info.yml файл, но об этом позже.
Примеры подключения js, css, библиотеки в 7 и 8 версиях приведены в таблице ниже.

D7 D8
CSS
JS
Library

Роутинговая система Symfony вместо hook_menu()

В восьмерке роутинговая система работает с компонентом Symfony HttpKernel. Упрощенная схема, показывающая взаимосвязи между компонентами, приведена ниже
drupal 8 схема роутинга
Роутинговая система отвечает за соответствие путей и контролеров (аналог page callbacks в 7-ой версии). Дополнительная информация также может быть предана контроллеру.
Ключевые отличия:

  • Роуты (маршруты) теперь определяются в файле module.routing.yml, в формате YAML;
  • Роуты идентифицируется машинным именем. Машинные имена должны быть в формате module_name.sub_name;
  • Каждый маршрут состоит из пути, например, /admin/content/book, включая начальный слэш.
  • Ключ _controller ссылается на методы конкретных классов. Класс будет инстанцирован и нужный метод будет вызван. Например
  • Возможно указать несколько пермишенов для данного пути. Для использования AND логики, пермишены должны быть разделены запятыми, пример:

    Для использования логики OR пермишены должны быть склеены знаком +, пример:

    Важное замечание: пробелов между пермишенами быть не должно.

Замена Page callback на контроллер

hook_menu() колбэки по всему друпаловскому ядру были заменены на классы контроллеров.
Как это было в Drupal 7 и выглядит в Drupal 8

D7 D8
example.module example.routing.yml
example.module /modules/custom/example/src/Controller/MyController.php

Система сервисов и плагинов.

Плагины— это небольшая часть функционала, которая может быть заменена, переиспользована. Плагины определяются модулями и имеют общий интерфейс, но разные реализации. В модулях могут быть определены плагины различных типов, равно как и в других модулях могут быть определены собственные плагины конкретного типа [6].
Хороший пример плагинов приведен из официальной документации — модификация картинок. В общем, трансформация картинок — это масштабирование, обрезка, ресайзинг и т.д. Каждая трансформация работает по одному и тому же принципу: получает изображение, производит наложение эффекта, возвращает измененную картинку. Однако каждый эффект различен.
Сервисы— имеют такую же функциональность, что и плагины, но являются взаимозаменяемыми, отличаясь лишь внутренней реализацией. Пример — кеш. Кеш должен обладать методами: get(), set(), expire(). Пользователь просто ожидает получить кеш и один кеш-объект может быть заменен другим без какой-либо функциональной разницы. Однако внутренние механизмы этих методов могут сильно отличаться.

Новые типы полей

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

  • ссылка на сущность (entity reference);
  • ссылка (link);
  • дата (date);
  • адрес электронной почты (email);
  • телефон (telephone number);

Комментарии теперь тоже являются полем.
drupal 8 новые типы

Views и Migrate в ядре

Модуль Views и Migrate теперь встроены в ядро. Фронтальная страница со списком контента это тоже вьюха, как и несколько страниц администрирования. Из коробки у нас есть простой процесс создания собственных страниц администрирования, контента, а также настройки уже существующих, фильтров, действий и т. д. Drupal 8 включает в себя инструменты импорта, которые позволяют импортировать контент из Drupal 6 или Drupal 7 сайтов в новую версию.

Новый подход к редактированию контента

С новой функциональностью встроенного редактора CKEditor WYSIWYG, редактировать контент в Drupal стало очень просто. Разработчики также переработали форму редактирования контента с двумя колонками, так что теперь вы можете сосредоточиться на том, что важно.

  • Конфигурация WYSIWYG стало проще с учетом требований веб-безопасности.
  • В месте редактирования контента теперь нет необходимости использовать полную форму редактирования, что несомненно стало удобно.

быстрое редактирование

Twig в ядре

Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django. Идею данного шаблонизатора развивает и поддерживает Fabien Potencier, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию.[7]

Ядро Twig полностью интегрировано с Drupal 8 и определяет новую удобную логику для построения различных тем.
Преимущества Twig по сравнению с другими template движками[8]:

  • Быстрый. Твиг компилирует шаблоны в простой оптимизированный PHP код.
  • Безопасный. Твиг имеет режим песочницы для запуска подозрительного кода шаблона. Это позволяет использовать Твиг в шаблонах приложений, где пользователи могут вносить изменения в код шаблона.
  • Гибкий. Твиг обладает гибким инструментом лексического анализа и парсером. Это позволяет разработчику определять свои собственные тэги и фильтры, а также создавать свой собственный DSL (язык программирования, специализированный для конкретной области применения).

Backbone и Underscore.js в ядре

Backbone — JavaScript-библиотека, основанная на шаблоне проектирования Model-View-Presenter (MVP), предназначена для разработки веб-приложений с поддержкой RESTful JSON интерфейса. Backbone — очень лёгкая библиотека, но для работы необходима библиотека Underscore.js, а для поддержки REST API и работы с DOM элементами рекомендуется подключить jQuery-подобную библиотеку: jQuery или Zepto.[9]

Backbone был выбран потому, что на текущий момент имеет огромное комьюнити и как наиболее стабильный.

Underscore — библиотека JavaScript, реализующая дополнительную функциональность для работы с массивами, объектами и функциями, изначально отсутствующую в javascript, но имеющую аналоги в других языках. Библиотека умеет делегировать вызовы, если какая-то функциональность реализована разработчиками браузеров.[10]

Конфигурационная система

Добавлена централизованная система экспорта/импорта. Данная система основана на файлах в формате YAML, что позволяет проще импортировать/экспортировать изменения в конфигурации, в том числе новые типы материалов, поля, вьюхи и т.д. Отличная замена модулю Features. Меня поймут те, которым приходилось хоть раз мержить фичи, бороться с overriden и rebuilding статусами. Новый конфигурационный подход также позволяет вам использовать систему контроля версий для ваших конфигов.

PHPunit тесты

Drupal 8 также включает в себя PHPUnit для более быстрого и целенаправленного тестирования. Многочисленные тесты были сконвертированы или заново написаны на PHPUnit (SimpleTest все еще является частью системы).

Расширены возможности мультиязычности

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

  • Перевод всех слов в системе с помощью встроенного пользовательского интерфейса стал более удобен.
  • Создание страниц с помощью Views с фильтрацией языка и видимостью блоков.
  • Получение обновления переводов автоматически от сообщества Drupal.

Сокращение модулей ядра

Из ядра были «выпилены» следующие модули:

  • Blog
  • Dashboard
  • List
  • OpenID
  • Overlay
  • PHP filter
  • Trigger
  • Poll
  • Profile и т.д.

Некоторые из них были удалены по причине неиспользования (или редкого использования) в качестве базовых компонентов на большинстве Drupal сайтов, некоторые по причинам безопасности (PHP filter). Это не значит, что этих модулей больше нет и они не будут поддерживаться. Они выведены в качестве отдельных контрибных модулей и также доступны.

Серверные и браузерные требования

Drupal 8 работает со следующими версиями браузеров:

  • Internet Explorer 9.x и поздние версии
  • Firefox 5.x и поздние версии
  • Opera 12 и поздние версии
  • Safari 5.x и поздние версии
  • Google Chrome

Восьмерка работает с любым веб сервером, который поддерживает PHP. Наиболее распространенные:

  • Apache — будет работать на Apache 2.x, размещенного на UNIX / Linux, OS X или Windows.
  • Nginx — будет работать на старых версиях Nginx (0.7.x, 0.8.x, 1.0.x, 1.2.x), стабильных 1.8.x и 1.9.x размещенных на UNIX / Linux, OS X или Windows.
  • Microsoft IIS — будет работать с IIS 5, IIS 6, или IIS 7 если PHP сконфигурирован корректно.

Более подробную информацию вы можете найти по ссылке[11].

Структура папок

Структура папок сайта также значительно изменилась. После установки Drupal 8 структура папок будет следующей:
drupal 8 структура папок

  • core — содержит модули, файлы ядра. Вносить что либо в этой папке категорически нельзя по понятным причинам;
  • modules — папка контрибных, кастомных модулей. Именно сюда по пути modules/custom будут расположены кастомные модули, а по modules/contrib — контрибы;
  • profiles — содержит папку с кастомными профилями;
  • sites — содержит папки сайтов для мультисайтинга, настройки;
  • themes — директория кастомных тем;
  • vendor — содержит компоненты симфони, библиотеки, утилиты, конфиги и т.д., необходимые для работы сайта;

Домашнее задание

Задание на первый урок простое. Развернуть Drupal 8 используя https://simplytest.me/
simplytestme
После установки сайта, ознакомиться с основными разделами, «походить» по меню, посоздавать статьи, позаливать картинки. На данном этапе нет необходимости заморачиваться над установкой и разворачивать сайт локально.

nightdevel.ru

О сервисах

В Drupal 8 появилась такая штука как Services (сервисы), которая является ничем иным как Service Container из Symfony 2, просто адаптированным под Drupal. Местами синтаксис из Symfony 3, местами из Symfony 2, т.е. как бы можно читать гайды из симфони про сервисы, но проверяя так ли данные параметры работают в обертке друпала. Если вы пишите код, то вы уже 100% натыкались на сервисы, и если не писали, то столкнетесь с ними очень и очень быстро. Но зачастую, их использование сводится к копипасту из гайдовответов или же простому запоминанию нужных. Но что же там под капотом, зачем это, как делать свои сервисы, когда их делать и почему это нужно делать — в этом материале я постараюсь ответить на все эти вопросы.

Сразу отвечая на простой вопрос: «Нужно ли их использовать в своих модулях?» — да, и всегда. Это решает кучу «проблем», делает код читабельнее и организованнее, а главное — гибче. И по ходу материала, вы поймете, почему именно так. Если сразу немного подвести итог, то каждый объект в вашем модуле, который не является плагином или чем-то подобным, должен быть объявлен как сервис, и использоваться во всем коде через сервисы, а не напрямую. Так что да, в Drupal 8, использование сервисов для своих объектов это — best practice.

Говоря простым языком о сервисах — это инструментарий для работы с объектами и контроля всех зависимостей, который позволяет работать через централизованный API. Какие же преимущества у сервисов перед обычным созданием объекта и добавление зависимости в use:

  • Самое главное, конечно, это гибкость. Это не совсем может показаться очевидным изначально, но сервисы по сути сделаны именно для этого. Учитывая что все объекты Drupal (кроме глобального Drupal, который в свою очередь обертка для самых востребованных сервисов и объектов) объявлены через сервисы и вызываются соответственно, это позволяет заменять существующие сервисы, при необходимости, на свои, не хакая при этом ядро. Не нравится как что-то работает в ядре или ином модуле — заменяете сервис из ядра своим и контролируйте как вам нужно. Конечно это будет мало востребованно, прямо в экзотических случаях, с сервисами модулей, возможно уже будет чаще встречаться такой подход, но все же, это не отменяет того факта, что благодаря сервисам, можно заменять куски ядра на свои, не трогая при этом ядро вообще.
  • Вторым немаловажным удобством явлется то, что не нужно писать все инклуды и запоминать названия объектов. Вы мне возрозите: «Да сейчас нигде этого не нужно делать, все делает за тебя IDE» — и вы окажитесь правы. Но все равно, код от этого становится чище, и унифицированнее что ли. Вам не нужно запоминать названия объектов, намного проще запоминать названия сервисов, так как они, зачастую короче и информативнее. Тут лишь вкусовщина на самом деле.
  • А третий плюс вытекает из второго и я уже о нем упомянул. Кода становится меньше, хоть он и генерируется IDE. А если нужно поправить быстренько что-то на FTP без IDE? Вы сразу полюбите сервисы.
  • Четвертый плюс — то что объекты для сервисов писать проще чем без них, когда дело косается зависимостей. Они сами создаются и передаются, и не нужно писать под это код, что опять же, сокращает общее кол-во кода в проекте. Об этом будет все непосредственно в разборе.
  • Пятый плюс вытекает совершенно очевидно, когда в модуле все кастомные объекты на сервисах, намного проще ориентироваться в коде данного модуля, а именно в объектах. Можно в соответствующем файле сразу узнать сколько кастомных объектов, и банально из названия догадаться что они делают, что они требуют, без необходимости рыться по папкам. Это как routes и libraries — если вам нужно узнать что объявлет тот или иной модуль, вы просто заходите в корень и смотрите соответствующие файлы, а не ищите по файлам, куда и что засунули.

Вам может показаться что СЛОЖНА, но на самом деле это очень просто. Наверное одно из самых простых вещей в 8-ке для понимания и использования. Хотя текста и примеров будет достаточно чтобы отпугнуть.

Разбор синтаксиса и возможностей

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

Сервисы объявляются в корне модулей со следующим именованием: MODULENAME.services.yml. Так что для объявления своих сервисов достаточно создать соответствующий файлик и наполнить, как и аналогичные yml файлы, только учитыая его возможности.

Данный файл делится на два раздела parameters (он не обязательный) и является лишь кастомными параметарми объекту по-умолчанию, а также services, где непосредственно объявляются сервисы, и он обязателен.

Вот примерный вариант файла .services.yml:

niklan.net

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

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

  • Первая среда каждого месяца — окно для 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

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

Установка

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

Drupal 8

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

Drupal 8

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

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

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

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

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

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

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

Drupal 8

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

Drupal 8

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

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

Drupal 8

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

Drupal 8

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

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

Drupal 8

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

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

Итого:

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

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

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

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

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

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

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

Drupal 8

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

Drupal 8

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

Drupal 8

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

Drupal 8

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

Drupal 8

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

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

Drupal 8

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

Drupal 8

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

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

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

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

Drupal 8

 

 

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

Drupal 8

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

Кодинг

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

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

Вывод

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

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

 

aftamat4ik.ru

Зарождался друпал в далёком 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


You May Also Like

About the Author: admind

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

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

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

Adblock
detector