Добавление статического текста в верхней части представления, когда он не фильтруется - PullRequest
0 голосов
/ 31 октября 2010

Я хочу добавить статический текст (своего рода текст объяснения / приветствия) в самый верх представления (над фильтром) в Drupal 6.x с представлениями «2». Я хочу, чтобы этот текст появлялся только тогда, когда представление не фильтруется (т.е. при начальной загрузке страницы).

Моя проблема в том, что единственное место, которое я выяснил, чтобы заставить его работать частично, - это views -cted-form - MYVIEW.tpl.php . Проблема в том, что когда я размещаю код в этом шаблоне, я не знаю, отфильтровано ли представление, поэтому текст появляется на каждой странице! У меня нет доступа к этой информации в этом шаблоне, поэтому единственное место, где это доступно (например, $ row или $ empty variable), находится в views-view - MYVIEW.tpl.php

Но там у меня другая проблема. Порядок, в котором выводятся переменные, не совпадает с порядком, в котором они появились в файле. Например, содержимое переменной $ visible отображается всегда сверху, затем $ 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 голосов
/ 01 ноября 2010

Что ж, после некоторой настройки и лекции по функции предварительной обработки в системе тем, я нашел решение своей проблемы.Я делюсь этим с вами, и если вы найдете более элегантный подход;дайте мне знать!

Что я сделал, это ...

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) В моих представленияхоткрытая форма - MYVIEW.tpl.php

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

И вуаля!Мой статический текст отображается только при начальной загрузке представления и отображается в ТОП фильтра (не под!).

Надеюсь, это поможет кому-то еще!

...