Как установить контекст группы Drupal
Как мне установить групповой контекст в Drupal 7?
Я нашел это в API-интерфейсе og_context:
**> 7 og_context.module og_context ($ group_type = 'node', $ group = NULL)
Получить или установить групповой контекст, используя систему меню.
параметры
$ group_type: контекст, который нужно получить по типу группы. По умолчанию это "узел".
$ group: необязательно; Групповая сущность для установки в качестве контекста.
Возвращаемое значение
Массив, заданный типом группы и идентификатором группы, или FALSE, если контекст не найден.**
Но я не нашел ни одного примера того, как войти в "Групповую сущность". Я просто знаю идентификатор узла группы, который я хочу использовать (например, "40").
Кто-нибудь может мне с этим помочь? Спасибо!
2 ответа
Я нашел решение здесь: https://drupal.org/comment/8179187
Предполагая, что arg(1) является идентификатором узла группы:
$node = node_load(arg(1));
og_context('node', $node); // Set og context
Это сработало для меня http://cgit.drupalcode.org/og_extras/tree/og_extras.module?h=7.x-1.x
function mymodulename_og_context_negotiation_info() {
$providers = array();
$providers['mymodulename'] = array(
'name' => t('mymodulename url'),
'description' => t("Select group context for any url that starts with 'group/%'. Make sure that all views and custom pages use paths that start with this value in order for the context to be recognized when viewing those pages, and that nothing that is not a group uses that path."),
'callback' => 'mymodulename_context_handler_url',
);
return $providers;
}
/**
* Context handler; Get groups from URL.
*/
function mymodulename_context_handler_url() {
$context = array();
if (arg(0) == 'group' && is_numeric(arg(1))) {
$context = array('node' => array(arg(1)));
}
return $context;
}