Drupal 7 Drupal将变量$rows输出视为字符串

Drupal 7 Drupal将变量$rows输出视为字符串,drupal-7,drupal-views,drupal-theming,theming,Drupal 7,Drupal Views,Drupal Theming,Theming,我已经为我的视图开发了一个自定义的.tpl.php文件,在过去它一直有效。突然,在使用MAMP处理我的Macbook时,Drupal决定$views->rows需要作为字符串类型而不是数组输出。我在网上和这里搜索了答案,但没有找到。我没有在template.php文件中为主题执行任何预处理或视图渲染挂钩。有人有什么想法或者以前见过吗 谢谢在浏览了视图模块代码之后,我找不到一个_renderhook,我要修改它以使$rows返回数组类型。我确实浏览了模块/views/theme/views-vie

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


谢谢

在浏览了视图模块代码之后,我找不到一个_renderhook,我要修改它以使$rows返回数组类型。我确实浏览了模块/views/theme/views-view.tpl.php

因此,我用views-view.tpl.php代码替换了我自己模板中的大部分代码,并用以前的版本替换了数据库,这样我就可以从头开始了。事实证明,问题在于我的模板文件没有输出公开的过滤器等,以及使用

打印$行

而不是使用$rows作为数组。似乎我使用的视图的任何版本都使用$rows变量作为字符串。因此,我在“重写结果”框中放入了一个%SPLIT%字符串,这样我就可以进行PHP预分割,将生成的数组输入到我的函数中以生成所需的内容,然后进行预替换以去除$rows中的%SPLIT%字符串。结果和我的一样


所以,底线看起来像视图中的未格式化字段现在将$rows作为字符串变量而不是数组输出

当我试图在满足条件的情况下以不同的方式对某一行进行主题设置时,我也发现了这一点。大多数事情都可以在Views UI中完成,但我不能像这样理解这个。我终于能够用template.php文件中的yourtheme_preprocess_views_view_unformatted(&$vars)来完成这项工作$在那里,行的行为似乎仍然像一个数组(尽管后来又变成了字符串)

functionyourtheme\u预处理\u视图\u未格式化(&$vars){
if($vars['view']->name==“name\u of\u view”){
$rows=$vars['rows'];
$newRows=array();
foreach($r行){
$test=strpos($r,“字符串查找”);
如果($测试){
$newRows[]=“
$r”;//如果满足条件,我需要输入一个分隔符。 } 否则{ $newRows[]=$r; } } $vars['rows']=$newRows;//因此新行数组将被发送。 } }
我的实际问题仅在测试的第一个实例中需要除法器,因此我也使用了计数器,但我认为上面的示例给出了想法

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.
  } 
}