OG Features - добавляем гибкости в OG

Главные вкладки

Аватар пользователя Semantics Semantics 17 марта 2012 в 12:03


OG Features - модуль позволяющий администратору сайта определять, какой функционал в группе может включаться и отключаться владельцем группы.
Например, это могут быть произвольные типы контента, вьюхи, панели. Яркий пример использования этого модуля, это сборка Drupal Commons, где через og_features сделаны такие фичи для групп как:

  • Blog
  • Discussions
  • Documents
  • Events
  • Group Aggregator
  • Polling
  • Wiki
  • Q&A

Сам процесс создания фичи для OG Features нетривиален.
Для этого вам нужно создать свой модуль, где нужно реализовать хук hook_og_features_registry().
Например, у нас модуль называется modulename и мы хотим определить фичу my_feature, код будет следующий, код взяд из модуля, комментарии оставлены оригинальные и строкой ниже добавлены мои:

function modulename_og_features_registry() {
  $registry = array();
 
  // Feature: my_feature.
  // Создание объекта фичи.
  $feature = new stdClass;

  // The feature id
  //Указываем id фичи, оно должно быть уникальным в пределах сайта
  $feature->id = 'my_feature';

  // The name that will show up on the feature toggle form
  //Название фичи, которое будет показываться в группе на странице управления фичами
  $feature->name = t('Blog');

  // The description that will show up on the feature toggle form
  //Описание, показываемое на странице управления фичами
  $feature->description = t('Provide a simple blog for your group');

  // The components of the feature that will be enabled/disabled
  //Компоненты которые включает фича
  $feature->components = array(
    'views' => array(
      'og_tab_blogs',
    ),
    'node' => array(
      'blog',
    ),
    'context' => array(
      'group_blogs',
    ),
    'path' => array(
      'node/%node/aggregator',
    ),
    'pane' => array(
      'og_content_tracker-panel_pane_1',
    ),
    'og link' => array(
      'og_invite',  // The key of the link in the group details block
    ),
  );
  // It's recommended that you key the feature with the name of the
  // module/feature that is supplying this, so that any custom page
  // callbacks provided by this module/feature become disabled within
  // the group
  //помещаем фичу в "контейнер", это позволит нам в модуле определить несколько фич, если требуется
  $registry[$feature->id] = $feature;
 
  // Feature: my_second_feature
  //объявляем вторую фичу
  $feature = new stdClass;
  // You can continue to add as many as you'd like
  //в дальнейшем процесс никак не отличается от первой фичи, в конце делаем так же $registry[$feature->id] = $feature;
  return $registry;
}

Комментарии

Аватар пользователя dealancer@drupal.org dealancer@drupal.org 5 апреля 2012 в 22:03

+1.
Полезный модуль, не знал о его существовании, но жаль что он только для 6ки.

Но отчаиваться не надо, ведь есть модуль Spaces, который позволяет делать почти все то же самое.