1.20.x views.theme.inc | template_preprocess_views_view_fields(&$variables) |
Preprocess theme function to print a single record from a row, with fields
File
- modules/
views/ templates/ views.theme.inc, line 167 - Preprocessors and helper functions to make theme development easier.
Code
function template_preprocess_views_view_fields(&$variables) {
$view = $variables['view'];
// Loop through the fields for this view.
$previous_inline = FALSE;
$variables['fields'] = array(); // ensure it's at least an empty array.
foreach ($view->field as $id => $field) {
// render this even if set to exclude so it can be used elsewhere.
$field_output = $view->style_plugin->get_field($view->row_index, $id);
$empty = $field->is_value_empty($field_output, $field->options['empty_zero']);
if (empty($field->options['exclude']) && (!$empty || (empty($field->options['hide_empty']) && empty($variables['options']['hide_empty'])))) {
$object = new stdClass();
$object->handler = &$view->field[$id];
$object->inline = !empty($variables['options']['inline'][$id]);
$object->element_type = $object->handler->element_type(TRUE, !$variables['options']['default_field_elements'], $object->inline);
if ($object->element_type) {
$class = '';
if ($object->handler->options['element_default_classes']) {
$class = 'field-content';
}
if ($classes = $object->handler->element_classes($view->row_index)) {
if ($class) {
$class .= ' ';
}
$class .= $classes;
}
$pre = '<' . $object->element_type;
if ($class) {
$pre .= ' class="' . $class . '"';
}
$field_output = $pre . '>' . $field_output . '</' . $object->element_type . '>';
}
// Protect ourself somewhat for backward compatibility. This will prevent
// old templates from producing invalid HTML when no element type is selected.
if (empty($object->element_type)) {
$object->element_type = 'span';
}
$object->content = $field_output;
if (isset($view->field[$id]->field_alias) && isset($variables['row']->{$view->field[$id]->field_alias})) {
$object->raw = $variables['row']->{$view->field[$id]->field_alias};
}
else {
$object->raw = NULL; // make sure it exists to reduce NOTICE
}
if (!empty($variables['options']['separator']) && $previous_inline && $object->inline && $object->content) {
$object->separator = filter_xss_admin($variables['options']['separator']);
}
$object->class = backdrop_clean_css_identifier($id);
$previous_inline = $object->inline;
$object->inline_html = $object->handler->element_wrapper_type(TRUE, TRUE);
if ($object->inline_html === '' && $variables['options']['default_field_elements']) {
$object->inline_html = $object->inline ? 'span' : 'div';
}
// Set up the wrapper HTML.
$object->wrapper_prefix = '';
$object->wrapper_suffix = '';
if ($object->inline_html) {
$class = '';
if ($object->handler->options['element_default_classes']) {
$class = "views-field views-field-" . $object->class;
}
if ($classes = $object->handler->element_wrapper_classes($view->row_index)) {
if ($class) {
$class .= ' ';
}
$class .= $classes;
}
$object->wrapper_prefix = '<' . $object->inline_html;
if ($class) {
$object->wrapper_prefix .= ' class="' . $class . '"';
}
$object->wrapper_prefix .= '>';
$object->wrapper_suffix = '</' . $object->inline_html . '>';
}
// Set up the label for the value and the HTML to make it easier
// on the template.
$object->label = check_plain($view->field[$id]->label());
$object->label_html = '';
if ($object->label) {
$object->label_html .= $object->label;
if ($object->handler->options['element_label_colon']) {
$object->label_html .= ': ';
}
$object->element_label_type = $object->handler->element_label_type(TRUE, !$variables['options']['default_field_elements']);
if ($object->element_label_type) {
$class = '';
if ($object->handler->options['element_default_classes']) {
$class = 'views-label views-label-' . $object->class;
}
$element_label_class = $object->handler->element_label_classes($view->row_index);
if ($element_label_class) {
if ($class) {
$class .= ' ';
}
$class .= $element_label_class;
}
$pre = '<' . $object->element_label_type;
if ($class) {
$pre .= ' class="' . $class . '"';
}
$pre .= '>';
$object->label_html = $pre . $object->label_html . '</' . $object->element_label_type . '>';
}
}
$variables['fields'][$id] = $object;
}
}
}