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 $outputy $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 () .