我想在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
,等)。
这是设计的吗?我错过了什么吗?如何将我的静态文本放在内容顶部的顶部!?
答案 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上(不在!下)。
希望这有助于其他人!