我在ct模态窗口中加载一个面板(node_view)。到目前为止,这是完美的。但现在我需要加载面板的特定变体。
我正在玩处理程序的东西......但是还没有得到。
我该怎么做?
这是我用于加载面板程序的代码:
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)));
}
答案 0 :(得分:2)
函数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)。