Personalizar la cabecera de una vista en Drupal

Los comentarios de este artículo han sido cerrados por ser obsoleto:

Todo lo que necesito por un requerimiento del proyecto en el que estoy trabajando justamente no está muy documentado y por eso pierdo uno o dos días investigando sobre el tema. Por eso una vez que lo obtengo quiero publicarlo no solo porque hay gente que pueda estar en mi misma situación sino también como ayuda-memoria.
En este caso es personalizar la disposición (layout) de la cabecera (donde están los criterios de búsqueda) de la vista que he creado.
Creo una vista (view) justamente llamada vista (puede llevar a confusión esto :-?)
El módulo Theme Wizard ayuda mucho para saber cómo queda el código de la vista y los archivos pertinentes.

En el directorio del tema, edito template.php y redefino un hook

function phptemplate_views_filters($form) {
$view = $form['view']['#value'];
if ($view->name == 'vista'){ //Si la view es Vista
foreach ($view->exposed_filter as $count => $expose) {
$row[] = drupal_render($form["op$count"]) ;
$box[] = drupal_render($form["filter$count"]);
$label[] = $expose['label'];
}
$row[] = drupal_render($form['submit']);
$label[] = ''; // so the column count is the same.
$title = $view->page_title;
return _phptemplate_callback('views-filters-vista', array('title' => $title, 'row' => $row, 'box' => $box, 'label'=>$label));
}
else{ //en caso de ser la view por defecto
foreach ($view->exposed_filter as $count => $expose) {
$row[] = drupal_render($form["op$count"]) . drupal_render($form["filter$count"]);
$label[] = $expose['label'];
}
$row[] = drupal_render($form['submit']);
$label[] = ''; // so the column count is the same.
// make the 'q' come first
return drupal_render($form['q']) . theme('table', $label, array($row)) . drupal_render($form);
}
}

Hay que tener creado un CSS, views-table-vista.css

/* *
* views template to output the stylesheet to customize a view.
* This code was generated by the views theming wizard
* Date: Thu, 02/15/2007 - 15:34
* View: vista
*
* The class selectors are filled with a single comment line.
* You should complete each selector according to your liking.
*/

#views-filters div table{
background: none;
}

.view-label {
/* insert your css code for this element here */
}

.view-field {
/* insert your css code for this element here */
}
.view-field-uid {
/* insert your css code for this element here */
}
.view-data-uid {
/* insert your css code for this element here */
}
.view-field-value {
/* insert your css code for this element here */
}
.view-data-value {
/* insert your css code for this element here */
}
.view-field-profile-nombre-value {
/* insert your css code for this element here */
}
.view-data-profile-nombre-value {
/* insert your css code for this element here */
}
.view-field-users-uid {
/* insert your css code for this element here */
}
.view-data-users-uid {
/* insert your css code for this element here */
}

#tabla{
width: 500px;
}

.col1{
font: italic 12pt Arial;

color: #000000;
width: 100px;
float: left;

padding: 10px 5px 5px 5px;
}

.col2{
color: #000000;
width: 200px;
float: left;

}

.col3{
color: #000000;
width: 100px;
float: left;

}

.boton{
float: right;
}

.separador{
clear:both;
}

El template views-filters-vista.tpl.php

Anuncios