Как создать тему stark на drupal 8
Перейти к содержимому

Как создать тему stark на drupal 8

  • автор:

Access to this page has been denied.

You have been blocked because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.

Reference ID: #757d6443-872b-11ee-b9a8-2cf5b7d9be6f

Powered by PerimeterX , Inc.

Access to this page has been denied.

You have been blocked because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.

Reference ID: #75700f1d-872b-11ee-af56-4fe625fa52f1

Powered by PerimeterX , Inc.

8.3. Создание своей Drupal 8 темы на основе темы Stable.

Начиная с этой статьи мы будем делать свою тему на друпале. В этом разделе учебника мы разберем основы темы на друпале, где что лежит, как подключать и использовать CSS, JavaScript. Делать свою тему мы будем на основе темы-конструктора ядра Stable. Если вы хотите изучать друпал, то Stable отличное начало. Не стоит начинать с Bootstrap, у вас будут постоянно возникать вопросы и ошибки. В следующем разделе учебника мы уже с багажом умений созданий темы для Drupal 8, возьмемся и за Bootstrap.

Если у вас есть желание читать мануал на английском, то вот официальная документация, можете сравнивать с моим учебником и поправлять меня в комментариях или через Ctrl + Enter.

Создаем папку нашей темы

Все новые темы мы кладем в папку /themes. Вы можете класть папки по старинке в sites/all/themes, но лучше всего использовать новую структура файлов Drupal 8 и класть в папку /themes.

Я создам папку /themes/drupalbook, вы можете назвать вашу тему как вам угодно:

theme folder

Создаем файл с основной информацией о теме drupalbook.info.yml

В папке нашей темы создаем файл имя_темы.info.yml:

drupalbook.info.yml

Дальше стоит сделать небольшое отступление на то что такое формат YAML (здесь подробнее ссылка на статью).

Обратите внимание на две вещи:
1) Не используйте табуляцию для отступов, только пробелы.
2) Отступы должны быть 1 или более пробелов. (то есть name: value, но не name:value).

Вставляем в файл drupalbook.info.yml:

name: Drupalbook type: theme base theme: stable description: My first Drupal 8 theme. core: 8.x libraries: - drupalbook/global-styling regions: header: Header content: Content # Этот регион обязателен sidebar_first: 'Sidebar first' # Не забываем добавить кавычки footer: Footer

Давайте разберем, что каждая строчка значит.

name — название нашей темы. Машинное имя нашей темы это название папки и файла drupalbook.info.yml — drupalbook.

type — тип проекта друпал, у нас это тема.

base theme — мы наследуемся от темы stable, если тема с нуля, то пишем false.

description — описание темы, которое отображается в админке.

core — версия ядра друпала, для которого эта тема.

libraries — здесь мы поключаем библиотеки к нашему модулю. Делаем мы это через файлик, который мы создадим далее drupalbook.libraries.yml. Обратите внимание на global-styling, мы будем использовать его в drupalbook.libraries.yml.

regions — регионы нашей темы. Обязательный регион content, через него выводится содержимое друпала. Также если название региона в два или более слова, не забудьте обернуть его в кавычки. Машинные имена регионов пишутся через нижнее подчеркивание.

Раз мы заявили об библиотеке нашей темы, так давайте ее создадим.

Файл drupalbook.libraries.yml

Добавляем следующие строки в drupalbook.libraries.yml:

global-styling: version: 1.x css: theme: css/style.css: <> css/print.css: < media: print >js: js/custom.js: <> dependencies: - core/jquery

А теперь давайте разберем все построчно:

global-styling — именно такое имя мы задали в drupalbook.info.yml

css — здесь мы подключаем CSS файлы, заметьте, что для print версии сайта мы указали media: print.

js — здесь подключаем javascript файлы. jQuery не является обязательным для друпала, поэтому если хотим использовать jQuery в нашем пользовательском JavaScript дописываем зависимость от него

dependencies: - core/jquery

Создаем папки css, js и кладем туда файлы:
css/style.css
css/print.css
js/custom.js

Так как мы наследуемся от темы stable, то и шаблоны наследуются от нее. Теперь заходим на наш сайт в раздел Оформление:

чистим кеш и включаем нашу тему:

Theme

Теперь у нас на сайте наша новая тема Drupalbook:

Разработка тем оформления для Drupal 8. Часть 2: Основы темизации

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

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

Механизм темизации

Знание механизмов работы систем управления контентом (Content Management System, CMS) поможет нам в понимании дельнейшего материала.

