Ne pas afficher les titres des noeuds -> solution correcte?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je pense que je risque de poser une question qui revient souvent, mais malgré mes recherches (peut être mal faites..) je n'ai pas déniché l'infos qu'il me fallait.

Mon problème : Je voudrais que le titre des Nodes ne soit pas affiché, afin que les rédacteurs écrives le titre qu'ils veulent dans le contenu.

J'ai apporté cette modification au fichier template.tpl :

fonction preprocess_page...{

$vars['title'] = 0;

}

Est-ce la solution la plus judicieuse?

Merci d'avance,

Azerla

Version de Drupal : 
Tags : 

Bonjour

pour ce qui est du code, je ne m'y connais pas suffisamment pour te répondre.

Par contre, il existe d'autres solutions:

  • un simple masquage du titre par un display: none;
    dans le css

  • le module Automatic Nodetitles http://drupal.org/project/auto_nodetitle peut t'être utile.
    Tu crées un autre champ titre (à priori, c'est déjà fait) et tu génères le titre du node à partir du contenu du champ titre. Le module token doit aussi être installé.
    Et pour compléter, avec Pathauto, tu peux reporter le titre dans l'url

Le marquage CSS j'ai tenté :

.main-inner h1{
display : none;
}

Et ce déjà avant d'avoir été mettre ma ligne de code dans template.tpl.. Cela retire tout les h1 et donc même si ca marche, n'est pas efficace.

Un module c'est consommateur de ressource, est-ce que mon idée n'est pas alors plus efficace?

Est-ce que ma solution peut avoir des conséquences du genre bug ou autre?

La conséquence à un niveau utilisateur c'est qu'en retirant ton h1 dans le code, tu pète la structure sémantique de ta page. Ton référencement en pâtira, même si le titre de la page est défini dans le header. Et si tu enlève le titre du type de contenu, il n'y aura même plus de titre <title> dans les balises d'en-tête.

Utilise plutôt un display:none sur h1.title (Ce qui cache uniquement les titres de page).

Pourquoi les éditeurs ne peuvent-être ils pas mettre de titre dans le champ titre dédié ?

Pour ce qui est du module, si sa principale fonctionnalité, à savoir attribuer automatiquement un titre ne t'intéresse pas, effectivement, il n'est pas utile de l'installer.

Concernant le CSS, il faut affiner pour cibler uniquement les balises qui t'intéressent. Du style:

.page-node .main h1.title {
  display: none;
}

et peut-être encore plus précisément si ça ne concerne que certains types de nodes

L'idée du preprocess est bonne, elle a pour avantage que le titre ne sera jamais passé, et donc jamais visible, même si le css ne fonctionne pas correctement ou est désactivé par l'utilisateur.
Concernant le code lui-même, je ne suis pas spécialiste, si ça fonctionne, il ne devrait pas y avoir de problème. Mais je ne sais pas s'il y a une méthode plus propre au sens drupal.

Drupal possède une classe CSS .element-invisible que vous devriez utiliser. Cette classe rend invisible votre contenu mais en le gardant visible pour les screen reader, ce qui est important en terme d’accessibilité. display: none n'est pas recommandé pour cet usage.

Tous dépend de l'objectif :
Ce que je ne suis pas c'est la phrase
"Mon problème : Je voudrais que le titre des Nodes ne soit pas affiché, afin que les rédacteurs écrives le titre qu’ils veulent dans le contenu." pourquoi les désafficher si c'est pour les rédiger juste après?
Enfin bon... Les soltuions sont :
-#access / #disabled dans le cadre d'un form_alter
-utiliser le hook_node_view dans le cadre de l'affichage (peut être restreint par display)
-utiliser le theme_preprocess_page si on veut faire des modifications propres à un themes
-utiliser le module_preprocess_page si on veut le faire pour tous thème.
-utiliser le node.tpl.php
-utiliser drupal_set_title si on veut modifier l'ensemble des titre (y compris meta) de la page (par exemple dans un hook_init).
-faire du css si on ne sait pas comment faire les choses citées plus haut (drupal a toujours 1 millions de classes, suffisantes pour être spécifiques pour chaque page/type de node/ type d'entité ...)