Comment faire pour masquer le champ de preprocess_node dans Drupal 7
J'ai des problème simple. J'ai un champ dans mon type de contenu (image d'en-tête) qui doivent être imprimés dans page.tpl.php
(en raison de la mise en page).
Il fonctionne très bien, j'ai mis un peu de code dans theme_preprocess_page()
fonction pour afficher le champ dans page.tpl.php
function theme_preprocess_page( &$variables, $hook )
{
$node = menu_get_object();
if( $node && $node->type == 'page' )
{
$view = node_view($node);
$variables['headerimage'] = render($view['field_headerimage']);
}
}
Maintenant, je vais avoir des problème de cache que field_headerimage de vue nœud. Il ne peut être cachée à partir de l'interface utilisateur d'administration (types de contenu -> gérer l'affichage) parce que si je le cacher à partir de là, il ne sera pas disponible dans theme_preprocess_page()
.
J'ai donc essayer de masquer ce champ à partir preprocess_node
function theme_preprocess_node( &$variables, $hook )
{
if( $variables['page'] )
{
hide($variables['field_headerimage']);
unset($variables['field_headerimage']);
$variables['field_headerimage'] = NULL;
}
}
J'ai ajouté à chaque ligne de code que j'ai essayé en supprimant l'affichage. Ce que je fais mal? Ou: Comment masquer le champ de theme_preprocess_node()
OriginalL'auteur Jasmo | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Dans
hook_preprocess_node()
le contenu a déjà été construit pour le nœud de l'objet et de l'objet de dumping sur lecontent
tableau; c'est le tableau qui seront convertis en$content
dans le fichier de modèle, et celui dont vous avez besoin pour supprimer le champ d'affichage de:Qui devrait se débarrasser de lui, pas de problème.
Par souci d'exhaustivité, vous pourriez aussi le faire facilement dans la node.tpl.php fichier:
Ou dans
hook_node_view()
dans un module personnalisé:OriginalL'auteur Clive