web-dev-qa-db-fra.com

Comment masquer le titre sur un nœud spécifique?

Comment puis-je masquer le titre sur un nœud spécifique?

J'ai essayé les trois modules suivants, mais aucun d'entre eux ne fait ce que j'aimerais.

  1. Titre de la page

  2. Exclure le titre du nœud

  3. Automatique Node titres

J'ai ajouté field_hide_title au type de contenu de la page, le code dans la fonction hook_preprocess_node(). Cela ne peut pas fonctionner correctement.

screenshot

La valeur indiquée par print_r($vars['node']) est la suivante:

 Objet stdClass (
 [vid] => 4 
 [uid] => 1 
 [title] => search_material 
 [log] = > 
 [état] => 1 
 [commentaire] => 1 
 [promouvoir] => 0 
 [collant] => 0 
 [nid] => 4 
 [type] => page 
 [langue] => zh-hant 
 [créé] => 1339055801 
 [changé] = > 1339727555 
 [Tnid] => 0 
 [Traduire] => 0 
 [Revision_timestamp] => 1339727555 
 [Revision_uid] => 1 
 [corps] => Array (
 [und] => Array (
 [0] => Array (
 [valeur] => 
 [résumé] => 
 [format] => php_code 
) 
) 
) 
 [field_hide_title] => Tableau (
 [und ] => Tableau (
 [0] => Tableau ([valeur] => 1) 
) 
) 
 [Rdf_mapping] => Tableau (
 [rdftype] => Array ([0] => foaf: Document) 
 [title] => Array (
 [predicates] => Array ([0] => dc: Titre)
    )
 [créé] => Tableau (
 [prédicats] => Tableau (
 [0] => dc: date 
 [1] => dc: créé 
 ) 
 [type de données] => xsd: dateTime 
 [rappel] => date_iso8601 
) 
 [modifié] => Tableau (
 [prédicats) ] => Tableau ([0] => dc: modifié) 
 [Type de données] => xsd: dateTime 
 [Rappel] => date_iso8601 
) 
 [ body] => Array (
 [predicates] => Array ([0] => content: encoded) 
) 
 [uid] => Array (
 [prédicats] => Array ([0] => sioc: has_creator) 
 [type] => rel 
) 
 [name] => Array (
 [prédicats] => Tableau ([0] => foaf: nom) 
) 
 [comment_count] => Tableau (
 [prédicats] => Tableau ([0] = > sioc: num_replies) 
 [datatype] => xsd: integer 
) 
 [last_activity] => Array (
 [predicates] => Array ([0 ] => sioc: last_activity_date) 
 [da tatype] => xsd: dateTime 
 [callback] => date_iso8601 
) 
) 
 [cid] => 0 
 [last_comment_timestamp] = > 1339055801 
 [Last_comment_name] => 
 [Last_comment_uid] => 1 
 [Comment_count] => 0 
 [Name] => admin 
 [image] => 0 
 [données] => b: 0; 
 [entity_view_prepared] => 1 
) 

================================================== ========== MISE À JOUR:

mais j'ai trouvé une chose. avant de changer le titre en NULL, le titre a été affiché ...

print_r ($ vars) dans la fonction mytheme_preprocess_page:

[summary] => [format] => php_code))) [field_hide_title] => Array ([und] => Array ([0] => Array ([value] => 1))) [rdf_mapping] => Array ([rdftype] => Array ([0] => foaf: Document) [title] => Array ([predicates] => Array ([0] => dc: title)) [created] => Array ([predicates ] => Tableau ([0] => dc: date 1 => dc: créé) [type de données] => xsd: dateTime [rappel] => date_iso8601) [changé] => Tableau ([ prédicats] => Tableau ([0] => dc: modifié) [type de données] => xsd: dateTime [rappel] => date_iso8601) [body] => Tableau ([prédicats] => Tableau ([0] => contenu : encoded)) [uid] => Array ([predicates] => Array ([0] => sioc: has_creator) [type] => rel) [name] => Array ([predicates] => Array ([0] ] => foaf: name)) [comment_count] => Array ([predicates] => Array ([0] => sioc: num_replies) [datatype] => xsd: integer) [last_activity] => Array ([predicates] => Tableau ([0] => sioc: last_activity_date) [datatype] => xsd: dateTime [callback] => date_iso8601)) [cid] => 0 [last_comme nt_timestamp] => 1339039221 [last_comment_name] => [last_comment_uid] => 1 [comment_count] => 0 [name] => admin [picture] => 0 [data] => b: 0; [entity_view_prepared] => 1))

3
user6919

Vous pouvez créer un champ cck (case à cocher/booléen) qui agira comme un indicateur. Vous pouvez donc avoir une option dynamique si vous souhaitez masquer le nœud ou non.

Pseudo code:

Dans template.php

function yourtTheme_process_page(&$variables) {
  if($variables['node']->field_hide_title['und'][0]['value']) {
    $variables['title'] = NULL;
  }
}

N'essayez pas ce code mais je pense que cela fonctionnera.

EDIT: Ajout d'une capture d'écran d'un nouveau champ enter image description here

Cela devrait être la valeur de votre cck enter image description here

16
ninjascorner

Utilisez CSS.

Chaque nœud individuel aura une classe spécifique sur le <body> tag de la page, qui vous permettra de cibler votre nœud spécifique.

Par exemple, supposons que vous essayez de masquer le titre sur le nœud 69, il ressemblerait à ceci:

.page-node-69 .page-title { 
  display: none;
}

pour le noeud 150, cela ressemblerait à ceci:

.page-node-150 .page-title { 
  display: none;
}

Vous devrez peut-être l'ajuster en fonction de votre thème, et vous devrez peut-être cibler plus spécifiquement le titre de la page (c'est-à-dire h1.page-title) juste au cas où il y aurait plus de spécificité plus haut dans la cascade.

3
Chapabu

Je suppose que vous pourriez ajouter quelque chose comme ça dans votre template.php:

function YOURTHEME_preprocess_node(&$node) {
    // check if it's the node of interest
    if($node['title'] == 'your-specific-node-title') {
       // set the title to NULL so nothing is rendered
       $node['title'] = NULL; 
    }
}

Comme chapab l'a suggéré, il pourrait être préférable de vérifier le nid du nœud au lieu du titre:

if($node['nid'] == 'your-node-nid') {
   ...
}
2
Cyclonecode

Le CSS sur le titre est une classe de titre et un ID de titre de page, donc mon CSS doit être

.page-node-69 #page.title {
   display: none; 
}

pour que cela fonctionne.

0
pixelshrink