Ho un plugin ctools aka. tipo di contenuto aka. riquadro del pannello. Come lo si rende programmaticamente?
Ho un plugin ctools aka. tipo di contenuto aka. riquadro del pannello. Come lo si rende programmaticamente?
Risposte:
ctools_content_render()
è la soluzione.
ctools_include('content');
prima ctools_content_render()
, perché in altri casi otterrai un errore fatale.
C'è un grande e semplice esempio su come farlo nel ctools_ajax_sample
modulo (nella suite CTools).
Come è stato sottolineato, il tasto è usare la funzione ctools_content_render()
.
L'esempio mostra come popolare gli argomenti della funzione, anche se ovviamente è necessario personalizzarla in base alle proprie esigenze.
Questo thread nei gruppi Drupal offre maggiori informazioni su come caricare il giusto contesto.
File ctools/ctools_ajax_sample/ctools_ajax_sample.module
function ctools_ajax_simple_form() {
ctools_include('content');
ctools_include('context');
$node = node_load(1);
$context = ctools_context_create('node', $node);
$context = array('context_node_1' => $context);
return ctools_content_render('node_comment_form', 'node_comment_form', ctools_ajax_simple_form_pane(), array(), array(), $context);
}
function ctools_ajax_simple_form_pane() {
$configuration = array(
'anon_links' => 0,
'context' => 'context_node_1',
'override_title' => 0,
'override_title_text' => '',
);
return $configuration;
}
Se carichi il file richiesto, tutto ciò che devi fare è chiamare la funzione render ( hook_content_type_render
) che restituirà un oggetto di classe standard, proprio come hook_block_view
fa.
Tutto ciò di cui hai bisogno è una funzione tema, a meno che tu non voglia semplicemente renderizzare direttamente l'output grezzo.
Nel codice potrebbe assomigliare a questo:
function render_ctools_content($subtype, $conf, $panel_args, $context, $function, $file, $theme = TRUE) {
require_once $file;
$pane = new stdClass();
if (function_exists($function)) {
$pane = $function($subtype, $conf, $panel_args, $context); // hook_content_type_render
}
if ($theme) {
return theme('module_ctools_content', array('pane' => $pane));
}
return $pane->content;
}
Sono stato in grado di estrarre una pagina con pannelli in panopolio usando il seguente codice:
module_load_include('inc', 'page_manager', 'plugins/tasks/node_view');
$node = node_load($nid);
$render = page_manager_node_view_page($node);
echo drupal_render($render);
module_load_include()
te, potresti interrompere il processo di caricamento dei plugin di ctools. CTools usa il require_once
metodo, quindi se il file è stato incluso in precedenza dallo script di terze parti, non sarà possibile includerlo in ctools (e $plugin
nell'array di analisi ). Quindi, come una nuova ricerca, il riquadro non funzionerà in altri luoghi.