วิธีการลบข้อความ“ ยังไม่มีการสร้างเนื้อหาหน้าแรก” จากหน้าแรก


14

ฉันต้องการบล็อกในหน้าแรกเท่านั้น เนื่องจากฉันไม่มีโหนดและฉันต้องการให้หน้าแรกเป็น / โหนดฉันได้รับ "ยังไม่มีการสร้างเนื้อหาหน้าแรก" ข้อความบนหน้าของฉัน

ฉันจะรับสิ่งนี้ได้อย่างไร

คำตอบ:


13

ใครจะเดาได้บ้าง มีโมดูลสำหรับสิ่งนั้น ตรวจสอบโมดูลหน้าว่างเปล่า ด้วยโค้ดเพียง 10 บรรทัดมันจะต้องเป็นหนึ่งในโมดูลที่ง่ายที่สุดที่นั่น


ตามบันทึกด้านข้างโมดูลนี้จะลบลิงก์ "เพิ่มเนื้อหาใหม่" ซึ่งไม่จำเป็นหากไซต์นั้นไม่มีโหนด
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) }
Himanshu Pathak

5
ระวัง? การเพิ่มโมดูลเป็นอันตรายหรือไม่? ที่จริงแล้วฉันจะระวังให้มากขึ้นเกี่ยวกับการวางสิ่งนี้ในธีมของคุณ คุณสามารถถามคำถามตัวเองว่า "หากฉันจะเลือกธีมอื่นการเปลี่ยนแปลงนี้จะยังคงอยู่หรือไม่" ถ้าคำตอบคือใช่มันไม่ได้อยู่ในธีมของคุณ
marcvangend

@ HimanshuPathak มันคงจะดีกว่าถ้าจะหลีกเลี่ยงการเพิ่มโค้ดในธีมเพราะมันง่ายกว่าโดยเฉพาะเมื่อพฤติกรรมไม่ได้ขึ้นอยู่กับธีม (ซึ่งหมายความว่าควรเพิ่มโค้ดที่คุณเพิ่มลงในธีมทุกธีม)
kiamlaluno

ขอขอบคุณในกรณีที่เราจำเป็นต้องเปลี่ยนMYTHEMEโดยMYMODULEใช่มั้ย?
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 Pathak

ฉันจะไม่เพิ่มรหัสในชุดรูปแบบสำหรับสิ่งที่ฉันต้องการเป็นอิสระจากชุดรูปแบบที่ฉันใช้สำหรับไซต์
kiamlaluno

2

วิธีแก้ปัญหา CSS อย่างรวดเร็วเพื่อซ่อน "ไม่มีข้อความเนื้อหา" เพียงแค่เพิ่มบรรทัดต่อไปนี้ในไฟล์ CSS ของคุณ:

 #first-time {display:none;}

1
นี่เป็นสิ่งที่อันตรายที่ต้องทำ มันแสดงให้เห็นในผลลัพธ์ของ Google;)
Tomáš 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 (& $ หน้า) {ถ้า (isset ($ หน้า ['default_message'] ['# markup']) && is_string ($ หน้า ['default_message']) ['# markup']) {$ หน้า ['default_message '] [' # markup '] = strtr ($ page [' default_message '] [' # markup '],' <p> '. t (' ยังไม่มีการสร้างเนื้อหาหน้าแรก ').' </ p > ',' '); }}
user12804

คุณต้องสร้างโมดูลหากคุณยังไม่ได้สร้างโมดูลเพื่อปรับแต่งเว็บไซต์
kiamlaluno

1

ฉันมีแม่แบบสำหรับโครงการใหม่ทั้งหมดที่มี:

  1. hook_menu () เพื่อสร้างเมนูเรียกกลับใหม่สำหรับเส้นทางทั่วไปเช่น "home"
  2. หน้าโทรกลับสำหรับ "บ้าน" ซึ่งส่งกลับสตริงที่มีหนึ่งช่องว่างในนั้น '' (เพราะโอเมก้าพยายามที่จะเป็น "สมาร์ท" ถ้าคุณกลับสตริงที่ว่างเปล่า)
  3. การส่งออก strongarm ที่กำหนดโฮมเพจของไซต์เป็น "โฮม" ของฉัน

นั่นแหล่ะฉันไม่ต้องจัดการกับหน้าโหนดเริ่มต้นที่แปลกประหลาดอีกเลย


ทำไมคุณส่งออกและไม่เพียงตั้งค่าไว้ใน 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

ขอ hook page.tpl.php ของคุณไปที่หน้า - front.tpl.php และทำทุกสิ่งที่คุณต้องการเพลิดเพลินไปกับ hooking :-)


ขอบคุณสำหรับสิ่งนั้น ฉันจะ "ขอ" แม่แบบทั้งสองนั้นได้อย่างไร สิ่งนี้จะเป็นการกำจัด "ยังไม่มีการสร้างเนื้อหาหน้าแรก" ข้อความในหน้าแรก?
user12804

ไม่จำเป็นต้องขอแม่แบบทั้งสองให้ทำตามขั้นตอนนี้:
Somik

1) คัดลอกเนื้อหาทั้งหมด page.tpl.php ไปที่ frontedplpl ของคุณ 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และอาจรวมถึงแท็กคอนเทนเนอร์โดยรอบเพิ่มเติม การแก้ไขเพิ่มเติมแผ่นโดยการวางส่วนหัวด้านบนแถบด้านข้างแรกสำหรับหน้าแรก:

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

ผมค่อนข้างจะไปกับข้อเสนอแนะของ marcvangend
kiamlaluno

0

ฉันไม่รู้ว่าทำไมพวกคุณถึงยุ่งกันมาก (ดีฉันไม่ทราบว่า Abd วิธีการทำงาน แต่ในกรณีที่มันไม่ทำงานใช้วิธีแก้ไขด้านล่าง

ใน page.tpl.php คุณต้องค้นหาส่วนของรหัสนี้:

(ฉันมีนี่คือ Mine Adaptive Theme 7x-3.2)

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

สิ่งที่คุณต้องทำคือลบมัน! ทุกเส้น

ส่วนหนึ่งของ PHP นี้พูดว่า:

หากมี "title" อยู่ให้พิมพ์ด้วยขนาดตัวอักษร H1 มันถูกพิมพ์บนเว็บไซต์ในพื้นที่รหัสที่เขียนในกรณีของชุดรูปแบบ Adaptive มันอยู่ในส่วนหัว

หากคุณไม่มี page.tpl.php ในหัวข้อย่อยของคุณคุณต้องค้นหาในธีมหลักแล้วคัดลอกไปยังตำแหน่งเดียวกันกับธีมหลักไปยังหัวข้อย่อยของคุณ

ใน AT คือ /templates/page.tpl.php

หมายความว่าในหัวข้อย่อยชุดรูปแบบ Adaptive ของคุณคุณต้องสร้างโฟลเดอร์ชื่อ "แม่แบบ" แล้วคัดลอกไปที่นั่น page.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.