【问题标题】:Drupal Views variable $rows outputs as a StringDrupal Views 变量 $rows 输出为字符串
【发布时间】:2013-01-24 21:05:47
【问题描述】:

我已经为我的视图开发了一个自定义的 .tpl.php 文件,并且在过去它已经工作了。突然,在使用 MAMP 处理我的 Macbook 时,Drupal 决定 $views->rows 需要作为字符串类型而不是数组输出。我在网上和这里搜索过答案,但找不到。我没有在我的 template.php 文件中为主题做任何预处理或 views_render 钩子。有没有人有任何想法或以前看过这个?

谢谢

【问题讨论】:

    标签: drupal-7 drupal-views drupal-theming theming


    【解决方案1】:

    浏览完 Views 模块代码后,我找不到一个 _render 钩子,我可以修改它以使 $rows 返回到 Array 类型。我确实浏览了 modules/views/theme/views-view.tpl.php

    所以我用 views-view.tpl.php 代码替换了我自己模板中的大部分代码,并用以前的版本替换了数据库,这样我就可以完全重新开始了。原来问题在于我的模板文件没有输出暴露的过滤器等,以及使用

    的视图

    打印 $rows

    而不是使用 $rows 作为数组。似乎我使用的任何版本的视图都使用 $rows 变量作为字符串。所以我在 Rewrite Results 框中放入了一个 %SPLIT% 字符串,这样我就可以做一个 PHP preg_split,将结果数组输入我的函数以生成我需要的东西,然后做一个 preg_replace 来摆脱 %SPLIT% $rows 中的字符串。结果看起来和我的一样。

    因此,最重要的是,视图中的未格式化字段现在将 $rows 输出为字符串变量而不是数组。

    【讨论】:

      【解决方案2】:

      如果满足某个条件,我在尝试以不同的方式为某一行设置主题时也发现了这一点。大多数事情都可以在 Views UI 中完成,但我无法弄清楚这一点。我终于能够在我的 template.php 文件中使用 yourtheme_preprocess_views_view_unformatted(&$vars) 来做到这一点。 $rows 在那里的行为似乎仍然像一个数组(尽管它后来又变成了一个字符串)。

      function yourtheme_preprocess_views_view_unformatted(&$vars) {
      
        if ($vars['view']->name == "name_of_view") {
      
          $rows = $vars['rows'];
      
          $newRows = array();
      
          foreach ($rows as $r) {
      
            $test = strpos($r, "string_i_looked_for");
      
              if ($test) {
                $newRows[] = "<hr>$r"; // I needed to put in a divider if the condition was met.
              }
      
              else {
                $newRows[] = $r;
              }
           }
        $vars['rows'] = $newRows; // So that the array of new rows is what will be sent along.
        } 
      }
      

      我的实际问题只在测试的第一个实例中需要除法器,所以我也使用了一个计数器,但我认为上面的示例给出了这个想法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 2020-11-05
        • 2019-01-20
        • 1970-01-01
        相关资源
        最近更新 更多