我已经为我的视图开发了一个自定义的 .tpl.php 文件,并且在过去它已经工作了。突然,在使用 MAMP 处理我的 Macbook 时,Drupal 决定 $views->rows 需要作为字符串类型而不是数组输出。我在网上和这里搜索过答案,但找不到。我没有在我的 template.php 文件中为主题做任何预处理或 views_render 钩子。有没有人有任何想法或以前看过这个?
谢谢
我已经为我的视图开发了一个自定义的 .tpl.php 文件,并且在过去它已经工作了。突然,在使用 MAMP 处理我的 Macbook 时,Drupal 决定 $views->rows 需要作为字符串类型而不是数组输出。我在网上和这里搜索过答案,但找不到。我没有在我的 template.php 文件中为主题做任何预处理或 views_render 钩子。有没有人有任何想法或以前看过这个?
谢谢
浏览完 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 输出为字符串变量而不是数组。
如果满足条件,我在尝试以不同的方式为某一行设置主题时也发现了这一点。大多数事情都可以在 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.
}
}
我的实际问题只在测试的第一个实例中需要除法器,所以我也使用了一个计数器,但我认为上面的例子给出了这个想法。