Как загрузить вариант панели программно?
Я загружаю панель (node_view) в модальное окно ct. Это прекрасно работает до сих пор. Но теперь мне нужно загрузить конкретный вариант панели.
Я играл с хэндлером... но пока не получил.
Как я могу это сделать?
Вот мой код для программной загрузки панели:
function get_panel_view(&$node) {
// Load my task plugin
$task = page_manager_get_task('node_view');
// Load the node into a context.
ctools_include('context');
ctools_include('context-task-handler');
$contexts = ctools_context_handler_get_task_contexts($task, '', array($node));
$output = ctools_context_handler_render($task, '', $contexts, array($node->nid));
if ($output !== FALSE) {
return $output;
//return drupal_render($output['content']);
}
// Otherwise, fall back.
return drupal_render(node_view(node_load($node->nid)));
}
1 ответ
Решение
Функция ctools_context_handler_render_handler()
делает трюк, например:
Сначала вам нужно получить все объекты-обработчики данной панели, например
$handlers = page_manager_load_sorted_handlers($task, '', TRUE);
Укажите ваш обработчик (вариант), который вы хотите отобразить, например
$handler = $handlers['node_view_panel_context_3'];
Теперь мы получили все необходимые аргументы для запуска функции:
$output = ctools_context_handler_render_handler($task,'',$handler, $contexts, array($node->nid));
А теперь $output
содержит вариант (3) моей панели.