Pull to refresh

Массовый импорт панелей из модуля

Reading time2 min
Views865
Давно уже взял себе за правило вносить все изменения на сайт через код. Теперь добрался и до панелей (модуль panels).
Если необходимо импортировать большое количество панелей то можно воспользоваться модулем 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/.


Скачать рабочую версию модуля можно здесь.

Буду рад прочитать Ваши замечания. Спасибо.
Tags:
Hubs:
+21
Comments0

Articles