Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

Modificando campo Global de una view

Estas en el tema de Modificando campo Global de una view en el foro de Drupal en Foros del Web. Buena intento cambiar un campo por código, mediante el hook: hook_views_pre_render() , el problema es que si hago dsm($result) veo todos los campos (ver imagen), ...
  #1 (permalink)  
Antiguo 08/11/2014, 05:02
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Modificando campo Global de una view

Buena intento cambiar un campo por código, mediante el hook: hook_views_pre_render() , el problema es que si hago dsm($result) veo todos los campos (ver imagen), menos el campo "nothing" que representa al campo "global:text", ¿dónde puedo modificar la salida de este campo custom?.




Gracias
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 08/11/2014, 05:27
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Modificando campo Global de una view

Bueno me respondo a mi mismo, he logrado hacer lo que quería, pero tuve que tirar de una función de theming, he sobrescrito la salida del campo "nothing" de la siguiente forma:


Código:
/**
Código:
 * Implements hook_views_pre_render().
* Esto en el módulo.
 */
function MyModule_user_views_pre_render(&$view) {


  if ($view->name == 'employers') {
    $results = &$view->result;
    foreach ($results as $key => $result) {

  
      $interval = REQUEST_TIME - variable_get('user_block_seconds_online', 1200);

      $items = db_query_range('SELECT u.uid, u.name, MAX(s.timestamp) AS max_timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE u.uid=:uid AND s.timestamp >= :interval AND s.uid > 0 GROUP BY u.uid, u.name ORDER BY max_timestamp DESC', 0, 1, array(':uid' => $result->uid, ':interval' => $interval))->fetchAll();

// NECESITO ELIMINAR ENLACE DE ESTE  CAMPO.
      if (empty($items)) {
         $result->uid = FALSE;
      } 
    }
  }
}
/* * Y esto en el template.php de l theme * function MyTheme_preprocess_views_view_fields(&$vars) { // var_dump($vars['fields']['uid']->content); $view = $vars['view']; if ($view->name != 'employers' /*&& $view->current_display != 'mymod_display'*/) { return; } foreach ($view->field as $id => $field) { if ($vars['fields']['uid']->content){ $vars['fields']['nothing']->content = 'Online'; } } }
Sigo sin estar contento del todo, porque me hubiera gustado hacer esto desde mi módulo, pero por ahora me conformo así.
__________________
Videotutoriales de Drupal

Etiquetas: views
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.