如何从首页中删除“尚未创建首页内容。”消息?


14

我只想要首页上的方块。因为我没有任何节点,并且要将主页保留为/ node,所以我得到“尚未创建首页内容”。我页面上的消息。

我该如何解决?

Answers:


13

谁会猜到?有一个模块。签出“ 空首页”模块。仅用10行代码,它就必须是其中最简单的模块之一。


附带说明一下,如果站点将不具有节点,则此模块还将删除不必要的“添加新内容”链接。
kiamlaluno

2
小心!!您无需为小改动而添加模块:您可以覆盖模板文件并添加以下代码:function MYTHEME_preprocess_page(&$vars) { if (drupal_is_front_page()) { unset($vars['page']['content']['system_main']['default_message']); //will remove message "no front page content is created" drupal_set_title(''); //removes welcome message (page title) }
Himanshu Pathak

5
小心?如今添加模块危险吗?实际上,在将此类内容放入您的主题时,我会更加谨慎。您可以问自己一个问题:“如果我会选择其他主题,是否应该保留此更改?” 如果答案是肯定的,则它不属于您的主题。
marcvangend 2013年

@HimanshuPathak最好避免添加代码,因为这样做更容易,尤其是当行为不取决于主题时(这意味着要添加到主题的代码应添加到每个主题),这可能更好。
kiamlaluno

谢谢你,在这种情况下,我们需要更换MYTHEMEMYMODULE吧?
Himanshu Pathak

9

您可以在主题的模板文件中执行此操作:

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_is_front_page()) {
    unset($vars['page']['content']['system_main']['default_message']); //will remove message "no front page content is created"
    drupal_set_title(''); //removes welcome message (page title)
  }
}

它对drupal8有效吗?
大师

虽然我还没有试过,我想没有
人士Himanshu帕塔克

我不会在主题中为我想要的东西添加代码,而与我在网站上使用的主题无关。
kiamlaluno

2

隐藏“无内容消息”的快速CSS解决方法是,只需在CSS文件中添加以下行:

 #first-time {display:none;}

1
这是一件危险的事情。它显示在Google搜索结果中;)
TomášFejfar 2014年

我同意你的看法。这不是最好的解决方案。这是一种解决方法。而已。
xaa

1

消息“尚未创建首页内容”。从您用作首页的页面的页面回调中显示出node_page_default(),其中包含以下代码。

  $select = db_select('node', 'n')
    ->fields('n', array('nid', 'sticky', 'created'))
    ->condition('n.promote', 1)
    ->condition('n.status', 1)
    ->orderBy('n.sticky', 'DESC')
    ->orderBy('n.created', 'DESC')
    ->extend('PagerDefault')
    ->limit(variable_get('default_nodes_main', 10))
    ->addTag('node_access');

  $nids = $select->execute()->fetchCol();

  if (!empty($nids)) {
    $nodes = node_load_multiple($nids);
    $build = node_view_multiple($nodes);

    // 'rss.xml' is a path, not a file, registered in node_menu().
    drupal_add_feed('rss.xml', variable_get('site_name', 'Drupal') . ' ' . t('RSS'));
    $build['pager'] = array(
      '#theme' => 'pager', 
      '#weight' => 5,
    );
    drupal_set_title('');
  }
  else {
    drupal_set_title(t('Welcome to @site-name', array('@site-name' => variable_get('site_name', 'Drupal'))), PASS_THROUGH);

    $default_message = '<p>' . t('No front page content has been created yet.') . '</p>';

    // …
  }

它只是输出,因为站点没有节点。该消息与具有(或不具有)块的首页无关。

如果要保留该首页,但看不到该消息,则可以在模块中实现以下挂钩。

function mymodule_page_alter(&$page) {
  if (isset($page['default_message']['#markup']) && is_string($page['default_message']['#markup'])) {
    $page['default_message']['#markup'] = strtr($page['default_message']['#markup'], '<p>' . t('No front page content has been created yet.') . '</p>', '');
  }
}

另一种选择是在settings.php文件的末尾添加以下代码。

