如何从页面节点Drupal隐藏标题

时间:2012-12-04 17:04:01

标签: drupal drupal-7

我正在尝试删除Drupal上的页面节点的标题。我有这个页面:

enter image description here

我希望它看起来像这样:

enter image description here

正如您所看到的,我希望删除标题,但用于分类术语。如果我尝试使用CSS擦除它,我会删除页面标题,所以我想使用this module,它允许管理员自动生成节点标题并隐藏它。

我转到结构 - >类型内容 - >我的类型内容,并进行编辑。我激活模块,我想根据节点类别自动生成标题。我认为它应该是这样的,但它不起作用......

enter image description here

任何想法为什么?

编辑:抱歉,我忘了说:是的,当我激活模块时,使用它,并选择类别作为自动生成的标题,它可以工作。但它并没有隐藏标题......

它也引发了这个错误:

enter image description here

9 个答案:

答案 0 :(得分:7)

使用排除节点标题模块。

https://drupal.org/project/exclude_node_title

此模块的设置:

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. 

答案 1 :(得分:3)

如果要删除标题,则应考虑覆盖页面和节点模板。

page.tpl.phpnode.tpl.php

您只需点击两者上的“查看来源”,然后将其复制到主题文件夹即可。从那里你可以根据需要修改它们。

根据我的收集内容,您需要从node.tpl.php中删除打印$title

答案 2 :(得分:2)

之前有类似的问题,据我记得,我刚刚在代码中添加了一些if语句:

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

希望,它会给你一个线索。

其他一些想法:您可以创建if语句或不仅在page.tpl.php中重写它,而是创建一些特定的page-node-type.tpl.php文件并仅覆盖其$title,或者您可以尝试自定义页面的输出也通过视图/面板模块。

另外,你能不能说清楚,你要删除什么标题?页面标题或节点标题?只有当您查看与某个分类术语相关联的节点时(换句话说,当您在/taxonomy/term/n页面上时),它才应被删除,我是对的吗?

答案 3 :(得分:2)

通过使用Context模块,您可以向主体添加类,这样您就可以只在CSS中定位分类页面。

Using Context module to set body classes

答案 4 :(得分:2)

对不起,伙伴们,就像在“管理演示文稿”中隐藏标题标签一样简单...

你的反应很好,但它们并不是我所需要的......谢谢!

答案 5 :(得分:1)

使用排除节点标题模块。

https://drupal.org/project/exclude_node_title

答案 6 :(得分:0)

特定节点的另一个不错的解决方案是使用标准的$ title_prefix / suffix vars,这应该由每个主题实现。在页面预处理中使用标准类元素 - 不可见..

像:

/**
 * 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>');
  }
}

答案 7 :(得分:0)

每个页面都应包含一个标题。

您应该始终在任何网页中维护标题的结构化层次结构。你永远不应该有一个空白的标题,甚至不能用display:none;隐藏它。隐藏任何访问者无法查看但被搜索引擎查看的内容违反了Google的指导原则,因为您的目的只是通过包含搜索引擎结果来操纵搜索引擎结果。重新设计H1以适应您的设计是最佳选择。

如果您仍然需要隐藏它,那么更好的选择是为该节点,内容类型或页面创建模板,而不是打印标题。

  

或者如果你想使用CSS,那么使用 position:absolute ,这样标题就不会使用它在页面中的任何空格而且 text-indent:-9999px; < / strong>所以文本被移出屏幕并且不再可见,但至少可以被屏幕阅读器和搜索引擎读取。

答案 8 :(得分:0)

这是我做的,Switch语句

//获取节点名称

$ node_name = node_type_get_name($ node);

//然后通过用空字符串覆盖// $ title对象来添加要排除的内容类型

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