Инсталляционные профили, создание сборок.

Содержание

Слайд 2

План доклада 1. Что такое сборка, примеры сборок 2. Что такое


План доклада

1. Что такое сборка, примеры сборок
2. Что такое инсталляционный профиль

2.1. Где находятся профили
2.1.1. Рекомендуемое расположение модулей и тем в профилях
2.2. Жизненный цикл инсталляционного профиля
2.3. Основные хуки
2.3.1. hook_profile_modules() - список устанавливаемых модулей
2.3.2. hook_profile_task_list() - задачи, запускаемые инсталлятором
2.3.3. hook_profile_tasks() - дополнительные задачи инсталляции
3. Модуль Install Profile API
3.1. Полезные функции модуля
Слайд 3

План доклада (продолжение) 4. Знакомство с набором модулей и тем для

План доклада (продолжение)

4. Знакомство с набором модулей и тем для создания

сборок
4.1. Модуль Features
4.2. Модуль Strongarm
4.3. Модуль Context
4.4. Модуль Feature Server
4.5. Тема Rubik/Cube
4.6. Дополнительные модули
5. Ресурсы и литература
Слайд 4

Что такое сборка, примеры сборок Сборка - это подготовленный для использования

Что такое сборка, примеры сборок

Сборка - это подготовленный для использования программный

продукт, который cодержит в себе ядро, модули и их настройки.
Слайд 5

Предназначена для построения интранет порталов. Имеет 6 основных функций: Блог Вики

Предназначена для построения интранет порталов.

Имеет 6 основных функций:
Блог
Вики
Календарь

Список дел
Мини-чат
Панель управления

Open Atrium (http://openatrium.com/)

Слайд 6

предназначена для: Сбора Агрегации Визуализации данных Managing News (http://www.managingnews.com/)

предназначена для:
Сбора
Агрегации
Визуализации данных

Managing News (http://www.managingnews.com/)

Слайд 7

предназначена для реализации различных средств массовой информации: Профессиональных изданий Сайт журналов Газет OpenPublish (http://openpublishapp.com/)

предназначена для реализации различных средств массовой информации:
Профессиональных изданий
Сайт журналов

Газет

OpenPublish (http://openpublishapp.com/)

Слайд 8

Что такое инсталляционный профиль Инсталляционный профиль — это набор параметров инсталляции

Что такое инсталляционный профиль

Инсталляционный профиль — это набор параметров инсталляции Drupal.

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

Где находятся профили Профили находятся в каталоге /profiles/имя_профиля/ Сам профиль представлен

Где находятся профили

Профили находятся в каталоге /profiles/имя_профиля/
Сам профиль представлен в виде

файла /profiles/имя_профиля/имя_профиля.profile
С профилем может поставляться файл перевода (должен располагаться в папке /profiles/имя_профиля/translations).
Механизм инсталляции Drupal ищет модули при инсталляции профиля в папке /profiles/имя_профиля/modules/*.
Для того, чтобы темы брались из каталога /profiles/имя_профиля/tehemes/* нужно писать дополнительный код.
Слайд 10

Рекомендуемое расположение модулей и тем в сборках Каталоги где Drupal ищет модули: modules sites/all/modules profile/имя_профиля/modules sites/*/modules

Рекомендуемое расположение модулей и тем в сборках

Каталоги где Drupal ищет модули:
modules
sites/all/modules
profile/имя_профиля/modules
sites/*/modules

Слайд 11

Рекомендуется располагать модули которые идут вместе со сборкой в следующих каталогах:

Рекомендуется располагать модули которые идут вместе со сборкой в следующих каталогах:

/profiles/имя_профиля/modules/contrib

- для модулей которые можно скачать с drupal.org
/profiles/имя_профиля/modules/custom - для модулей ваших собственных модулей (которые еще не лежат на drupal.org, но скоро там будут)
/profiles/имя_профиля/modules/features - для "функций" построенных с помощью модуля features (далее в докладе)
/profiles/имя_профиля/modules/dev - модули для разработки сайта (их можно удалить с живого сайта)
/profiles/имя_профиля/modules/ваша_группа - ваша специальная группа модулей.
Модули конкретного сайта рекомендуется располагать отдельно от модулей сборки, но соблюдать такую же структуру папок (например, в папке /sites/default/modules или /sites/example.com/modules).
Если Вы создаете несколько сборок с общими модулями, их нужно положить в папку sites/all/modules
Слайд 12

Структура каталогов в сборке Open Atrium: Файлы сборки располагаются в каталоге

Структура каталогов в сборке Open Atrium:

Файлы сборки располагаются в каталоге /profiles/openatrium
/profiles/openatrium/modules

- модули
/profiles/openatrium/modules/atrium_features - функции сборки
/profiles/openatrium/modules/contrib - модули с drupal.org
/profiles/openatrium/modules/custom - модули собственной разработки
/profiles/openatrium/modules/developer - для разработчика
/profiles/openatrium/modules/l10n - для локализации сборки
Слайд 13

Жизненный цикл инсталляционного профиля

Жизненный цикл инсталляционного профиля

Слайд 14

Основные хуки и функции инсталляционного профиля hook_profile_details() hook_profile_modules() hook_profile_task_list() hook_profile_tasks()

Основные хуки и функции инсталляционного профиля

hook_profile_details()
hook_profile_modules()
hook_profile_task_list()
hook_profile_tasks()

Слайд 15

hook_profile_details() Возвращаем имя и описание нашего профиля:


hook_profile_details()

Возвращаем имя и описание нашего профиля:

Слайд 16

hook_profile_modules() Возвращаем список устанавливаемых модулей (необходимо упорядочить массив, так чтобы модули

hook_profile_modules()

Возвращаем список устанавливаемых модулей (необходимо упорядочить массив, так чтобы модули

с зависимостями, следовали после модулей, от которых они зависят):
Слайд 17

hook_profile_task_list() Определяем задачи, запускаемые инсталлятором (они появятся в списке задач в левом сайдбаре при инсталляции):

hook_profile_task_list()

Определяем задачи, запускаемые инсталлятором (они появятся в списке задач в левом

сайдбаре при инсталляции):
Слайд 18

Список стандартных задач инсталляции profile-select - Выбор профиля locale-select - Выбор

Список стандартных задач инсталляции

profile-select - Выбор профиля
locale-select - Выбор языка
requirements -

Проверка требований
database - Настройка базы данных
profile-install - Подготовка пакета модулей для инсталляции и активации
profile-install-batch - Инсталляция профиля (модули инсталлированы и активизированы)
locale-initial-import - Подготовка к импорту пакетов перевода интерфейса
locale-initial-batch - Импорт файлов переводов интерфейса
configure - Конфигурирование сайта (форма с логином и паролем админа)
profile - Передача управления функции _profile_task() активного инсталляционного профиля
profile-finished - Подготовка к импорту остальных переводов интерфейса
locale-remaining-batch - Установка остальных переводов интерфейса
finished - Уведомление пользователя о завершении инсталляции
done - Перестройка меню и отображение начальной страницы
Слайд 19

hook_profile_tasks()

hook_profile_tasks()

Слайд 20

Особенности В хуке hook_profile_tasks() можно вызвать аналогичный хук из профиля default,

Особенности

В хуке hook_profile_tasks() можно вызвать аналогичный хук из профиля default, выполнив,

его инсталляционные задачи:

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

Слайд 21

Можно изменять формы с помощью хука hook_form_alter()

Можно изменять формы с помощью хука hook_form_alter()

Слайд 22

Можно выводить формы настройки чего-либо, однако необходимо установить свойство "#redirect" в

Можно выводить формы настройки чего-либо, однако необходимо установить свойство "#redirect" в

FALSE в массиве формы. (примеры в install_tasks() из файла install.php).
Для перевода используется функция st(), а не t(), так как полная загрузка кода Drupal не выполнена и функция t() не доступна.
Поскольку СУБД на этапе инсталляции уже подключена, можно пользоваться функциями для работы с переменными (variable_set() и variable_get()).
Если известно, что для выполнении задачи может потребоваться длительное время - лучше такую задачу разбить на операции и запустить в виде пакета (Batch).
Для установки темы в процессе инсталляции (если тема находиться в папке с профилем) необходимо выполнить код слегка переписанной _system_theme_data() (смотри _openatrium_system_theme_data())
Слайд 23

Модуль Install Profile API Install Profile API (http://drupal.org/project/install_profile_api) Это набор полезных

Модуль Install Profile API

Install Profile API (http://drupal.org/project/install_profile_api)
Это набор полезных функций для

упрощения создания структуры данных Drupal в процессе инсталляции.
Слайд 24

Текущая стабильная версия (6.x-2.1) поддерживает следующие модули: core модули: aggregator block

Текущая стабильная версия (6.x-2.1) поддерживает следующие модули:

core модули:
aggregator
block
book
contact
filter
menu
node
profile
search
statistics
system
taxonomy
user

contrib модули:
content_copy
content
custom_pagers
flag
imagecache
node_export
taxonomy_export
tinymce
token
views
wikitools

Слайд 25

Подключение модуля Для подключения модуля на этапе инсталляции сборки необходимо в

Подключение модуля

Для подключения модуля на этапе инсталляции сборки необходимо в хук

hook_profile_tasks() профиля в самом начале вызвать функцию модуля install_include(), передав ей в качестве параметров вызов хука hook_profile_modules().
Слайд 26

Полезные функции модуля Функции управления нодами и типами материалов: install_add_content_type() install_create_node()

Полезные функции модуля

Функции управления нодами и типами материалов:
install_add_content_type()
install_create_node()
install_node_export_import_from_file()

Функции управления темами:
install_enable_theme()
install_disable_theme()
install_default_theme()
install_admin_theme()

Функции управления

блоками:
install_add_block()
install_set_block()
install_create_custom_block()

Функции управления меню:
install_menu_create_menu()
install_menu_create_menu_item()

Слайд 27

Полезные функции (продолжение) Функции управления пользователями: install_add_user() install_add_role() install_add_user_to_role() install_add_permissions() Функции

Полезные функции (продолжение)

Функции управления пользователями:
install_add_user()
install_add_role()
install_add_user_to_role()
install_add_permissions()

Функции управления таксономией:
install_taxonomy_add_vocabulary()
install_taxonomy_add_term()
install_taxonomy_assign_nid_tid()
install_taxonomy_export_import_from_file()

Функции управления CCK типами и

полями:
install_create_field()
install_create_field_group()
install_content_copy_import_from_file()

Функция для создания imagecache пресета:
install_imagecache_add_preset()
Функция импорта представлений из файла:
install_views_ui_import_from_file()

Слайд 28

Знакомство с набором модулей и тем для создания сборок Модуль Features

Знакомство с набором модулей и тем для создания сборок

Модуль Features
Модуль Strongarm


Модуль Context
Модуль Feature Server
Тема Rubik/Cube
Слайд 29

Модуль Features http://drupal.org/project/features Feature - это набор сущностей Drupal собранных вместе

Модуль Features

http://drupal.org/project/features
Feature - это набор сущностей Drupal собранных вместе для выполнения

определенных задач пользователя.
Модуль предоставляет интерфейс и API для построения функций (features).
Нужен для объединения сущностей и настроек сборки в пакеты
Статья:
http://developmentseed.org/blog/2009/may/29/making-and-using-features-drupal
Слайд 30

Основная идея модуля Features

Основная идея модуля Features

Слайд 31

Управление Features в Open Atrium

Управление Features в Open Atrium

Слайд 32

Редактирование Feature Atrium Blog в Open Atrium

Редактирование Feature Atrium Blog
в Open Atrium

Слайд 33

atrium_blog.defaults.inc — значения сущностей (cck field, permissions, и др.) atrium_blog.feature.inc —


atrium_blog.defaults.inc — значения сущностей (cck field, permissions, и др.)
atrium_blog.feature.inc —

хуки, отвечающие за сущности
atrium_blog.features.node.inc — создание типа материала
atrium_blog.features.views.inc — создание представления
atrium_blog.module — здесь можно писать свою логику
Слайд 34

Модуль Strongarm http://drupal.org/project/strongarm Модуль предоставляет API для переопределения переменных (variables) ядра

Модуль Strongarm

http://drupal.org/project/strongarm
Модуль предоставляет API для переопределения переменных (variables) ядра и

других модулей .
Интегрируется с модулем Features.
Нужен для сохранения настроек модулей внутри Features.
Статья о модуле:
http://developmentseed.org/blog/2009/dec/04/strongarm-2-leaner-and-meaner
Слайд 35

Слайд 36

Модуль Context http://drupal.org/project/context Позволяет создать контекстные условия и реакции на них.

Модуль Context

http://drupal.org/project/context
Позволяет создать контекстные условия и реакции на них.
Интегрируется с модулем

Features.
Нужен для добавления блока в регион и установки активного пункта меню.
Статья о модуле и скринкаст:
http://developmentseed.org/blog/2009/jan/30/easy-feature-building-spaces
Слайд 37

Условия В качестве условий можно выбрать следующие (количество зависит от активных

Условия

В качестве условий можно выбрать следующие (количество зависит от активных модулей):
Язык

материала
Активный пункт меню
Тип материала
Термин таксономии
Путь
Роль пользователя
Представление
Слайд 38

Слайд 39

Реакции В качестве реакции можно выполнить следующие действия (зависят от активных

Реакции

В качестве реакции можно выполнить следующие действия (зависят от активных модулей):
Добавить

блок в регион
Переключить тему
Установить активный пункт меню
Слайд 40

Слайд 41

Модуль Feature Server http://code.developmentseed.org/featureserver/ Позволяет создавать проекты и делать релизы этих

Модуль Feature Server

http://code.developmentseed.org/featureserver/
Позволяет создавать проекты и делать релизы этих проектов, функций

(feature) и тем (theme), а также дает возможность подписываться на обновления и получать уведомления о новых версиях через модуль Update Status (update).
Статья о модуле:
http://developmentseed.org/blog/2009/jun/25/pushing-public-private-updates-your-feature-server
Слайд 42

Создаем проект

Создаем проект

Слайд 43

Делаем релиз модуля

Делаем релиз модуля

Слайд 44

Тема Rubik/Cube http://code.developmentseed.org/rubik/ Тема для администраторского интерфейса, разработанная для совместной работы

Тема Rubik/Cube

http://code.developmentseed.org/rubik/
Тема для администраторского интерфейса, разработанная для совместной работы с модулем

admin (версий 6.x-2.x).
Зависит от темы Tao (http://code.developmentseed.org/tao/), которая является базовой.
Статья по теме Rubik/Cube:
http://developmentseed.org/blog/2009/nov/20/admin-rubik-improved-ui-drupal-admins
Слайд 45

Тема Rubik

Тема Rubik

Слайд 46

Тема Cube

Тема Cube

Слайд 47

Ресурсы и литература Джон Вандюк. CMS Drupal: система для создания сайтов

Ресурсы и литература

Джон Вандюк. CMS Drupal: система для создания сайтов и

управления ими, 2-е изд. : Пер. с англ. - М. : ООО «И.Д. Вильямс», 2009.
Installation Profile Utilities - http://drupal.org/node/180078
Writing an installation profile - http://drupal.org/node/67921
Компания DeelopmentSeed - http://developmentseed.org/
Сборка Open Atrium - http://openatrium.com/
Сборка Managing News - http://www.managingnews.com/
Компания Phase2 Technology - http://www.phase2technology.com/
Сборка OpenPublish - http://openpublishapp.com/
Модуль Features - http://drupal.org/project/features http://developmentseed.org/blog/2009/may/29/making-and-using-features-drupal
Слайд 48

Ресурсы и литература (продолжение) Модуль Strongarm - http://drupal.org/project/strongarm http://developmentseed.org/blog/2009/dec/04/strongarm-2-leaner-and-meaner Модуль Context

Ресурсы и литература (продолжение)

Модуль Strongarm - http://drupal.org/project/strongarm http://developmentseed.org/blog/2009/dec/04/strongarm-2-leaner-and-meaner
Модуль Context - http://drupal.org/project/context

http://developmentseed.org/blog/2009/jan/30/easy-feature-building-spaces
Модуль Feature Server - http://code.developmentseed.org/featureserver/ http://developmentseed.org/blog/2009/jun/25/pushing-public-private-updates-your-feature-server
Тема Rubik/Cube - http://code.developmentseed.org/rubik/ http://developmentseed.org/blog/2009/nov/20/admin-rubik-improved-ui-drupal-admins
Тема Tao - http://code.developmentseed.org/tao/
Модуль Install Profile API - http://drupal.org/project/install_profile_api