2010-10-30 5 views
0

Je souhaite ajouter un texte statique (une sorte d'explication/texte de bienvenue) tout en haut d'une vue (sur le filtre) dans Drupal 6.x avec Vues "2". Je veux que ce texte apparaisse uniquement lorsque la vue n'est pas filtrée (c'est-à-dire lors du chargement initial de la page).Ajout d'un texte statique en haut de la vue lorsqu'il n'est pas filtré

Mon problème est que le seul endroit où je trouve pour le faire fonctionner partiellement est dans le views-exposed-form - MYVIEW.tpl.php. Le problème est que lorsque je place le code dans ce modèle, je ne sais pas si la vue est filtrée ou non, donc le texte apparaît sur chaque page! Je n'ai pas accès à cette information dans ce modèle donc le seul endroit où cela est disponible ($ rows ou $ variables vides par exemple) est dans views-view - MYVIEW.tpl.php.

Mais là j'ai un autre problème. L'ordre dans lequel il apparaît que les variables sont sorties ne sont pas les mêmes que l'ordre dans lequel elles sont apparues dans le fichier. Par exemple, le contenu de la variable $ exposée est toujours affiché en haut, puis $ admin_links, $ header et ainsi de suite. Donc, même si je place mon contenu statique avant ce code, le formulaire de filtrage apparaît toujours en haut de la page!

Je trouve la raison pour laquelle est en train de faire ceci: la forme de filtre exposé est rendu comme une partie du contenu haut <div></div>, mais pas le résultat (et $header, $footer, etc.).

Est-ce ainsi par conception? Est-ce que je manque quelque chose? Comment puis-je obtenir mon texte statique sur le dessus du contenu haut !?

Répondre

0

Eh bien, après quelques ajustements et conférences sur la fonction de pré-traitement dans le système de thème, j'ai trouvé une solution à mon problème. Je le partage avec vous et si vous trouvez une approche plus elegante; faites le moi savoir!

Ce que je fait est ce ...

1) Dans le fichier template.php du thème, j'ajouter deux fonctions:

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; 
    } 
} 

Donc, si mon point de vue montre des résultats ($ row) ou un résultat blanc ($ vide), je mis un drapeau pour être utilisé dans le fichier de modèle ....

2) dans mon point de vue-forme exposée - MYVIEW.tpl.php

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

Et voilà! Mon texte statique n'apparaît que sur le chargement initial de la vue et il s'affiche en haut du filtre (pas sous!).

Espérons que cela aide quelqu'un d'autre!