【问题标题】:Drupal 7 Views custom view template fieldsDrupal 7 Views 自定义视图模板字段
【发布时间】: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); ?>

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

非常感谢!

【问题讨论】:

    标签: drupal views


    【解决方案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 已经使它在很大程度上变得多余了,并且没有提供我需要的灵活性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多