Independientemente de la versión de Drupal para la que está escribiendo el módulo, hay dos errores en su código:
- Usted define "Bluemarine" como función de tema, pero luego llama
theme('custom')
, lo que llamaría la función de tema "personalizado"
- Si define "personalizado" como una función de tema que utiliza un archivo de plantilla,
theme_custom()
nunca se llama
Si está escribiendo código para Drupal 6, entonces el código debe ser similar al siguiente. Supongo que el nombre de la función del tema es custom
.
function custom_menu(){
$items = array();
$items['custom'] = array(
'title' => t('custom!'),
'page callback' => 'custom_page',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function custom_theme() {
return array(
'custom' => array(
'arguments' => array('output' => NULL),
'template' => 'custom',
),
);
}
function custom_page() {
$output = 'This is a custom module';
return theme('custom', $output);
}
function theme_custom($output) {
}
El archivo de plantilla tendrá acceso a $output
, y a cualquier variable establecida template_preprocess_custom()
, si su módulo lo implementa.
Por ejemplo, podría implementar un código similar al siguiente:
function template_preprocess_custom(&$variables) {
if ($variables['output'] == 'This is a custom module') {
$variables['append'] = ' and I wrote it myself.";
}
}
Con este código, el archivo de plantilla tiene acceso a $output
y $append
.
Como ejemplo de función de tema que usa un archivo de plantilla, puede mirar theme_node () , que está definido en node_theme () , y que usa node.tpl.php como archivo de plantilla; la función de preproceso implementada por el módulo Node para esa función de tema es template_preprocess_node () .