Давно уже взял себе за правило вносить все изменения на сайт через код. Теперь добрался и до панелей (модуль panels).
Если необходимо импортировать большое количество панелей то можно воспользоваться модулем features. Единственное что не удобно, так это то что этот модуль экспортирует все панели в один файл, и потом с этим файлом довольно-таки сложно работать.
На много удобнее иметь некую папку import/ и складывать туда панели, каждый в своем файле. В этом случае, при необходимости, очень просто редактировать любые панели, а также прослеживать изменения (если вы конечно используете систему контроля версий, такие как SVN или GIT).
Ничего подобно я найти не смог, поэтому написал свой маленький модуль с блэкджеком и импортом.
Для начала необходимо создать все файлы для модуля. Выглядит все вот так:
Теперь используя механизм модуля Features импортируем все панели из папки.
panels_import.module:
panels_import.pages_default.inc:
Теперь можно экспортировать любые панели и сохранять их в файлы внутри папки import/.
Скачать рабочую версию модуля можно здесь.
Буду рад прочитать Ваши замечания. Спасибо.
Если необходимо импортировать большое количество панелей то можно воспользоваться модулем features. Единственное что не удобно, так это то что этот модуль экспортирует все панели в один файл, и потом с этим файлом довольно-таки сложно работать.
На много удобнее иметь некую папку import/ и складывать туда панели, каждый в своем файле. В этом случае, при необходимости, очень просто редактировать любые панели, а также прослеживать изменения (если вы конечно используете систему контроля версий, такие как SVN или GIT).
Ничего подобно я найти не смог, поэтому написал свой маленький модуль с блэкджеком и импортом.
Для начала необходимо создать все файлы для модуля. Выглядит все вот так:
Теперь используя механизм модуля Features импортируем все панели из папки.
panels_import.module:
/**
* Implementation of hook_ctools_plugin_directory().
*/
function panels_import_ctools_plugin_directory($module, $plugin) {
if ($module == 'panels_import' && !empty($plugin)) {
return $plugin;
}
}
/**
* Implement hook_ctools_plugin_api().
*/
function panels_import_ctools_plugin_api($module, $api) {
if ($module == 'page_manager' && $api == 'pages_default') {
return array('version' => 1);
}
}
panels_import.pages_default.inc:
function panels_import_default_page_manager_pages() {
$pages = array();
// scan directory for imports files
$dir = drupal_get_path('module', 'panels_import') .'/import';
$files = file_scan_directory($dir, '.*', array('.', '..', 'CVS', 'README.txt'), 0, FALSE);
foreach ($files as $file) {
// load each one files
$export_data = file_get_contents($file->filename);
eval($export_data);
// and add to array
$pages[$page->name] = $page;
}
return $pages;
}
Теперь можно экспортировать любые панели и сохранять их в файлы внутри папки import/.
Скачать рабочую версию модуля можно здесь.
Буду рад прочитать Ваши замечания. Спасибо.