フロントページから「フロントページのコンテンツはまだ作成されていません。」というメッセージを削除する方法


15

ホームページにのみブロックが必要です。ノードがないため、ホームページを/ nodeのままにしておきたいので、「フロントページのコンテンツはまだ作成されていません」と表示されます。私のページのメッセージ。

これを回避するにはどうすればよいですか?

回答:


13

誰が推測したでしょうか?そのためのモジュールがあります。空のフロントページモジュールを確認してください。わずか10行のコードで、最も単純なモジュールの1つでなければなりません。


サイドノートとして、このモジュールは、サイトにノードがない場合、不要な「新規コンテンツの追加」リンクも削除します。
kiamlaluno

2
気をつけて!! あなたは、小さな変化のためにモジュールを追加する必要はありません:あなたは、あなたのテンプレートファイルを上書きしてfollowningコードを追加することができます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) }
ヒマンシュPathak

5
気をつけて?最近モジュールの追加は危険ですか?実際、私はあなたのテーマにこのようなものを入れることにもっと注意するでしょう。「別のテーマを選択する場合、この変更を残すべきですか?」という質問を自問することができます。答えが「はい」の場合、テーマに属していません。
marcvangend

@HimanshuPathakおそらく動作がテーマに依存しない場合(つまり、テーマに追加するコードはすべてのテーマに追加する必要があることを意味します)に簡単であるという理由だけで、テーマにコードを追加することは避けたほうがよいでしょう。
キアムルノ

おかげで、その場合には、我々は交換する必要があるMYTHEMEことでMYMODULE、右?
ヒマンシュ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で動作しますか?
達人

私が試したことがないと私は推測していないのに
ヒマンシュPathak

サイトに使用するテーマとは別に、自分が欲しいもののコードをテーマに追加しません。
キアムルノ

2

「no content message」を非表示にする簡単なCSS回避策は、CSSファイルに次の行を追加するだけです。

 #first-time {display:none;}

1
これは危険なことです。Googleの結果に表示されます;)
トマーシュフェイファー14年

仰るとおりです。これは最善の解決策ではありません。これは回避策です。これ以上何もない。
-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.' => '',
);

Webサイトで他の言語を有効にしている場合、各言語に同様のエントリを追加できます。たとえば、イタリア語の場合、入力するコードは次のようになります。(_enはに置き換えられ_itます。)

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

この方法を使用すると、「フロントページのコンテンツはまだ作成されていません。」フロントページだけでなく、使用されるすべての場所で置き換えられます。この文字列は、通常、フロントページがデフォルトの場合、フロントページでのみ使用されます。その文字列を使用する他のモジュールがあるかどうかはわかりませんが、その文字列をで空の文字列に置き換える前に、$conf['locale_custom_strings_en']['']それを使用する有効なモジュールがないことを確認します(Nodeモジュールを除く)。


ところで、これは私のホームページからすべての既存のブロックを削除しますか?もう一度やり直す必要がありますか?それとも、それは私がしたくないメッセージを取り除くだけですか?
user12804

ページのページコールバックを変更しても、そのページに割り当てられているブロックは変更されないため、両方の質問に対する答えは「いいえ」です。
キアムルノ

申し訳ありませんが、別の質問です。これはどのモジュールに入れるべきですか?そのフロントページを保持したいが、そのメッセージは表示しない場合は、モジュールに次のフックを実装できます。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('フロントページのコンテンツはまだ作成されていません。 ')。' </ p > '、' '); }}
user12804

サイトをカスタマイズするためのモジュールをまだ作成していない場合は、モジュールを作成する必要があります。
キアムルノ

1

次を含むすべての新しいプロジェクトのテンプレートがあります。

  1. hook_menu()は、「home」などの汎用パスの新しいメニューコールバックを作成します。
  2. 1つのスペースを含む文字列を返す「home」のページコールバック ''(空の文字列を返すとOmegaが「スマート」になろうとするため)
  3. サイトのホームページを「ホーム」URLに設定するstrongarmエクスポート

それだけです、私は二度と奇抜なデフォルトのノードページに対処する必要はありません。


hook_enable()variable_set( 'site_frontpage'、 'home');に設定するだけでなく、エクスポートする理由 ただのメモ
パンクロノ14年

1

これは、コンテンツ領域に配置された他のコンテンツと混同することなく、このエラーを取り除くためのクールなスニペットです。これにより、このエラーが非表示になり、他のコンテンツが通常どおり表示されます。

このスニペットは、「フロントページのコンテンツはまだ作成されていません」の削除に投稿されています。デフォルトの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をページにフックします。front.tpl.phpを使用して、フックを楽しんでください。


ありがとう。これら2つのテンプレートを「フック」するにはどうすればよいですか?これにより、「フロントページのコンテンツはまだ作成されていません」がなくなります。ホームページ上のテキスト?
user12804

両方のテンプレートをフックする必要はありません。次の手順に従って
ください。– Somik

1)合計page.tpl.phpの内容をフックされたfront.tplにコピーします。2)次に、上部に自分の名前または私の名前を書いて家を更新します。すべてのキャッシュのハードリフレッシュフロントページ
ソミック

2
複数のテーマが有効になっている場合、この方法には従わないことにします。
キアマルノ

0

Drupalの管理インターフェイスからこれを行う方法があるかどうかはわかりません。

これを実現する1つの方法は、私が知っていることですが、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']
キアマルーノ

代わりに何を提案しますか?
user12804

私はむしろmarcvangendの提案に行きたいです。
キアムルノ

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です

つまり、Adaptiveテーマサブテーマでは、「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_theme または中page.tpl.phpまたはpage--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」という名前のビューを編集します)。
  • [結果なしの動作]内で、[グローバル:フィルタされていないテキスト]リンクを使用して編集します。メッセージ(= "フロントページコンテンツがまだ作成されていません。")を必要なものに変更するか、完全に削除します。
  • 変更を保存することを忘れないでください。

変更を確認するには、フロントページを参照します。必要に応じて、上記の手順を繰り返してメッセージをさらに調整します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.