Drupal 7: Hacer bypass a page.tpl.php y html.tpl.php programáticamente
¿Y si necesitaras entregar una página sin los CSS ni JS ni el HTML (cabeceras, footer, sidebars) que viene por defecto?
Solo hay que hacer dos cosas:
1. Añadir la propiedad ‘delivery callback’ a tu menu callback
1 2 3 4 5 |
$items['factura/%node'] = array( 'title' => 'Entrega una factura', 'page callback' => 'generar_factura', 'delivery callback' => 'mi_delivery_page', 'access callback' => TRUE, ); |
2. Añadir esta función.
No hace falta modificarla. Si querés cambiarle el nombre no te olvides de modificar también el nombre en el delivery callback del menú.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * Delivery callback. * * Entrega el contenido así como viene sin pasar ni * por page.tpl.php ni por html.tpl.php * */ function mi_delivery_page($page_callback_result) { if (isset($page_callback_result) && is_null(drupal_get_http_header('Content-Type'))) { drupal_add_http_header('Content-Type', 'text/html; charset=utf-8'); } global $language; drupal_add_http_header('Content-Language', $language->language); print $page_callback_result; drupal_page_footer(); } |
Borra cache y listo.
Chau!