프론트 페이지에서 "아직 프론트 페이지 컨텐츠가 작성되지 않았습니다."메시지를 제거하는 방법은 무엇입니까?


14

홈페이지에서 블록 만 원합니다. 노드가없고 홈페이지를 / node로 유지하려고하는데 "아무도 첫 페이지 콘텐츠가 만들어지지 않았습니다"라는 메시지가 나타납니다. 내 페이지에 메시지.

이 문제를 어떻게 해결합니까?

답변:


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

@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에서 작동합니까?
Guru

시도하지 않았지만 나는 추측하지 않습니다
Himanshu Pathak

사이트에 사용하는 테마와 독립적으로 원하는 코드를 테마에 추가하지 않습니다.
kiamlaluno

2

"콘텐츠 메시지 없음"을 숨기는 빠른 CSS 해결 방법은 CSS 파일에 다음 줄을 추가하는 것입니다.

 #first-time {display:none;}

1
이것은 위험한 일입니다. 그것은 구글의 검색 결과에 표시)
토마스 Fejfar에게

동의합니다. 이것은 최선의 해결책이 아닙니다. 이것은 해결 방법입니다. 더 이상은 없습니다.
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']['']모듈을 사용하는 활성화 된 모듈이 없는지 확인합니다 (노드 모듈 제외).


그런데 내 홈페이지에서 기존 블록을 모두 제거합니까? 다시 다시해야합니까? 아니면 내가 원하지 않는 메시지 만 제거합니까?
user12804

페이지에 대한 페이지 콜백을 변경해도 해당 페이지에 할당 된 블록은 변경되지 않으므로 질문에 대한 답은 아닙니다.
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 ()에 설정하지 않고 내보내는가? variable_set ( 'site_frontpage', 'home'); 그냥 메모
Pan Chrono

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를 page--front.tpl.php에 연결하고 원하는 걸 즐기십시오 :-)


고마워 이 두 템플릿을 어떻게 "후크"합니까? "아무런 첫 페이지 콘텐츠가 만들어지지 않았습니다."가 제거됩니까? 홈페이지에 텍스트?
user12804

두 템플릿을 모두 연결할 필요는 없습니다. 다음 단계를 따르십시오.
Somik

1) 전체 page.tpl.php 내용을 후크 된 front.tpl에 복사하십시오 .2) 확인을 위해 상단에 이름이나 내 이름을 쓰고 집을 새로 고치십시오 .3) 이름 구성을 찾을 수없는 경우-> 성능-> 지우기 모든 캐시 하드 새로 고침 프론트 페이지
Somik

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하고 주변 컨테이너 태그를 더 많이 포함하는 것이 좋습니다. 홈 페이지의 첫 번째 사이드 바 위에 표제를 추가하여 tamplate을 추가로 변경하십시오.

<?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


0

너희들이 왜 그렇게 복잡하게하는지 모르겠다. (물론 abd의 방법이 효과가 있는지 모르겠지만 작동하지 않는 경우 아래 솔루션을 사용하십시오.

page.tpl.php에서이 코드 부분을 찾아야합니다.

(이것은 내 적응 형 테마 7x-3.2입니다)

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

당신이해야 할 일은 삭제입니다! 모든 라인.

PHP 의이 부분은 단순히 말합니다 :

"title"이 있으면 H1 글꼴 크기로 인쇄하십시오. 코드가 작성된 영역의 웹 사이트에 인쇄되어 있습니다. Adaptive Theme의 경우 헤더 영역에 있습니다.

서브 테마에 page.tpl.php가없는 경우 핵심 테마에서 찾은 다음 코어 테마와 동일한 위치에 서브 테마로 복사해야합니다.

AT에서는 /templates/page.tpl.php입니다.

적응 테마 하위 테마에서 "templates"라는 폴더를 만든 다음 page.tpl.php를 복사 한 다음 위에서 언급 한 코드 부분을 삭제해야합니다.

핵심 테마를 변경하지 않는 것이 중요합니다!


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.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를"명명 된보기).
  • "결과 없음"에서 "글로벌 : 필터링되지 않은 텍스트"링크를 사용하여 편집하십시오. 원하는 메시지로 메시지를 변경하거나 (= "첫 페이지 내용이 아직 생성되지 않았습니다.") 완전히 제거하십시오.
  • 변경 사항 을 저장 하는 것을 잊지 마십시오 .

변경 사항을 확인하려면 첫 페이지로 이동하십시오. 필요한 경우 위의 단계를 반복하여 메시지를 추가 조정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.