Архив метки: Drupal

Самые популярные и необходимые модули Drupal для создания сайтов

CMS Drupal, как и другие популярные системы управления контентом, имеет определённый набор модулей, заслуженно пользующийся «уважением» разработчиков. Такие модули позволяют, в первую очередь, быстро и надёжно реализовать функционал, без которого не обходится ни один уважающий себя сайт. Подобные модули — это не «джентельменский набор», а действительно незаменимый инструментарий среди готовых решений. Заслуживший, кстати огромное доверие сообщества разработчиков Drupal. Имея под рукой такой инструментарий, создание сайта даже с довольно продвинутым функционалом не составляет особого труда для опытных разработчиков. Именно о таких модулях, применительно к разным категориям функционала среднестатистического сайта и будет рассказано в данной статье. Как установить эти модули было рассмотрено в этой статье

Какими бывают модули?

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

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

Администрирование

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

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

Для улучшения функциональности меню администрирования лучшим решением является модуль Administration menu. Он раскрывает все вложенные подпункты всех уровней меню при наведении курсора мыши. Последовательно раскрывая таким образом все подменю и подпункты, «пункт назначения». Т. е. требуемый компонент администрирования CMS может быть достигнут буквально в один клик.

Более эффективно управлять модулями позволяет Module Filter. Этот модуль автоматически группирует имеющиеся в системе модули по категориям. Таким образом администратору предоставляется наглядная ситуация о том, какие модули используются, какие включены/отключены, а какие были установлены недавно. Это очень полезно, когда для больших проектов используется большое количество модулей. Функционал Module Filter также предоставляет комфортную навигацию по самой странице управления модулями для поиска и управления ими.

Работа с контентом

Первое, что должен сделать разработчик Drupal после установки CMS – это установить модуль Views. Это настолько нужный модуль, что непонятно, почему его изначально не было в составе стандартной поставки CMS Drupal. Только для Drupal 8 Views был включен, как системный модуль по-умолчанию.

Views позволяет выводить практически любые данные из базы данных (БД) сайта без необходимости создания соответствующих полей вывода программным способом вручную. Разработчик не работает с языком запросов SQL. А конструирует их визуально, используя инструменты предоставляемые Views непосредственно через веб-интерфейс. В результате с помощью Views можно создавать компоновки из выбранных из БД данных. Эти компоновки называются «представлениями». Они могут быть сколь угодно сложными, начиная от вывода простого списка популярных статей за неделю и заканчивая сложными интерактивными библиографическими списками. И всё это без ручного программирования.

CKEditor – это модуль, выводящий редактирование текста в Drupal на совершенно другой уровень. Он заменяет собой стандартный модуль редактирования текста и представляет собой довольно продвинутый WYSIWYG-редактор. CKEditor относится к категории очень сложных модулей, для которых необходима сторонняя библиотека CKEditor. CKEditor также как и Views был включён в состав Drupal 8.

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

HTML Purifier – модуль, чья главная задача заключается в очистке текстового контента, в частности HTML-разметки и CSS от вредоносного кода, а также приведение ошибочного или «неграмотного» кода к правильному виду. Таким образом, HTML Purifier автоматически проводит валидацию и исправление кода. Конечно, данный модуль относится больше к категории безопасности. Также для этого модуля необходима соответствующая сторонняя библиотека и модуль Libraries API. Последний необходим для всех проектов (модулей, тем), использующих сторонние библиотеки в Drupal.

Better Formats – ещё один модуль, исправляющий существенные недоработки Drupal для управления форматами ввода. По-умолчанию эта возможность не обладает достаточной гибкостью для сложных проектов на Drupal. Форматами ввода практически невозможно управлять. В частности гибко адаптировать их для использования в конкретных условиях. Например для отдельных ролей пользователей или типов материалов. Именно эту проблему и решает Better Formats.

Ещё одним замечательным модулем для работы с контентом является ImageCache Actions. Он позволяет задавать правила автоматической обработки изображений по требуемым параметрам. Например, необходимо, чтобы в поле, выводящее аватар пользователя, этот аватар рисовался в «круглой» форме определённого диаметра. Это легко сделать при помощи ImageCache Actions, предварительно задав соответствующий формат обработки изображения и включив его в параметрах вывода поля аватра. Или можно задать водяной знак для защиты изображений, публикуемых на сайте. В коллекции ImageCache Actions также поставляется большой выбор различных графических эффектов для изображений.

Social-ориентированные модули

Для данной категории самыми эффективными и функциональными модулями по праву являются следующие:

  • User Points – обеспечивает начисление и хранение баллов (пойнтов) для пользователей. Возможно создание различных категорий баллов. Часто используется для организации рейтингов пользователей;
  • Fivestar – предоставляет возможность оценки контента и пользователей и вообще многих сущностей на сайте Drupal;
  • Rate – подобен Fivestar, но предназначен только для оценки статей (нод) и комментариев, часто используется для реализации системы лайков на сайте;
  • Voting Rules – модуль, позволяющий использовать для голосования на сайте правила, создаваемые модулем Rules.
  • Voting API – очень важный модуль, предоставляющий API для работы и реализации возможностей всех вышеперечисленных модулей;
  • HybridAuth – включает авторизацию/регистрацию на сайте с помощью существующих аккаунтов социальных сетей. Для Drupal это, пожалуй, единственный подобный модуль с таким широким функционалом и гибкими настройками.

Все перечисленные модули в совокупности, если их умело настроить, способны сделать из обычного сайта на Drupal социально-ориентированный портал. Или форум (с модулем Forum из стандартного комплекта Drupal).

Управление логикой работы сайта

Для того, чтобы сайт привлекал посетителей, он должен быть «живым», т. е. максимально интерактивным. Самыми интерактивными сайтами являются, наверное, социальные сети и интернет-магазины — они наиболее популярны среди пользователей.

Лучшим и самым простым способом добавить на сайт Drupal побольше интерактива является уже упомянутый модуль Rules. Он позволяет управлять логикой работы сайта путём создания автоматических действий, активируемых при определённых условиях. Очень часто используется для создания системы рейтингов на сайте, а также интернет-магазинов. Основой модуля является «правило» — «rule», которое описывает, какие действия должны выполняться (например, начисление баллов пользователю) и при каких условиях (например, при оценке контента или при покупке товара). Процесс создания правил не требует знаний в программировании, однако для новичков довольно сложен.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-04-16T14:48:41
Drupal

Создание темы оформления для Drupal

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

С чего начать?

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

Для Drupal существует достаточное количество таких тем для разработки. Самой популярной является тема Zen, которая доступна для загрузки по адресу http://www.drupal.org/project/zen. Вообще, правильно её называть не темой оформления (поскольку никакого оформления она не имеет), а базовым набором (Starter Kit), который имеет универсальный адаптивный HTML-каркас. Этот каркас изначально построен на спецификации HTML5, поддерживает работу на мобильных устройствах и абсолютно «резиновый» для корректного отображения на экранах с различным разрешением. Не будет большим секретом, что профессиональные веб-разработчики Drupal для создания шедевров используют именно базовый набор Zen.

Что для этого нужно?

Тема Zen доступна для Drupal версий 7 и 8, хотя для последней пока в виде альфа-выпуска. В данной статье будет рассмотрен вариант для Drupal 7 при обязательном наличии утилиты Drush. Она понадобится для автоматической генерации собственного стартового набора новой темы на основе темы Zen. Это можно выполнить вручную, но это неоправданно долго и нудно. Разумнее воспользоваться Drush. Общий порядок действий следующий:

  1. загрузка и установка (включение) стартового набора Zen;
  2. генерация стартового набора собственной темы на базе Zen;
  3. включение сгенерированного набора как темы по-умолчанию;
  4. установка дополнительных инструментов разработчика для задания CSS-стилей;
  5. добавление CSS-стилей шаблонам темы, т. е. её оформление.

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

Создание стартового набора новой темы

Пусть имеется «чистый» сайт на Drupal 7. Имя хоста drupal-site и расположен сайт в каталоге виртуального хоста по адресу /home/john/htdocs/drupal-site/.

Для более удобного использования утилиты Drush следует перейти в каталог виртуального хоста drupal-site:

$ cd ~/htdocs/drupal-site

Теперь нужно скачать стартовый набор Zen:

$ drush dl zen

Project zen (7.x-6.4) downloaded to /home/john/htdocs/drupal-site/sites/all/themes/zen. [success]

Как можно видеть, по-умолчанию темы оформления устанавливаются в /sites/all/themes/. Однако, в каталоге themes можно создавать подкаталоги для тем — Drupal их просканирует и определит имеющиеся темы. Стартовый набор для новой темы целесообразнее сгенерировать в новом подкаталоге custom, отдельно от остальных тем. Это удобно, т. к. все собственные темы можно хранить раздельно. Создание подкаталога custom:

$ mkdir sites/all/themes/custom

Путь указан относительно каталога ~/htdocs/drupal-site, поскольку ранее командой cd этот каталог был сделан текущим (активным).

Автоматическая генерация стартового набора для новой темы возможна благодаря предоставляемой набором Zen команде zen. Которую может использовать утилита Drush. Сама команда zen имеет несколько ключей. Благодаря которым можно задавать машинное имя, название, описание. А также расположение установки новой темы. Команда zen будет доступной только после включения набора Zen:

