This one is subtle. The option to hide the node title.

Events happening in the community are now at Drupal community events on www.drupal.org.
barobba's picture

Making the node title hidden, by having an option in the node edit form. I think this is pretty important. I use this in Google Sites all the time, but haven't found a module for this in Drupal, yet. The title still needs to be accessible for other modules, forms, UI elements, and SEO that use a title.

It would be a very simple module that would hide the title via a stylesheet. However, it lets the author decide whether or not the title should be visible. This way, you still have to set the title, but it can be optionally displayed on the page.

It would also be important to have this option turned on/off when configuring the content type.

Comments

Instead of inserting a

barobba's picture

Instead of inserting a stylesheet, an alternative would be to add this variable to the node object. That way the theme layer can decide what to do with it.

And why when configuring the content type?

mahnster's picture

And why do this when configuring the content type? This sounds like a theming option, and other things like whether or not to show author & date are in the theme configuration page. Not possible to put it there with those very same/similar options?

If the "title status" is set

barobba's picture

If the "title status" is set at the content type level, then it might be better to place this option in the theme configuration page. Instead, what I am thinking about is a node-level option, such as $node->title_status, but you might want to choose which content types have this option set. Hmmm...maybe turning this feature on should be a permission, such as "set title status for story content".

automatic node titles?

That's a good question. I expected it, too :)

barobba's picture

Automatic Nodetitles assists the author in choosing a title (in the "form"). After a title is chosen, the author might also want to choose whether or not the title is displayed. Automatic Nodetitles wouldn't work for this, because the title would still be visible when the node is displayed. Also, this would not be something that could be handled from the theme layer alone because the "title_status" is decided on a per node basis.

The solution would be a module that incorporates "hook_perm", "hook_nodeapi", and "hook_form_alter". The result would be a "title_status" variable in the node, and the themer could then decide what to do with the "title_status" meta data. The title could still be displayed in content listings, etc., so this is not removing the titles. Instead, it would be adding additional metadata for the themer.

There are other (more elaborate) methods that could be employed such as identifying the "title_status" from the context, but sometimes a simple node-level checkbox might be sufficient.

I think that this should go

pcambra's picture

I think that this should go to the Node Display suite, someone proposed a while ago but has been rejected: http://drupal.org/node/742238

I think this would be different, because...

barobba's picture

I think this would be different, because the "Node Displays" module allows admins to create multiple build modes per "node type". The proposal you refer to (node/742238), is about theming the "node type" per build mode.

But, how can authors do this on a per-node level? For example, I am going to create a 10 nodes of type "design_something", and 5 of those nodes I would like the title to be hidden.

...Something similar would be if the author could choose the "node theme" for each new node created. Is there a module for that?

I think I have solution.

barobba's picture

Since CCK is used for Node content + metadata, a simple CCK checkbox would be enough. Then, the themer could use that information to decide whether or not to display the title. There are so many ways to do something in Drupal, sometimes the easy solution gets missed!

Richmahn, Greggles, and Pcambra, thank you for your help.

I'm not 100% sure of the

WebNewCastle's picture

I'm not 100% sure of the direction of the module given some recent thoughts/conversations, but you can do this with http://drupal.org/project/custom_node_template. All that is needed is to have two versions of the node template (with and without the title printed). If your theme prints the title in the page template, then you can have two page templates. Choosing a "No Title" node template will auto-suggest the corresponding Page Template. You can also try the module referenced on the project page that pertains to page templates specifically, although I don't know it's status with some of the settings.

barobba's picture

My only concern with the custom_node_template module is that two similar on/off switches would require four templates, and three similar on/off switches would require eight templates.

Something that worries me somewhat, is that using CCK fields for "metadata" almost seems like overextending the use of CCK fields.

One possible solution, are there any modules for categorizing content type fields (at the type level)? For example, at admin/content/node-type/story/*, I could categorize fields like this:

Title  <-- DATA
Body   <-- DATA
Field1 <-- DATA
Field2 <-- SOMECATEGORY
Field3 <-- SOMECATEGORY
Field4 <-- METADATA
Author <-- METADATA
Date   <-- METADATA

In this case, the story type's fields have been categorized as "data", "somecategory", or "metadata".

This is similar to when template files such as node.tpl.php, in their comments at the top, provide a list of the default variables by category. That information (the categories) would be very useful for theming.

Some of those variables are inserted at the preprocessing level. So, you would almost want an additional array, such as $vars['variable-descriptions'] that you could use to pass this information to the theme.

$vars['variable-description']['title'] = array('category' => 'data');

Are there any modules along these lines? (Display Suite, or Context?)

I fight this all the time

RockSoup's picture

My former approach was to set a list in my page.tpl.php template and check against it with the value of the URL- like:

<?php
      
<?php $ignore_paths = array('node/1', 'node/2','node/3','node/4','node/5','node/6','node/7', 'node/8', 'node/9', 'node/10', 'node/11','news-and-events', 'press');
?>

<?php
$path
= $_GET['q'];
?>

<?php
if (!in_array($path, $ignore_paths)):
?>

<?php
//print_r($node);
?>

<?php
if ($title):
?>

<?php
print $title;
?>
    
<?php
endif;
?>

?>

I did not like this approach, but am not super strong with PHP and this worked well. My plan was to convince some koders to help me build a Context Extra sub module so that I could add nodes to a context that hid the page title, but as of today I have a new approach. I am using the (awesome!) module to make the page title a block and using block visibility rules to control the Page Title. Works great!

-jared

Easiest Way

mfcoburn's picture

Is to use Display Suite. When you have Node displays as well as some of the other DS modules you can hide the node title without any coding of .tpl files.

Alternative title

kristen pol's picture

Something somewhat related to this idea is having an alternative title for the public versus the internal title. I have had this come up for more than one client. The thing is that internally the node/page should be called one thing in order to clearly identify it, but this isn't always what should show up to the end user.

For example, go to: http://www.boomerangproject.com/contact

The internal title is "Contact Us" but the alternative title is "Need to connect with us?".

Perhaps these ideas could be merged where you can choose to:

  • show title
  • show alternative title
  • show nothing

Though all of this can be handled in the theming layer with some code if necessary.

Kristen

Contributed Module Ideas

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: