【问题标题】:How to hide title from page node Drupal如何从页面节点 Drupal 隐藏标题
【发布时间】:2012-12-04 17:04:00
【问题描述】:

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

我希望它看起来像这样:

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

我去结构->类型内容->我的类型内容,然后编辑它。我激活了模块,我想根据节点类别自动生成标题。我觉得应该是这个样子,但是不行……

有什么想法吗?

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

它也会引发这个错误:

【问题讨论】:

  • 确认:您希望在查看分类术语时页面标题消失。是这样吗?
  • @Sonhja,如果您有任何解决方案,我也有同样的问题,您可以发布答案吗?

标签: drupal drupal-7


【解决方案1】:

使用排除节点标题模块。

https://drupal.org/project/exclude_node_title

此模块的设置:

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. 

【讨论】:

  • 像魅力一样工作。谢谢@Chirag
【解决方案2】:

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

page.tpl.phpnode.tpl.php

您需要做的就是在这两个上单击“查看源代码”并将它们复制到您的主题文件夹中。从那里您可以根据需要修改两者。

据我所知,您需要从 node.tpl.php 中删除打印 $title

【讨论】:

  • 是的,就是这样。我知道你说的是“它肯定会起作用”的方法,但问题是我不希望所有节点都没有标题。所以这就是我想使用该模块的原因,因为它是为自动生成和隐藏标题而构建的。我有点新手,如果我在混合东西,很抱歉......
【解决方案3】:

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

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

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

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

另外,您能否说得更清楚一些,您要删除什么标题?页面标题或节点标题?并且只有在您查看与某个分类术语相关的节点时才应该删除它(换句话说,当您在 /taxonomy/term/n 页面上时),对吗?

【讨论】:

    【解决方案4】:

    通过使用 Context 模块,您可以将类添加到正文中,这样您就可以只针对 CSS 中的分类页面。

    Using Context module to set body classes

    【讨论】:

      【解决方案5】:

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

      您的回答没有问题,但它们并不是我所需要的……谢谢!

      【讨论】:

        【解决方案6】:

        使用排除节点标题模块。

        https://drupal.org/project/exclude_node_title

        【讨论】:

        • 使用模块是一种做任何事情的drupal方式。
        【解决方案7】:

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

        喜欢:

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

        【讨论】:

          【解决方案8】:

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

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

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

          或者如果你想使用 CSS 然后使用 position:absolute 这样标题就不会使用它在页面中的任何空间和 text-indent:-9999px; 所以文本会从屏幕上移开,不再可见,但至少可以被屏幕阅读器和搜索引擎阅读。

          【讨论】:

            【解决方案9】:

            我就是这样做的,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;
                         }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-08-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-26
              相关资源
              最近更新 更多