$ drush en zen

The following extensions will be enabled: zen

Do you really want to continue? (y/n): y

zen was enabled successfully.

Теперь можно сгенерировать и собственный начальный набор для новой темы. Он будет иметь все необходимые Drupal файлы шаблонов с «резиновым» и полностью адаптивным каркасом, а также главный CSS-файл, в который будут компилироваться стили CSS при создании оформления новой темы:

$ drush zen my_theme "My Theme" --path=sites/all/themes/custom --description="Custom Theme"

Starter kit for "My Theme" created in: /home/john/htdocs/drupal-site/sites/all/themes/custom/my_theme

Как видно, с помощью ключей «—path» и «—description» были заданы путь установки (в каталог custom), а также краткое описание новой темы оформления. Параметр my_theme задаёт машинное имя темы в Drupal, по которому система её (тему) идентифицирует. А параметр «My Theme» это название темы.

Подключение темы

Далее, используя панель администрирования Drupal, в разделе «Оформление» (по адресу http://drupal-site/admin/appearance) нужно включить новую тему «My Theme» по-умолчанию:

Рис. 1: Включение новой темы "My Theme" по-умолчанию на странице управления оформлением Drupal.
Рис. 1: Включение новой темы «My Theme» по-умолчанию на странице управления оформлением Drupal.

Без дополнительных блоков и элементов интерфейса данная тема выглядит так:

Рис. 2: Начальный вид новой темы "My Theme" без оформления.
Рис. 2: Начальный вид новой темы «My Theme» без оформления.

С дополнительными блоками, добавленными во вторую боковую (справа) панель HTML-каркаса:

Рис. 3: Внешний вид новой темы "My Theme" без оформления с дополнительными блоками в правой панели "sidebar".
Рис. 3: Внешний вид новой темы «My Theme» без оформления с дополнительными блоками в правой панели «sidebar».

Для разрешений экранов мобильных устройств все блоки и дополнительные элементы «съезжают» друг под другом, выстраиваясь в одну колонку:

При этом никаким оформлением новая тема «My Theme» как видно, не обладает. Далее, уникальный внешний вид для неё предстоит создать. Сначала нарисовать дизайн в качестве макета. Затем реализовать его с помощью CSS и, возможно, косметических правок HTML-каркаса в файлах шаблонов.

Установка и использование дополнительных инструментов

Набор Zen (как и сгенерированные на его основе новые темы) поддерживает работу с фронтенд-окружением Gulp.js. Это позволяет выполнять многие, свойственные для фронтент-разработчика рутинные задачи автоматически. Те, кто тесно знаком с веб-дизайном понимают, о чём идёт речь. Поэтому нет необходимости останавливаться на этом подробно.

Для начала нужно установить фреймворк Node.js и его пакетный менеджер npm. В Ubuntu 18.04 соответствующие пакеты доступны в стандартном репозитории:

$ sudo apt install npm

Автоматически, как зависимость, будет предложено установить пакет nodejs.

Для организации фронтенд-окружения Gulp для новой темы «My Theme» в её каталоге /sites/all/themes/custom/my_theme существует файл package.json. Для установки всех требуемых пакетов нужно выполнить в этом каталоге команду:

$ npm install

Будут загружены все необходимые для работы Gulp модули в подкаталог node_modules. Теперь, для выполнения команд и заданий Gulp необходимо глобально установить интерпретатор gulp-cli, используя пакетный менеджер npm:

$ sudo npm install -g gulp-cli

Глобальная установка удобна, чтобы не делать этого для каждой разрабатываемой темы. Далее, в каталоге с темой my_theme в конфигурационном файле gulpfile.js нужно задать URL, используемый виртуальным хостом, при помощи опции options.drupalURL:

options.drupalURL = ‘http://drupal-site’;

Теперь можно выполнять задачи по-умолчанию для новой темы «My Theme» используя команду:

$ gulp

Нужно заметить, что задач для Gilp, сформированных по-умолчанию полностью хватает, чтобы задать любое оформление для темы. Сами же стили компилируются в результате выполнения задач Gulp в файл /my_theme/styles.css и его не нужно редактировать вручную. Сами же стили задаются в соответствующих файлах *.scss в подкаталоге /sass темы оформления. А файлы шаблонов — в подкаталоге /templates. Эти шаблоны можно создавать «с нуля» самостоятельно или скопировать готовые из аналогичного каталога родительской темы Zen:

$ cp ~/htdocs/drupal-site/sites/all/themes/zen/templates/*.tpl.php templates

Если оставить подкаталог templates новой темы «My Theme» пустым, то по-умолчанию будут подключены файлы шаблонов из родительской темы Zen, на основе которой она была сгенерирована. Это очень важный момент, нельзя упустить его из виду.

Например, для задания бордюров для блоков новой темы нужно в файле sass/components/box/_box.scss раскомментировать блок кода:

[class$=”sidebar”] {

.block {

@extend %box;

}

.block__title {

@extend %box__title;

}

}

Далее нужно выполнить команду gulp и просмотреть результат в веб-браузере, обновив страницу:



В результате все блоки для сайдбаров будут иметь бордюры. Данный код присутствует в файле sass/components/box/_box.scss в качестве примера, для демонстрации механизма работы Gulp для ведения фронтенд-разработки. Далее, внося собственные правки для разных компонент темы оформления в соответствии с разработанным макетом создаётся полноценная, оригинальная тема в полном соответствии со спецификацией Drupal.

Заключение

В заключение очень важно отметить, что в данном случае для разработки тем для Drupal используется метаязык Sass. Разработанный на основе CSS. Основное предназначение Sass – сократить использование повторяющегося кода разработчиком и возложить его генерацию на специализированные утилиты, такие как Gulp. Таким образом, создание тем оформления предложенным в данной статье способом тесно связано со знанием и умением применения метаязыка Sass.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-04-08T11:43:45
Drupal

Установка модулей в CMS Drupal

CMS Drupal – это система, имеющая возможность для расширения функционала без необходимости модификации кода ядра самой CMS. Это даже не «возможность», а скорее особенность. Без которой Drupal невозможно себе представить. Поскольку без модулей она бы (Drupal) и не работала вовсе. Любое существенное изменение функционала Drupal всегда связано с добавлением и подключением модулей. Которые определённым образом изменяют поведение системы. Будь то сторонние модули, предоставляемые сообществом разработчиков Drupal или же это самостоятельно разработанные модули. В любом случае их установка и включение предусматривает определённый набор необходимых действий.

Что такое модули Drupal?

Модули Drupal – это отдельные, не связанные напрямую с ядром CMS программные компоненты. Реализующие определённый функционал, которого изначально нет в ядре. Это и правильно. Поскольку ядро должно лишь предоставлять интерфейс для взаимодействия между компонентами системы. А также управлять их работой. Разрабатывая веб-приложение, можно просто сконцентрироваться на определённом круге задач, которые можно «упаковать» в рамках реализации одного модуля. Всё, что для этого нужно — это знание спецификаций API Drupal и правил написания, собственно, модулей.

Особенности установки и управления модулями в Drupal7 и Drupal 8

Для того, чтобы установить модуль Drupal, необходимо выполнить следующие условия:

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

Естественно, для того, чтобы Drupal смог распознать, что каталог с исполняемыми сценариями является модулем. Сам модуль должен быть разработан в соответствии с официальной спецификацией. Оба вышеприведённых пункта справедливы для обеих версий Drupal. Однако, сам механизм предоставления интерфейса взаимодействия с ядром существенно различается. Так, например, в Drupal 7 подключение кода модуля обеспечивается механизмом программных «хуков», т. е. путём подстановки имён функций. В Drupal 8 для этой цели используются некоторые из основных парадигм (наследование, делегирование) объектно-ориентированного подхода (ООП) в программировании с тесным взаимодействии с ФС. Уже никаких хуков. Стоить отметить также, что и кодовая база Drupal 8 практически полностью построена на фреймворке Symfony.

Есть различия также и в расположении подключаемых модулей. Для Drupal 7 это каталог /drupal_dir/sites/all/modules. В Drupal 8 хотя и сохранено прежнее, унаследованное от 7-й версии расположение модулей, однако сами разработчики рекомендуют помещать их в каталог modules непосредственно в корне ФС Drupal, т. е. в /drupal_dir/modules.

Ручная установка

Для начала каталог модуля нужно поместить в соответствующий каталог установки модулей Drupal, как это указано в предыдущей главе. Модули распространяются свободно, их можно скачать с официального сайта сообщества по адресу https://www.drupal.org/project/project_module. Либо написать собственный.

Собственно, в этом и заключается ручная установка — файлы модуля копируются в ФС Drupal самим пользователем. Тут важно ещё заметить, что внутри каталога с модулями можно создавать подкаталоги. Сортируя все модули по категориям, в зависимости от их происхождения, категории функционала и т. д. Drupal автоматически просканирует все поддиректории и «вычленит» все имеющиеся в них модули, как бы они не были рассортированы. Для системы это не имеет никакого значения, но очень удобно для разработчиков.

Ручная установка модуля (например, популярного модуля Views) выглядит следующим образом — сначала поиск по ключевому слову «views» на официальной странице модулей и загрузка модуля архива утилитой wget:

$ wget https://ftp.drupal.org/files/projects/views-7.x-3.21.tar.gz

Далее нужно распаковать загруженный архив:

$ tar -xvf views-7.x-3.21 -C htdocs/drupal-site/sites/all/modules/contrib

Как можно видеть, модуль views устанавливается в поддиректорию contrib, т. е. в ней предполагается хранить все «официальные» модули. Для собственных модулей можно отвести к примеру, поддиректорию custom.

Следует обратить внимание на имя архива модуля. Оно включает версию Drupal, для которой разработан модуль (7.x), а также версию самого модуля — 3.21. Это необходимо учитывать при выборе и установке модулей.

Теперь нужно просто включить новый модуль, зайдя на страницу http://drupal-site/admin/modules. Здесь нужно отметить нужный модуль в списке (для отключения модуля — снять отметку) и нажать кнопку сохранения настроек в самом низу страницы.

Установка модуля по ссылке

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

Для установки модуля по ссылке необходимо на странице CMS http://drupal-site/admin/modules кликнуть ссылку установки нового модуля, после чего ввести, собственно, ссылку для загрузки и нажать кнопку установки модуля. Здесь же есть возможность произвести установку из файла, точнее из архива *.tar.gz. Но это та же ссылка, только на локальный файл, находящийся непосредственно на диске.

Заключение

В заключение необходимо отметить, что некоторые модули требуют для своей работы наличие других установленных модулей, т. е. зависимостей. Если заранее такие зависимости не были известны, то в процессе установки модуля Drupal их отследит и выведет имена соответствующих модулей, которые в таком же порядке необходимо загрузить и установить. В целом, как видно, ничего сложного в установке модулей нет. Весь процесс достаточно прозрачен и логичен. Особое внимание в этом нужно уделять удовлетворению зависимостей, если они есть. Приведенные в данной статье примеры были рассмотрены для Drupal 7, однако и для Drupal 8 они выполняются аналогично. За тем лишь исключением, что в Drupal8 термин «модули» заменён на «расширения» — extensions.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-04-02T17:26:45
Drupal

Утилита drush для обслуживания CMS Drupal

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

Drupal sh или Drupal shell – именно так расшифровывается аббревиатура drush, которая является названием утилиты с интерфейсом командной строки. Эта утилита широко используется профессиональными веб-разработчиками Drupal для управления проектами и ходом разработки Drupal. Не менее полезна она и для администраторов, поскольку её возможности позволяют автоматизировать выполнение самих административных задач, касающихся проектов на CMS Drupal. Например, таким образом администраторы хостинг-площадок реализуют установку веб-приложений Drupal в «один клик», что очень удобно для пользователей — клиентов хостингов.

Как появилась drush?

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

Работа с CMS Drupal – это рутинное выполнение действий, за которые отвечает исключительно сам разработчик. Drupal ничего не скрывает от пользователя/разработчика, а потому предоставляет ему естественную и логически правильно выстроенную схему работы API, в которой нет отсутствующих или «непонятных» компонентов. Это всё даёт полный контроль над процессом разработки и обслуживания проектов на Drupal, однако всегда сопровождается большим количеством рутинных действий. Ярким примером является обновление Drupal. Для этого необходимо перевести проект в режим обслуживания, загрузить пакет обновления, выполнить резервное копирование, удалить старые файлы CMS, перенести конфигурацию и … т. д. Со временем стали появляться скрипты для отдельных и самых рутинных задач (таких как обновление), а позже всё это объединилось в единую реализацию утилиты drush, которая через командную консоль может выполнить самую сложную задачу (обновление, установка) буквально одной командой. Вот как выглядит команда drush обновления ядра Drupal:

$ drush up drupal

В процессе выполнения этой команды нужно только подтвердить обновление и пронаблюдать за ходом работы команды. Для того, чтобы вручную обновить Drupal, может потребоваться (если всё делать очень быстро) 10 минут и более. Утилита drush сделает то же самое за 15 секунд.

Как работает drush?

Утилита drush – это набор сценариев, написанных на PHP, интерфейс к которым предоставляется через объединяющий файл-сценарий drush. Утилита запускает команды, для которых в свою очередь предусмотрены опции. Например рассмотренная выше команда up drupal, является ничем иным как собственно, командой up (update – обновить) с опцией drupal, указывающей, что следует произвести обновление проекта под именем drupal – т. е. ядра CMS Drupal. В качестве проектов также указываются имена модулей, тем оформления, локализаций и т. д.

В большинстве случаев утилиту drush приходится устанавливать в систему вручную. Однако в некоторых дистрибутивах Linux она доступна в виде готовых пакетов.

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

Основные команды и опции drush

Синтаксис утилиты drush классический и выглядит следующим образом:

drush команда [опции]

Список основных и часто используемых команд drush:























КомандаНазначение
cc, cache-clearОчистка кеша Drupal.
st, core-statusВыводит основную информацию о состоянии ядра Drupal, а также параметрах его проекта.
updb, updatedbВыполняет обновление БД Drupal, аналогично запуску скрипта update.php.
dd, drupal-directoryВозвращает абсолютный путь к проекту Drupal.
en, pm-enableВыполняет включение проекта (модуля или темы).
dis, pm-disableОтключает проект.
pm-infoВыводит информацию для одного или нескольких проектов (модулей или тем).
pm-uninstallУдаляет указанные проекты.
pm-listВыводит список всех проектов, доступных Drupal.
vsetУстанавливает значение переменных Drupal.
wsВыводит сообщения системного журнала Drupal.
ard, archive-dumpСоздаёт полный бекап сайта Drupal, включая БД.
up, pm-updateВыполняет обновление одного или нескольких проектов Drupal.
dl, pm-downloadЗагружает указанные проекты сразу в специальный системный каталог Drupal.
sql-confВыводит реквизиты подключения к БД Drupal.
sql-connectВыводит строку текущего активного подключения к БД.
sql-dumpВыполняет бекап БД.
sqlq, sql-queryВыполняет произвольный SQL-запрос к БД Drupal.
sql-syncВыполняет копирование БД при помощи Rsync.

Глобальные опции drush позволяют применять команды более гибко. Далее приведены самые распространённые из них:












ОпцияОписание
-r, —root=PATHЗадаёт путь к сайту на Drupal.
-y, —yesАвтоматически подтверждает выдаваемые drush запросы.
-n, —noАвтоматически отклоняет выдаваемые drush запросы.
-i, —includeПодключает дополнительные пути для поиска функций и/или команд drush.
-v, —verboseВключает подробный вывод.
-u, —userПозволяет выполнить авторизацию на сайте Drupal.
—phpЗадаёт произвольный путь к интерпретатору PHP.
-s, —simulateИмитирует выполняемые действия команд.

Управление проектами и обслуживание Drupal

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

$ drush dl views

При этом drush загрузит модуль именно туда, где ему место — в каталог sites/all/modules. Далее от пользователя требуется его только включить:

$ drush en views

The following projects have unmet dependencies:

views requires ctools

Would you like to download them? (y/n): y

Многие модули в Drupal имеют зависимости в виде других модулей (или библиотек). При включении модуля с зависимостями drush их самостоятельно отследит и предложит загрузить.

Загрузка и установка темы оформления «Zero Point»:

$ drush dl zeropoint

$ drush en zeropoint

Установка темы оформления «Zero Point» как темы по-умолчанию:

$ drush vset theme_default zeropoint

Перевод Drupal в режим обслуживания:

$ drush vset maintenance_mode 1

Соответственно для перевода в рабочий режим, следует задать значение «0». Для создания резервной копии базы данных Drupal:

$ drush sql-dump –-result-file=site_back.dump

Создание полной резервной копии сайта Drupal, включая и БД:

$ drush ard –-destination=/home/john/backups/site-drupal.tar

Восстановление из полной резервной копии в каталог /htdocs/drupal-site:

$ drush arr /home/john/backups/site-drupal.tar –-destination=~/htdocs/drupal-site

Запуск скрипта обновления БД:

$ drush updb

Обновление всех компонентов Drupal (ядро, модули, темы):

$ drush up

Обновить только модулей, не затрагивая ядро:

$ drush up –-no-core

Обновление только проектов, имеющих обновления безопасности:

$ drush up –-security-only

Просмотр записей системного журнала Drupal:

$ drush ws

Управление пользователями

Для создания пользователя необходимо выполнить команду user-create:

$ drush user-create username1 –-mail=”username1@mail.ru” --password=”notqwerty”

Назначение роли «moderators» пользователю username1:

$ drush user-add-role moderators username1

Смена пароля пользователя username1:

$ drush user-password username1 –-password=”password”

Удаление пользователя username1:

$ drush user-cancel username1

Заключение

В заключение важно заметить, что кроме глобальный опций drush существуют опции, характерный для отдельных команд. Для получения дополнительной информации о таких опциях следует выполнять команду вида drush help команда. Как можно видеть, утилита drush – незаменимый помощник если не обычному пользователю, то веб- разработчику и/или опытному системному администратору точно.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-03-25T11:57:33
Drupal

Установка CMS Drupal

Среди свободных CMS (Content Management System) Drupal является одной из самых распространённых и популярных. Особенно часто её используют профессиональные Web-разработчики, поскольку эта система обладает мощным функционалом и возможностями. Так или иначе, но для того, чтобы начать работу с Drupal, необходимо эту CMS предварительно установить. Неважно, где подразумевается установка: коммерческий хостинг или сервер разработки — порядок и смысл действий при этом совершенно не меняется.

Что для этого нужно?

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

  • php-mbstring – обеспечивает многобайтовое кодирование для работы строковых функций PHP;
  • php-curl – преобразование адресов в «чистые» ссылки;
  • php-mysql – обеспечивает программный интерфейс PHP для работы c БД MySQL;
  • php-gd – графическая библиотека PHP.

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

$ sudo apt install php7.2-gd php7.2-mbstring php7.2-curl php7.2-mysql

Также можно проверить, настроена ли связка Apache + PHP, которая обеспечивается модулем Apache libapache2-mod-php7.2:

$ sudo apt-cache search mod-php

libapache2-mod-php – server-side, HTML-embedded scripting language (Apache 2 module) (default)

libapache2-mod-php7.2 – server-side, HTML-embedded scripting language (Apache 2 module)

$ dpkg -s libapache2-mod-php7.2

Pckage: libapache2-mod-php7.2

Status: install ok installed

Как можно видеть, модуль libapache2-mod-php7.2 (в Ubuntu используется PHP 7) установлен. Приведённые выше команды, а также наименования пакетов характерны для Debian-систем, таких как Kubuntu 18.04. В RPM-ориентированных системах используются другие менеджеры пакетов и СУП, наименование пакетов будут также несколько отличаться.

В качестве СУБД (система управления базами данных) следует использовать MySQL (MariaDB), их эквиваленты, PostgreSQL или SQLite.

Загрузка и распаковка дистрибутива с CMS Drupal

Теперь необходимо загрузить сам дистрибутив CMS Drupal. В данной статье рассматривается установка Drupal 7, хотя уже давно вышла 8-я версия этой CMS. Ход установки и в той и в другой версии ничем не отличается. Разве что для Drupal 8 необходимо больше дополнительных расширений PHP, таких как например php-opcache.

Загрузить дистрибутив Drupal можно при помощи утилиты wget по официальному адресу проекта:

$ wget https://ftp.drupal.org/files/projects/drupal-7.64.tar.gz

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

Далее необходимо распаковать скачанный архив в каталог с виртуальными хостами Apache. Здесь также предполагается, что Apache сконфигурирован таким образом, что каталогом его виртуальных хостов является каталог /home и все его подкаталоги, что очень удобно. Ведь в таком случае любой пользователь может создавать и размещать свои веб-приложения, при этом лишь запрашивая лишь помощь в настройке виртуальных хостов у администратора. В дальнейшем установка Drupal будет рассматриваться для виртуального хоста site-drupal в каталоге /home/john/htdocs/drupal-site/. Естественно, можно проводить установку и в каталог /var/www/html/, который является каталогом виртуальных хостов, сконфигурированном по-умолчанию для Apache, однако ход установки от этого принципиально не меняется. Распаковка архива с Drupal:

$ tar -xvf drupal-7.64.tar.gz -C ~/htdocs

$ ls ~/htdocs

drupal-7.64

Поскольку было оговорено, что каталог с Drupal будет иметь имя drupal-site, то следует переименовать drupal-7.64:

$ mv ~/htdocs/drupal-7.64 ~/htdocs/drupal-site

На этом подготовка каталога виртуального хоста drupal-site для Drupal завершена. Следующий этап — подготовка базы данных (БД) для будущего сайта на Drupal.

Создание БД для Drupal

Для установки Drupal (как и для большинства современных веб-приложений) необходима БД. Её нужно создать пустой — Drupal сам в процессе установки настроит её и заполнит в соответствии с профилем и параметрами установки. Прежде всего необходимо авторизоваться на сервере MySQL, а также иметь соответствующие привилегии для создания и редактирования БД:

$ mysql -u john -p

Enter password:

mysql>

Создание БД с именем drupal_site:

mysql> create database drupal_site;

Query OK, 1 row affected (0.00 sec)

БД подготовлена, можно завершить работу с консолью MySQL, выполнив команду exit.

Выбор профиля установки и начальная локализация

После настройки виртуального хоста Apache для установки и работы Drupal нужно в любом веб-браузере перейти по адресу: http://drupal-site. В результате Drupal сам запустит свой скрипт установки install.php. Сама же конфигурация виртуального хоста для drupal-site будет такой:

<VirtualHost *:80> 
ServerName drupal-site 
<IfModule mpm_itk_module> 
        AssignUserId john john 
     </IfModule> 
 
ServerAdmin webmaster@localhost 
DocumentRoot /home/john/htdocs/drupal-site/ 
<Directory /home/john/htdocs/drupal-site/> 
        RewriteEngine on 
        RewriteBase / 
        RewriteCond %{REQUEST_FILENAME} !-f 
        RewriteCond %{REQUEST_FILENAME} !-d 
        RewriteCond %{REQUEST_URI} !=/favicon.ico 
        RewriteRule ^ index.php [L] 
    </Directory> 
 
ErrorLog ${APACHE_LOG_DIR}/drupal-site_error.log 
CustomLog ${APACHE_LOG_DIR}/drupal-site_access.log combined 
</VirtualHost> 
 
vimsyntax=apache ts=4 sw=4 sts=4 sr noet

Важно заметить, что конструкция:

<IfModule mpm_itk_module> 
        AssignUserId john john 
</IfModule> 

необходима только, если используется модуль Apache mpm-itk. Он позволяет запускать экземпляры процессов Apache от имени пользователей-владельцев виртуальных хостов. В данном случае хост drupal-site связывается с пользователем john и его группой.

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

Рис.1. Выбор профиля установки Drupal 7

На этом же этапе уже можно загрузить и установить файлы нужных локализаций по адресу https://localize.drupal.org/download. Сами локализации устанавливаются в каталог_drupal/profiles/профиль/translations/. Таким образом скачанный файл с локализацией (например drupal-7.64.ru.po) нужно скопировать следующим образом:

$ cp drupal-7.64.ru.po ~/htdocs/drupal-site/profiles/standard/translations

Теперь, после нажатия кнопки «Save and continue» загрузится следующая страница, на которой можно выбрать только что установленную локализацию:

Рис.2 Выбор языка установки

Следующим этапом установки является проверка конфигурации веб-сервера, а также интерпретатора PHP. Именно на этом этапе Drupal проверяет режимы доступа к каталогу и файлам виртуального хоста, а также наличие все необходимых модулей для Apache и PHP:

Рис.3 Ошибка доступа веб-сервера Apache к файлам виртуального хоста drupal-site

В данном случае ошибки связаны с тем, что Apache не может создать (посредством PHP) служебный каталог files и конфигурационный файл settings.php для Drupal. Каталог drupal-site и его содержимое принадлежат пользователю john и его группе. Тогда как всем остальным пользователям (в том числе пользователю Apache www-data) доступ запрещён.

Решением является использование модуля mpm-itk (или ему подобных), а также добавление в конфигурацию виртуального хоста директивы AssignUserId, либо добавление пользователя john в группу www-data Apache (или наоборот) и скрупулёзная настройка режимов доступа к каталогу виртуального хоста drupal-site. Первый вариант предпочтительнее.

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

На следующем этапе необходимо указать Drupal, какую БД использовать для установки и, собственно, работы CMS. Среди прочих параметров можно указать и нестандартные, такие как хост подключения к БД, порт и префикс таблиц, которые находятся в раскрывающемся разделе «Дополнительные настройки»:

Рис. 4 Настройка подключение к базе данных

Далее Drupal настроит и установит БД. А также импортирует переводы из недавно установленного файла локализации:

Рис 5 Импорт переводов

Конфигурирование установки

Это самый простой этап установки. Здесь нужно задать некоторые персональные настройки для будущего сайта. Региональные настройки, а также создать учётную запись администратора, обслуживающего CMS:

Рис 6. Задание персональных настроек сайта 

Ну и наконец, собственно, главная страница свежеустановленной Drupal 7:

Рис 7. Главная страница CMS Drupal

Утилита drush

Одной из особенностей Drupal является то, что для этой CMS существует специальная утилита, существенно упрощающая и ускоряющая обслуживание CMS. Она обладает интерфейсом командной строки и имеет практически безграничные возможности по управлению Drupal. Эта утилита называется drushDrupal sh. Так, например, используя drush можно выполнить установку Drupal буквально одной командой:

$ drush site-install standard --account-name=john --account-pass=notqwerty —db-su=john --db-su-pw=rootdbpasswd --db-url=mysql://john:'rootdbpasswd'@'localhost'/drupal_site –site-name=SiteName

Для использования drush для определённого виртуального хоста на Drupal, необходимо предварительно перейти в каталог этого виртуального хоста.

Таким образом утилита drush очень полезна, поскольку позволяет полностью автоматизировать процесс установки и управления CMS Drupal. Что очень удобно как самим пользователям, так и администраторам хостинг-площадок.

Заключение

В заключение стоит отметить, что особое внимание при установке Drupal следует уделять даже не столько самому процессу установки, сколько настройке виртуального хоста для этого, а также подключению требуемых модулей для Apache и PHP. И уж точно не стоит забывать о важности правильной настройки режимов доступа к виртуальному хосту

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-03-21T10:25:13
Drupal