$conf['locale_custom_strings_en'][''] = array(
  'No front page content has been created yet.' => '',
);

如果您在网站中启用了其他语言,则可以为每种语言添加类似的条目。例如,对于意大利语,要输入的代码将是以下代码。(_en被替换为_it。)

$conf['locale_custom_strings_it'][''] = array(
  'No front page content has been created yet.' => '',
);

使用此方法,“尚未创建首页内容。” 将会在所有使用它的地方被替换,而不仅仅是首页。当首页是默认页面时,该字符串通常仅在首页中使用。我不知道是否有其他模块使用该字符串,但是在用空字符串替换该字符串之前$conf['locale_custom_strings_en'][''],我将检查是否没有使用该模块的已启用模块(Node模块除外)。


顺便说一句,这会从我的主页中删除所有现有的块吗?我需要重做一次吗?还是只会消除我不想要的信息?
user12804 2013年

更改页面的页面回调不会更改分配给该页面的块,因此两个问题的答案都为否。
kiamlaluno

抱歉,另一个问题。我应该放在哪个模块中?如果要保留该首页,但看不到该消息,则可以在模块中实现以下挂钩。函数mymodule_page_alter(&$ page){if(isset($ page ['default_message'] ['#markup'])&& is_string($ page ['default_message'] ['#markup'])){$ page ['default_message '] ['#markup'] = strtr($ page ['default_message'] ['#markup'],'<p>'。t('尚未创建首页内容。')。'</ p >',''); }
user12804

如果尚未创建一个模块来定制站点,则需要创建一个模块。
kiamlaluno

1

我有一个用于所有新项目的模板,其中包含:

  1. hook_menu()为诸如“ home”之类的通用路径创建新的菜单回调
  2. 页面“ home”的回调函数,返回一个带空格的字符串“”(因为如果返回空字符串,Omega会尝试“智能”化)
  3. 强大的导出功能,可将网站首页设置为我的“主页” URL

就是这样,我不必再处理怪异的默认节点页面。


为什么要导出而不是仅在hook_enable()变量中设置set('site_frontpage','home'); 只是一个提示
Pan Chrono 2014年

1

这是一个很不错的片段,它可以消除此错误,并且不会与Content区域中放置的其他内容混淆。这只会隐藏此错误并正常显示其他内容。

此摘录发布在删除“尚未创建首页内容”中。在默认的Drupal安装中

/**
 * Implements template_preprocess_page().
 */

  function YOUR_THEME_preprocess_page(&$vars) {
   // Remove the "No front page content has been created yet.".
     if (isset($vars['page']['content']['system_main']['default_message'])) {
        unset($vars['page']['content']['system_main']['default_message']);
      }
  }

0

将您的page.tpl.php挂接到page--front.tpl.php并执行您想做的任何事情:-)


感谢那。如何“钩”这两个模板?这样可以摆脱“尚未创建首页内容”的问题。主页上的文字?
user12804 2013年

无需挂钩两个模板,只需遵循以下步骤:
Somik 2013年

1)将全部page.tpl.php内容复制到钩住的front.tpl 2)然后进行检查,在顶部写下您的名字或我的名字并刷新您的住所3)仍然无法找到您的名字configuration-> performance-> clear所有缓存硬刷新首页
Somik 2013年

2
如果启用了多个主题,我宁愿不遵循此方法。
kiamlaluno

0

我不确定是否有办法从Drupal的管理界面执行此操作。

据我所知,完成此操作的一种方法是在上添加一条if语句page.tpl.php。找到像这样的行:

