Drupal 在未过滤的视图顶部添加静态文本

Drupal 在未过滤的视图顶部添加静态文本,drupal,drupal-views,Drupal,Drupal Views,我想在Drupal6.x中视图“2”的最顶端添加一个静态文本(某种解释/欢迎文本)。我希望此文本仅在未过滤视图时显示(即在初始加载页面时) 我的问题是,我唯一能让它部分工作的地方是视图公开表单——MYVIEW.tpl.php。问题是,当我将代码放在这个模板中时,我不知道视图是否经过过滤,因此文本会出现在每个页面上!我无法访问该模板中的此信息,因此唯一可用的位置($rows或$empty variables)是视图--MYVIEW.tpl.php 但我还有一个问题。变量输出的顺序与文件中出现的顺序

我想在Drupal6.x中视图“2”的最顶端添加一个静态文本(某种解释/欢迎文本)。我希望此文本仅在未过滤视图时显示(即在初始加载页面时)

我的问题是,我唯一能让它部分工作的地方是视图公开表单——MYVIEW.tpl.php。问题是,当我将代码放在这个模板中时,我不知道视图是否经过过滤,因此文本会出现在每个页面上!我无法访问该模板中的此信息,因此唯一可用的位置($rows或$empty variables)是视图--MYVIEW.tpl.php

但我还有一个问题。变量输出的顺序与文件中出现的顺序不同。例如,$exposed变量内容始终呈现在顶部,然后是$admin\u links、$header等等

 <?php if ($header): ?>
    <div class="view-header">
      <?php print $header; ?>
    </div>
  <?php endif; ?>

  <?php if (!$rows): ?>
  <h3>This static text appear AFTER $exposed !!!</h3>  
  <?php endif; ?>

  <?php if ($exposed): ?>
    <div class="view-filters">
      <?php print $exposed; ?>
    </div>
  <?php endif; ?>

  <?php if ($attachment_before): ?>
    <div class="attachment attachment-before">
      <?php print $attachment_before; ?>
    </div>
  <?php endif; ?>

此静态文本显示在$exposed之后!!!
因此,即使我将静态内容放在这段代码之前,过滤器表单也始终显示在顶部

我找到了这样做的原因:公开的筛选器表单作为内容top的一部分呈现,但不是结果(以及
$header
$footer
,等等)


这是设计的吗?我错过什么了吗?我怎样才能把我的静态文本放在最上面的内容上

在对主题系统中的预处理功能进行了一些调整和讲座之后,我找到了解决问题的方法。我与你分享,如果你找到一个更优雅的方法;让我知道

我所做的是

1) 在主题的template.php文件中,我添加了两个功能:

function YOURTHEME_preprocess_views_view__MYVIEW(&$variables) {
     if ($variables['rows'] || $variables['empty']) {
        $GLOBALS['dont_show_static_text'] = TRUE;
     }
 }

function YOURTHEME_preprocess_views_exposed_form__MYVIEW(&$variables) {
     if ($GLOBALS['dont_show_static_text']) {
        $variables['custom_flag1'] = TRUE;
     }
 }
因此,如果我的视图显示一些结果($row)或空白结果($empty),那么我将在模板文件中设置一个要使用的标志

2) 在my views-exposed-form--MYVIEW.tpl.php中

...
<?php if (!$custom_flag1): ?> 
  <h2>Some static text here</h2>
<?php endif; ?> 
...
。。。
这里有一些静态文本
...
瞧!我的静态文本仅在视图的初始加载时显示,并显示在过滤器顶部(而不是下方!)

希望这能帮助别人