Drupal — это программа, написанная на языке PHP. В отличии от статических HTML-файлов, Drupal генерирует HTML-код страничек «на лету». В общем случае Drupal делает это, имея только URL необходимой странички, полученный от браузера пользователя. И, что самое удивительное, этого вполне достаточно.

Получив URL, Drupal проделывает кучу работы, в подробности которой мы не будем вдаваться, в результате чего формируется массив данных, который «заворачивается» в HTML-теги и отправляется обратно в браузер пользователя. Процесс «заворачивания» в теги называется рендером, а массив данных — рендер-массив. В процессе рендера используется и PHP-код и файлы шаблонов, а также подключаются файлы CSS и JS.

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

Структура темы оформления

Тема оформления Drupal — это набор файлов, помещенных в общую папку. Минимально необходимые действия для создания темы оформления:

  • создать папку темы, например, winterfell ;
  • создать в ней файл конфигурации темы winterfell.info.yml ;
  • поместить папку темы в папку themes в корневой папке Drupal.
Примечание

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

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

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

В Drupal 8 форматом конфигурационных файлов является YAML. В файле конфигурации THEMENAME.info.yml обязательно должны присутствовать:

  • name — отображаемое название темы;
  • type — тип расширения — theme ;
  • core — версия Drupal — 8.x .

Пример конфигурационного файла:

name: THEMENAME type: theme description: 'Theme description.' core: '8.x' 

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

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

Структура файлов и папок темы оформления

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

CSS и JS

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

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

В папке темы создаем подпапку css . Создаем в ней файл styles.css , куда и будем добавлять наши стили.

Пример файла стилей:

@charset "UTF-8"; @import url(https://fonts.googleapis.com/css?family=Roboto:400,500,700&subset=latin,cyrillic); body

В папке темы создаем файл библиотеки THEMENAME.libraries.yml , в котором перечислим файлы стилей.

Пример файла библиотеки:

LIBRARYNAME: css: theme: css/styles.css: <> 

Добавим в файл конфигурации THEMENAME.info.yml информацию о библиотеке.

Пример конфигурационного файла с добавленной библиотекой:

name: THEMENAME type: theme description: 'Theme description.' core: '8.x' libraries: - THEMENAME/LIBRARYNAME 

Аналогичным образом подключаются файлы JS.

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

Базовые темы

Шрифт — это, конечно, круто, но оформление элементов, по-прежнему, не вызывает восторга. Тема «по умолчанию» не имеет оформления, чтобы оно не мешало вам при разработке собственной темы.

Но в Drupal есть и другая интересная возможность — использовать в качестве основы любую другую тему, в том числе c готовым оформлением элементов. Такая тема будет называться базовой. Для того чтобы ее определить, нужно добавить в файл THEMENAME.info.yml параметр base theme с названием базовой темы.

Пример конфигурационного файла с базовой темой:

name: THEMENAME type: theme description: 'Theme description.' core: '8.x' base theme: BASETHEME libraries: - THEMENAME/LIBRARYNAME 

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

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

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

Вместе с Drupal 8 поставляются две базовые темы Stable и Classy, их мы рассмотрим подробно. На drupal.org тоже представлено немало базовых тем, основанных на разных технологиях и подходах. И хотя многие из них заслуживают внимания, сейчас мы их рассматривать не будем. Я рекомендую вам это сделать самостоятельно.

Stable

Stable — это базовая тема Drupal 8 «по умолчанию», и она используется, если вы не указываете другую базовую тему. Она имеет небольшие отличия от «голой» разметки предоставляемой модулями Drupal (ее мы можем увидеть в теме Stark). Stable — это своего рода прослойка, которая в случае изменений в модулях будет обеспечивать совместимость с существующими темами оформления.

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

Stable хорошо подходит для разработки тем оформления «с нуля» и на основе фреймворков, а также разработки других базовых тем.

Classy

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

Classy используется в качестве базовой темы для Bartik и Seven — тем, включенных по умолчанию при установке Drupal.

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

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

Выбор базовой темы

Базовые темы без оформления подходят для комплексных разработок, разработки тем на основе дизайн-макетов, брендбуков и фреймворков.

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

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

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

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

Однако как раз такую тему я разработал и сейчас активно поддерживаю. Material Base — базовая тема для разработчиков тем, сделанная с использованием концепции Material Design от Google.

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

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

В следующей статье мы будем работать со стилями.

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

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