<?php print render($page['content']); ?>` 

...并将其更改为:

<?php if (!$is_front): ?>
  <?php print render($page['content']); ?>
<?php endif; ?>

基本上,这将在不是首页的所有页面上打印主页内容。但是,这可能会使您在页面中间留下一个空白。

注释掉有关Bartik主题的内容之后。

因此,您可能会做一些其他的调整,page.tpl.php并可能包含更多周围的容器标签。通过将标题放在首页的第一个侧栏上方,进一步更改模板:

<?php if ($is_front): ?>
  <?php if ($title): ?>
    <h1 class="title" id="page-title">
      <?php print $title; ?>
    </h1>
  <?php endif; ?>
<?php endif; ?>

...然后移动初始if语句并将其放置在内容容器中:

<div id="content" class="column">
  <?php if (!$is_front): // Moved the if statement over here.... ?>
    <div class="section">
      <?php if ($page['highlighted']): ?>
        <div id="highlighted"><?php print render($page['highlighted']); ?>
        </div>
      <?php endif; ?>
      <a id="main-content"></a>
      <?php print render($title_prefix); ?>
      <?php if ($title): ?>
        <h1 class="title" id="page-title">
          <?php print $title; ?>
        </h1>
      <?php endif; ?>
      <?php print render($title_suffix); ?>
      <?php if ($tabs): ?>
        <div class="tabs">
          <?php print render($tabs); ?>
        </div>
      <?php endif; ?>
      <?php print render($page['help']); ?>
      <?php if ($action_links): ?>
        <ul class="action-links">
          <?php print render($action_links); ?>
        </ul>
      <?php endif; ?>
        <?php print render($page['content']); ?>
      <?php print $feed_icons; ?>

    </div>
  <?php endif;  // ...and closed it here. ?>
</div> <!-- /.section, /#content -->

...产生了以下结果:

删除了内容并保持标题。


这太过分了:不必删除的所有内容$page['content']
kiamlaluno

您会建议什么呢?
user12804 2013年

我宁愿接受马克文根的建议
kiamlaluno

0

我不知道你们为什么这么复杂。(好吧,我不知道abd的方法是否有效,但是如果不起作用,请使用以下解决方案。

在page.tpl.php中,您必须找到以下部分代码:

(好吧,这是我的自适应主题7x-3.2)

<?php if ($title): ?>
<h1 id="page-title">
<?php print $title; ?>
</h1>
<?php endif; ?>

您所要做的就是删除它!所有行。

php的这一部分简单地说:

如果存在“标题”,则以H1字体大小打印。它被打印在网站上编写代码的区域中。对于“自适应主题”,它位于“标题”区域中。

如果子主题中没有page.tpl.php,则必须在核心主题中找到它,然后将其复制到与子主题相同的位置。

在AT中是/templates/page.tpl.php

这意味着在您的自适应主题子主题中,您必须创建名为“ templates”的文件夹,然后将其复制到page.tpl.php中,然后删除上述代码部分。

请勿对Core主题进行任何更改,这一点很重要!


0

将此代码放在page.tpl.php中

if(drupal_is_front_page()) {

unset($page['content']['system_main']['default_message']);

}

要么

unset($page['content']['system_main']['default_message']);

在页面--front.tpl.php



0

更好地实现这项工作未设置 $page['content']['system_main']['default_message']hook_preprocess_themepage.tpl.phppage--front.tpl.php

<?php print render($page['content']); ?>

并替换为以下代码。

<?php  if(drupal_is_front_page()){
            unset($page['content']['system_main']['default_message']);
            } 
        print render($page['content']); 
    ?>

要么

  function MYTHEME_preprocess_page(&$vars) { 
       if (drupal_is_front_page()) { 
            unset($vars['page']['content']['system_main']['default_message']); //will remove message "no front page content is    created"
     }
    }

请享用!!


0

在Drupal 8中,相同的“尚未创建首页内容”。也显示,例如,在创建新站点并访问其首页(主页)之后。但是,如果您要替换或删除它,事情已经简化了……所有需要的是这样的:

  • 导航至/admin/structure/views/view/frontpage(以编辑名为“ Frontpage”的视图)。
  • 在“无结果行为”中,使用链接“全局:未过滤的文本”进行编辑。将消息(=“尚未创建首页内容。”)更改为所需的任何消息,或者将其完全删除。
  • 不要忘记保存更改。

要验证您的更改,请浏览至首页。如果需要,请重复上述步骤以进一步调整消息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.