added classes to links generated by views
This commit is contained in:
		@@ -61,4 +61,47 @@ function popsu_preprocess_views_view_unformatted(&$variables) {
 | 
			
		||||
 */
 | 
			
		||||
// function popsu_preprocess_block(&$variables) {
 | 
			
		||||
//   $t="t";
 | 
			
		||||
// }
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
function popsu_preprocess_views_view_field(&$variables){
 | 
			
		||||
  // check if link to entoty option is true
 | 
			
		||||
  $settings = $variables['field']->options['settings']; 
 | 
			
		||||
  if ($settings['link_to_entity']) {
 | 
			
		||||
    // get the entity and build the classes
 | 
			
		||||
    $entity = $variables['row']->_entity;
 | 
			
		||||
    // build new classes
 | 
			
		||||
    $new_classes = array(
 | 
			
		||||
      $entity->getEntityTypeId(),
 | 
			
		||||
      $entity->getEntityTypeId().'-'.$entity->bundle(),
 | 
			
		||||
      $entity->getEntityTypeId().'-'.$entity->bundle().'-'.$entity->id()
 | 
			
		||||
    );
 | 
			
		||||
    
 | 
			
		||||
    // get the entity link and url
 | 
			
		||||
    $link = $entity->toLink(); 
 | 
			
		||||
    $url = $entity->toLink()->getUrl();
 | 
			
		||||
 | 
			
		||||
    // set the active_class option to the url
 | 
			
		||||
    $url->setOption('set_active_class', true);
 | 
			
		||||
 | 
			
		||||
    // add new classes to the url (without overwriting existing once)
 | 
			
		||||
    $options = $url->getOptions();
 | 
			
		||||
    if($attributes = $options['attributes']){
 | 
			
		||||
      if($classes = $attributes['class']){
 | 
			
		||||
        $attributes['class'] +=  $new_classes;
 | 
			
		||||
      }else{
 | 
			
		||||
        $attributes['class'] = $new_classes;
 | 
			
		||||
      }
 | 
			
		||||
    }else{
 | 
			
		||||
      $attributes = array(
 | 
			
		||||
        "class" => $new_classes
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
    $url->setOption('attributes', $attributes);
 | 
			
		||||
 | 
			
		||||
    // update the url of the link
 | 
			
		||||
    $link->setUrl($url);
 | 
			
		||||
 | 
			
		||||
    // overwrite the output
 | 
			
		||||
    $variables['output'] = $link->toRenderable();
 | 
			
		||||
  } 
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,23 @@
 | 
			
		||||
{#
 | 
			
		||||
/**
 | 
			
		||||
 * @file
 | 
			
		||||
 * Default theme implementation for a single field in a view.
 | 
			
		||||
 *
 | 
			
		||||
 * Available variables:
 | 
			
		||||
 * - view: The view that the field belongs to.
 | 
			
		||||
 * - field: The field handler that can process the input.
 | 
			
		||||
 * - row: The raw result of the database query that generated this field.
 | 
			
		||||
 * - output: The processed output that will normally be used.
 | 
			
		||||
 *
 | 
			
		||||
 * When fetching output from the row this construct should be used:
 | 
			
		||||
 * data = row[field.field_alias]
 | 
			
		||||
 *
 | 
			
		||||
 * The above will guarantee that you'll always get the correct data, regardless
 | 
			
		||||
 * of any changes in the aliasing that might happen if the view is modified.
 | 
			
		||||
 *
 | 
			
		||||
 * @see template_preprocess_views_view_field()
 | 
			
		||||
 *
 | 
			
		||||
 * @ingroup themeable
 | 
			
		||||
 */
 | 
			
		||||
#}
 | 
			
		||||
{{ output -}}
 | 
			
		||||
		Reference in New Issue
	
	Block a user