Drupal 7 Views 自定义视图模板字段

Posted

技术标签:

【中文标题】Drupal 7 Views 自定义视图模板字段【英文标题】:Drupal 7 Views custom view template fields 【发布时间】:2014-03-17 09:27:17 【问题描述】:

我已经成功地为我的 Drupal 7 站点创建了一个自定义视图模板,但是在为输出的内容添加属性时遇到了问题。我到处寻找答案,但无济于事。

我有一个视图叫做:views-view-fields--homepage-articles.tpl.php

我正在打印如下内容:

$fields['title']->content

这很好,可以预期,并且输出:

<a href="link-to-page">Title</a>

但我想给它添加类 - 怎么做?我想我需要写一个钩子,但我在任何地方都找不到这个文档。目前我的解决方案是字符串替换:

<?php print str_replace('<a ', '<a class="brand-blue uppercase nodecoration"', $fields['title']->content); ?>

您可以想象,这不是令人满意的或长期的解决方案。

非常感谢!

【问题讨论】:

【参考方案1】:

您应该能够使用 template_preprocess_views_view_fields() 将类添加到字段中。

编辑:无法按照我的想法进行操作,但您可以像这样覆盖该字段的输出:

function MY_THEME_preprocess_views_view_fields(&$vars) 
  $view = $vars['view'];
  if ($view->name == 'node_listing') 
    foreach ($vars['fields'] as $id => $field) 
      if ($id == 'title') 
        $field_output = l($view->result[$view->row_index]->node_title, 'node/'. $view->result[$view->row_index]->nid, array('attributes' => array('class' => 'brand-blue uppercase nodecoration')));

        $vars['fields'][$id]->content = $field_output;
      
    
  

【讨论】:

谢谢,您能否提供一个简洁的示例,因为大部分代码对我来说没有多大意义。其中很多似乎与我的需求无关。 无法按照我预期的方式进行操作,但我已经给出了一个示例,说明如何通过覆盖视图样式插件的默认输出来做到这一点。 这行得通,谢谢。我现在唯一担心的是,实现我想要的东西有点小题大做。唔。再次感谢! James - 你知道我如何使用这种方法访问图像的路径吗?现在大部分时间都在为此苦苦挣扎。谢谢。 在 foreach 语句中,您将在 $view-&gt;result[$view-&gt;row_index] 中拥有完整的图像字段,您可以在其中找到可以传递给 theme_image()theme_image_style() 的图像 uri。【参考方案2】:

您是否尝试过使用语义视图? https://drupal.org/project/semanticviews - 这样您就可以覆盖 UI 中的类而不是模板文件,可能更适合您的需求。

【讨论】:

我没有 - D7 稳定吗?此外,在这种情况下,我更喜欢使用实际的模板文件——它不是一个大型站点,我希望对标记有更多的控制。谢谢! 刚刚试过这个,我认为 Views 3 已经使它在很大程度上变得多余了,并且没有提供我需要的灵活性。

以上是关于Drupal 7 Views 自定义视图模板字段的主要内容,如果未能解决你的问题,请参考以下文章

自定义模板中的Drupal 7自定义表单

Drupal 7 views_embed_view node.tpl.php 字段

Drupal 视图中的自定义排序

如何在 Drupal 7 视图中使用当前用户作为相关字段?

Drupal 7:视图 3:仅显示当前用户的个人资料信息

drupal 7 使用模块视图自定义行样式