在未过滤时,在视图顶部添加静态文本

时间:2010-10-30 21:47:56

标签: drupal drupal-views

我想在Drupal 6.x的视图(通过过滤器)的顶部添加一个静态文本(某种解释/欢迎文本),其中包含视图“2”。我希望此文本仅在未过滤视图时(即在页面的初始加载时)出现。

我的问题是,我唯一能让它部分发挥作用的地方是 views-exposed-form - MYVIEW.tpl.php 。问题是,当我将代码放在此模板中时,我不知道视图是否被过滤,因此文本出现在每个页面上!我无权访问该模板中的此信息,因此唯一可用的地方(例如$ rows或$ empty变量)位于 views-view - MYVIEW.tpl.php 中。

但是我遇到了另一个问题。输出变量输出的女巫的顺序与他们出现在文件中的顺序不一样。例如,$ exposed变量内容总是在顶部呈现,然后是$ admin_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; ?>

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

我找到了这样做的原因:公开的过滤器表单呈现为内容顶部<div></div>的一部分,但不是结果(和$header$footer,等)。

这是设计的吗?我错过了什么吗?如何将我的静态文本放在内容顶部的顶部!?

1 个答案:

答案 0 :(得分:0)

好吧,经过一些关于主题系统中预处理功能的调整和讲座,我找到了解决问题的方法。我与你分享,如果你找到更优雅的方法;让我知道!

我做的是这个...

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)在我的views-exposed-form中 - MYVIEW.tpl.php

...
<?php if (!$custom_flag1): ?> 
  <h2>Some static text here</h2>
<?php endif; ?> 
...

瞧!我的静态文本仅显示在视图的初始加载上,并显示在过滤器的TOP上(不在!下)。

希望这有助于其他人!