Drupal 7 Drupal:D7重写视图返回的值

Drupal 7 Drupal:D7重写视图返回的值,drupal-7,drupal-views,drupal-hooks,Drupal 7,Drupal Views,Drupal Hooks,我需要对内容执行索引搜索,搜索结果中必须包含两个标记。标签必须是随机选择的。平台是Drupal7.12 我创建了一个视图,通过search\u api管理SOLR搜索的结果。该视图返回所需的内容,并且似乎按预期工作。我已经包含了两个Global:自定义文本字段作为标记条目的占位符 我现在正在寻找一种解决方案来管理随机标记值的需求。随机性不是问题,问题是如何将随机值包含到视图结果中 我目前的方法是编写一个views\u pre\u render钩子来截取显示为字段的占位符([nothing]和[n

我需要对内容执行索引搜索,搜索结果中必须包含两个标记。标签必须是随机选择的。平台是Drupal7.12

我创建了一个视图,通过
search\u api
管理SOLR搜索的结果。该视图返回所需的内容,并且似乎按预期工作。我已经包含了两个
Global:
自定义文本字段作为标记条目的占位符

我现在正在寻找一种解决方案来管理随机标记值的需求。随机性不是问题,问题是如何将随机值包含到视图结果中

我目前的方法是编写一个
views\u pre\u render
钩子来截取显示为字段的占位符(
[nothing]
[nothing\u 1]
)。测试代码如下所示

function MODULE_views_pre_render( &$view )
{
    $view_display = $view->display['default'];
    $display_option = $view_display->display_options;
    $fields = $display_option['fields'];
    foreach( $view->result as $result )
    {
        $fields['nothing']['alter']['text'] = sprintf("test %d", rand(1,9));
    }
}
渲染视图时,我当前未看到占位符中的任何更改


我们将非常感谢您提供的任何方法、替代解决方案等建议,因为这将占用大量宝贵的时间。从钩子中调用
print\r($view)
会将超过46M的数据转储到一个日志文件中,结果集为2项。

对于您的任务,有两种可能的解决方案

第一种方法是在模板级别执行所有操作。为要随机化的视图字段定义模板。在显示器的高级设置中,转到主题:信息。确保选择了正确的主题,并找到您所在领域的模板建议。它们从最一般到最具体列出,你可以选择更适合你的。 我想对您的字段最具体的模板建议是这样的:视图字段--[YOR view NAME]--[your DISPLAY NAME]--nothing.tpl.php。在theme templates目录中创建具有该名称的文件,在该模板中,您可以根据需要呈现任何内容

默认情况下,此模板只有一行:

  print $output;
您可以将此更改为:

  print sprintf("test %d", rand(1,9));
或其他任何事情,无论如何:)


第二种方法是使用模块。有了这个模块,您可以添加一个定制的PHP字段,在其中您可以做任何您想做的事情。尽管该模块尚未发布,但它似乎在大多数任务中都能很好地工作,而且对于随机数字这样的简单任务,它肯定能工作

我在寻找另一个问题时偶然发现了这一点,并认为我会有所贡献


与添加另一个模块或修改模板不同,只需添加一个视图“排序条件”,即“全局:随机”

荣誉。。。这岩石和简单的太!另外,刷新缓存使解决方案本身封装得非常简单。现在我将添加主要功能。最近重新访问了解决方案,现在使用了Views_PHP模块(如上所述)并调用了一个模块函数,因此在视图定义中而不是在表示层中维护了逻辑。再次感谢你的领导。