5
votes

I'm trying to remove the title of a page node on Drupal. I have this page:

enter image description here

And I want it to look like this:

enter image description here

As you can see, I want the title to be removed, but only for taxonomy terms. If I try to erase it using CSS, I erase al page-titles, so I wanted to use this module, that allows administrators to auto-generate node titles and hide it.

I go to structure -> type content -> my type content, and edit it. I activate the module, and I want to auto-generate titles depending on the node category. I think it should look like this, but it doesn't work...

enter image description here

Any ideas why?

EDIT: Sorry, I forgot to say: yes, when I activate the module, use it, and select the category as the auto-generated title, it works. But it doesn't hide the title...

It also launches this mistake:

enter image description here

9
To confirm: you want the page title to disappear when you're viewing a taxonomy term. Is that it?Pria Purnama
@Sonhja, I have same problem if you get any solution can you please post a answer?Chirag Shah

9 Answers

7
votes

Use Exclude Node Title module.

https://drupal.org/project/exclude_node_title

Setting for this module:

enter image description here

Click on Module->Exclude node title->configure
Home » Administration » Configuration » Content authoring
Select All nodes from Basic Page
Check Full Content for hide title from all cms page except home page
Check Teaser for hide title from home page. 
3
votes

If you want to remove the title, you should look into overriding the page and node templates.

page.tpl.php and node.tpl.php

All you need to do is click "View Source" on both of those and copy them to your theme folder. From there you can modify both as required.

From what I can gather, you'll want to remove the print $title from your node.tpl.php.

2
votes

Have the similar issue before, as far as I remember, I just added some if statement to the code:

<?php if (blah-blah-blah): ?>
   <h2> <?php echo $title; ?> </h2>
<?php endif; ?>

Hope, it'll give you a clue.

Some other thoughts: you can make an if statement or rewrite it not only in page.tpl.php but create some specific page-node-type.tpl.php file and overwrite only its $title, or you can try to customize page's output via Views/Panels modules as well.

Also, could you please make more clear, what title do you want to remove? Page title or node title? And it should be removed only when you are looking nodes associated with some taxonomy term (in other words, when you are on /taxonomy/term/n page), am I right?

2
votes

By using the Context module, you can add classes to the body so you can target just the taxonomy pages in CSS.

Using Context module to set body classes

2
votes

Sorry guys, it was as easy as hide title tag on "manage presentation"...

You are all right on your responses, but they were not exactly what I needed... thanks!

0
votes

another nice solution for specific nodes, is to use the standard $title_prefix/suffix vars, which should be implemented by every theme. using the standard class element-invisible in page preprocess ..

like:

/**
 * Implements hook_preprocess_page().
 */
function YOUR_THEME_preprocess_page(&$variables) {

  if (isset($variables['node']) && $variables['node']->nid == 1) {
    $variables['title_prefix'] = array('#markup' => '<div class="element-invisible">');
    $variables['title_suffix'] = array('#markup' => '</div>');
  }
}
0
votes

Every page should contain a heading.

You should always maintain a structured hierarchy of headings within any web page. You should never have a blank heading or even hide it with display:none;. Hiding any content which isn’t viewable by your visitors but is by search engines is against Google’s guidelines as your intention is to only manipulate search engine results by including it. Restyle a H1 so it fits into your design is the best option.

If you still have to hide it then a better option would be to either create a template for that node, content type or page and simply not print the heading.

Or if you want to use CSS then use position:absolute so the heading doesn’t use any space where it is located in the page and text-indent:-9999px; so the text is moved off the screen and no longer visible but at least can be read by screen readers and search engines.

0
votes

This is how I did it, Switch statement

// Get the name of node

$node_name = node_type_get_name($node);

// Then just add the content types you wish to exclude by overwriting the // $title object with an empty string

      switch ($node_name) {
           case 'Home page':
                $title = '' ;
                 break;
           case 'Event':
                $title = '';
                 break;
           case 'Offer':
                $title = '';
               break;
             }