Наверняка все сталкивались с готовыми сборками сайтов на Drupal, когда после установки получаешь готовый сайт с набором необходимых модулей, своей темой и т.д. Существует большое количество таких сборок, среди них Open Atrium, Drupal Commons и т.п. Думаю возникал вопрос "А как это реализовано? или "Как это сделать?" Ответ на этот вопрос - Drupal Install Profile. И так, как создать свой установочный профиль. В основном инсталляционные профили создаются на основе существующего сайта.
Шаг 1. Подготовка файлов.
Создаем папку "modules", в ней папку "contrib", в которую копируем все необходимые для работы сайта модули. Создаем папку "themes", в которой размещаем папку с нашей темой, например acquia_prosper, и набором .tpl.php и .js и .css файлов, созданных в процессе разработки сайта. Для включения некоторых особых элементов сайта в сборку, таких как views, типы контента, меню, роли, права доступа и т.д., используется модуль Features. Созданные "фичи" положим в папку "features" и разместим в папке "modules".
Примечание: На данный момент модуль Features не переносит словари таксономии и термины в них, возможно это будет реализовано в следующих версиях модуля, поэтому это приходится выполнять вручную. Об этом будет написано ниже.
Получаем структуру:
- myprofile
- modules
- contrib
- features
- themes
Шаг 2. Создание файла .profile.
Этот файл является "мозгом" нашего профиля, он руководит процессом установки сайта.
Примечание: На данном этапе работы сайта функция t() не работает, поэтому используется ее эквивалент - st ().
2.1. Создаем файл myprofile.profile.
2.2. _profile_modules().
В файле формируем функцию myprofile_profile_modules (). В этой функции описываются модули, которые после установки должны быть включены.
// $Id$
// indicate dictionary taxonomy id
define('MYPROFILE_NEWS_VOCAB_ID', 1);
// indicate topic title
define('MYPROFILE_ACQUIA_THEME', 'acquia_prosper');
define('MYPROFILE_FUSION_CORE', 'fusion_core');
/**
* Returns array of modules which will be turned on after profile installation
*/
function myprofile_profile_modules() {
$modules = array(
// Default Drupal modules.
'color', 'comment', 'dblog', 'help', 'menu', 'path', 'taxonomy',
//ADMINISTRATION
'admin', 'admin_menu',
//CCK
'content', 'text', 'ctools', 'content_permissions', 'fieldgroup', 'filefield',
'optionwidgets', 'nodereference', 'userreference',
//FILEFIELD PATHS
'filefield_paths',
//IMAGECACHE
'imageapi', 'imageapi_gd', 'imagecache', 'imagecache_ui', 'imagecache_customactions',
//TOKEN
'token',
//VIEWS
'views', 'views_bulk_operations', 'viewscarousel', 'views_export', 'views_or', 'views_slideshow',
'views_ui',
//META TAGS
'nodewords', 'nodewords_basic', 'nodewords_extra', 'nodewords_verification_tags',
//USER INTERFACE
'imce', 'wysiwyg', 'jquery_ui', 'jquery_update', 'dialog','vertical_tabs', 'imce_wysiwyg',
//SKINR
'skinr', 'skinr_ui',
//OTHER
'better_formats', 'globalredirect', 'no_anon', 'pathauto',
'url_alter', 'subpath_alias', 'token_actions', 'transliteration', 'vertical_tabs',
//UBERCART
'ca', 'uc_order', 'uc_store', 'uc_product', 'uc_cart',
'uc_payment', 'uc_reports', 'uc_shipping', 'uc_product_power_tools', 'uc_stock',
//XML SITEMAP
'xmlsitemap', 'xmlsitemap_engines', 'xmlsitemap_menu', 'xmlsitemap_node'
);
return $modules;
}



































































