Làm cách nào để loại bỏ nội dung trên mạng Không có nội dung trang trước đã được tạo. Tin nhắn từ trang trước?


15

Tôi chỉ muốn các khối trên trang chủ. Bởi vì tôi không có bất kỳ nút nào và tôi muốn giữ trang chủ là / nút Tôi đang nhận được "Chưa có nội dung trang đầu nào được tạo." tin nhắn trên trang của tôi.

Làm thế nào để tôi có được xung quanh này?

Câu trả lời:


13

Ai có thể đoán được? Có một mô-đun cho điều đó. Kiểm tra mô-đun Trang trống . Chỉ với 10 dòng mã, nó phải là một trong những mô-đun đơn giản nhất hiện có.


Như lưu ý phụ, mô-đun này cũng sẽ xóa liên kết "Thêm nội dung mới" không cần thiết, nếu trang web sẽ không có nút.
kiamlaluno

2
Cẩn thận!! Bạn không cần thêm các mô-đun cho các thay đổi nhỏ: bạn có thể ghi đè tệp mẫu của mình và thêm mã theo dõi: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
Cẩn thận? Là thêm các mô-đun nguy hiểm ngày nay? Trong thực tế, tôi sẽ cẩn thận hơn về việc đưa những thứ như thế này vào chủ đề của bạn. Bạn có thể tự hỏi mình câu hỏi "Nếu tôi từng chọn một chủ đề khác, liệu sự thay đổi này có còn không?" Nếu câu trả lời là có, nó không thuộc về chủ đề của bạn.
marcvangend

@HimanshuPathak Có lẽ tốt hơn là tránh thêm mã vào một chủ đề chỉ vì nó dễ dàng hơn, đặc biệt là khi hành vi không phụ thuộc vào một chủ đề (có nghĩa là mã bạn đang thêm vào một chủ đề nên được thêm vào mọi chủ đề).
kiamlaluno

Cảm ơn, trong trường hợp đó chúng ta cần thay thế MYTHEMEbằng MYMODULEquyền?
Himanshu Pathak

9

Bạn có thể làm điều này trong tệp mẫu của chủ đề của bạn:

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)
  }
}

Nó có hoạt động cho drupal8 không?

mặc dù tôi đã không thử và tôi đoán là không
Himanshu Pathak

Tôi sẽ không thêm mã trong một chủ đề cho một cái gì đó mà tôi muốn độc lập với chủ đề tôi sử dụng cho một trang web.
kiamlaluno

2

Cách giải quyết CSS nhanh để ẩn "không có thông điệp nội dung" chỉ đơn giản bằng cách thêm dòng sau vào tệp CSS của bạn:

 #first-time {display:none;}

1
Đây là một điều nguy hiểm để làm. Nó hiển thị trong kết quả google;)
Tomáš Fejfar

Tôi đồng ý với bạn. đây không phải là giải pháp tốt nhất đây là một cách giải quyết chỉ có bấy nhiêu thôi.
xaa

1

Thông báo "Chưa có nội dung trang đầu nào được tạo." được hiển thị từ trang gọi lại cho trang bạn đang sử dụng làm trang trước, node_page_default () , chứa mã sau đây.

  $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>';

    // …
  }

Nó chỉ đơn giản là đầu ra vì trang web không có nút; tin nhắn không liên quan đến trang đầu có khối (hoặc không có).

Nếu bạn muốn giữ trang trước đó, nhưng không thấy thông báo đó, bạn có thể thực hiện móc sau trong một mô-đun.

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

Sự thay thế khác sẽ là thêm đoạn mã sau vào cuối tệp settings.php.

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

Nếu bạn có các ngôn ngữ khác được bật trong trang web của mình, bạn có thể thêm một mục tương tự cho mỗi ngôn ngữ. Ví dụ, đối với tiếng Ý, mã để nhập sẽ là mã sau đây. ( _enđược thay thế bằng _it.)

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

Sử dụng phương pháp này, "Chưa có nội dung trang trước nào được tạo." sẽ được thay thế ở mọi nơi mà nó được sử dụng, không chỉ trang đầu. Chuỗi đó thường chỉ được sử dụng trong trang trước, khi trang trước là mặc định. Tôi không biết có mô-đun nào khác sử dụng chuỗi đó không, nhưng trước khi thay thế chuỗi đó bằng chuỗi trống $conf['locale_custom_strings_en'][''], tôi sẽ kiểm tra xem không có mô-đun nào được kích hoạt sử dụng chuỗi đó (ngoại trừ mô-đun Node).


Nhân tiện, điều này sẽ loại bỏ tất cả các khối hiện có khỏi trang chủ của tôi? Tôi sẽ phải làm lại chúng một lần nữa? Hay nó sẽ chỉ thoát khỏi tin nhắn tôi không muốn?
dùng12804

Thay đổi cuộc gọi lại trang cho một trang không thay đổi các khối được gán cho trang đó, vì vậy câu trả lời là không cho cả hai câu hỏi.
kiamlaluno

Xin lỗi, một câu hỏi khác. Tôi nên đặt mô-đun này vào? Nếu bạn muốn giữ trang trước đó, nhưng không thấy thông báo đó, bạn có thể thực hiện móc sau trong một mô-đun. chức năng mymodule_page_alter (& $ page) {if (isset ($ page ['default_message'] ['# markup']) && is_opes ($ page ['default_message'] ['# markup'])) {$ page ['default_m '] [' # markup '] = strtr ($ page [' default_message '] [' # markup '],' <p> '. t (' Chưa có nội dung trang trước nào được tạo. ').' </ p > ',' '); }}
dùng12804

Bạn cần tạo một mô-đun, nếu bạn chưa tạo một mô-đun để tùy chỉnh trang web.
kiamlaluno

1

Tôi có một mẫu cho tất cả các dự án mới có chứa:

  1. hook_menu () để thực hiện một cuộc gọi lại menu mới cho một đường dẫn chung như "home"
  2. Cuộc gọi lại trang cho "nhà" trả về một chuỗi có một khoảng trắng trong đó '' (vì Omega cố gắng "thông minh" nếu bạn trả về một chuỗi trống)
  3. Xuất khẩu mạnh mẽ đặt trang chủ trang web vào url "nhà" của tôi

Thế là xong, tôi không phải đối phó với trang nút mặc định kỳ quặc nữa.


Tại sao bạn xuất và không chỉ đặt trong hook_enable () biến_set ('site_frontpage', 'home'); chỉ là một ghi chú
Pan Chrono

1

Đây là một đoạn tuyệt vời để thoát khỏi lỗi này mà không nhầm lẫn với các nội dung khác được đặt trong vùng Nội dung . Điều này sẽ chỉ ẩn lỗi này và hiển thị các nội dung khác bình thường.

Đoạn mã này được đăng tại Xóa "Chưa có nội dung trang trước nào được tạo." trong cài đặt Drupal mặc định .

/**
 * 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

nối page.tpl.php của bạn vào trang - front.tpl.php và làm bất cứ điều gì bạn muốn tận hưởng hooking :-)


Cảm ơn vì điều đó. Làm thế nào để tôi "móc" hai mẫu đó? Điều này sẽ thoát khỏi "Không có nội dung trang trước đã được tạo ra." văn bản trên trang chủ?
dùng12804

không cần phải móc cả hai mẫu chỉ cần làm theo các bước sau:
Somik

1) sao chép toàn bộ nội dung page.tpl.php vào hooked front.tpl 2 của bạn tất cả bộ nhớ cache làm mới trang cứng
Somik

2
Nếu có nhiều chủ đề được kích hoạt, tôi không muốn làm theo phương pháp này.
kiamlaluno

0

Tôi không chắc có cách nào để làm điều này từ giao diện quản trị của Drupal không.

Một cách để thực hiện điều này, mà tôi biết, là thêm một iftuyên bố vào của bạn page.tpl.php. Tìm một dòng như:

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

... và thay đổi nó thành:

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

Điều đó về cơ bản sẽ in nội dung trang chính trên tất cả các trang không phải là trang đầu. Nhưng, điều này có thể khiến bạn có một lỗ hổng ở giữa trang của bạn.

Sau khi bình luận ra nội dung về chủ đề Bartik.

Vì vậy, bạn có thể làm tốt để thực hiện một vài điều chỉnh khác cho page.tpl.phpvà có thể bao gồm nhiều hơn các thẻ container xung quanh. Tiếp tục thay đổi bản khắc, bằng cách đặt tiêu đề phía trên thanh bên đầu tiên cho trang chủ:

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

... và di chuyển ifcâu lệnh ban đầu và đặt nó vào bên trong thùng chứa nội dung:

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

... mang lại kết quả như sau:

Xóa nội dung và duy trì tiêu đề.


Điều này là quá mức: Không cần thiết phải loại bỏ tất cả nội dung của $page['content'].
kiamlaluno

Bạn sẽ đề nghị gì thay thế?
dùng12804


0

Tôi không biết tại sao các bạn làm phức tạp nó rất nhiều. (tôi cũng không biết cách của abd có hiệu quả không, nhưng trong trường hợp nó không hoạt động, hãy sử dụng giải pháp dưới đây.

trong page.tpl.php bạn phải tìm phần mã này:

(tôi cũng có cái này là chủ đề Thích ứng 7x-3.2 của tôi)

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

Tất cả bạn phải làm là xóa nó! Tất cả các dòng.

Phần này của php chỉ đơn giản nói:

Nếu "tiêu đề" tồn tại, in nó ở cỡ chữ H1. Nó được in trên trang web trong khu vực mã được viết. Trong trường hợp Chủ đề thích ứng, nó nằm trong khu vực Tiêu đề.

Nếu bạn không có page.tpl.php trong subtheme của mình, bạn phải tìm nó trong chủ đề cốt lõi, sau đó sao chép nó vào cùng vị trí với chủ đề cốt lõi, vào subtheme của bạn.

Trong AT đó là /tem mẫu / page.tpl.php

điều đó có nghĩa là trong chương trình con chủ đề Thích ứng của bạn, bạn phải tạo thư mục có tên "mẫu" và sau đó sao chép vào trang.tpl.php và sau đó xóa phần mã được đề cập ở trên.

Điều quan trọng là bạn không thực hiện bất kỳ thay đổi nào đối với chủ đề Core!


0

Đặt mã này vào page.tpl.php

if(drupal_is_front_page()) {

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

}

Hoặc là

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

Trong trang - front.tpl.php


0

bạn có thể sử dụng chuỗi Overrides Mô-đun Chuỗi Overrides cho thay thế

"Chưa có nội dung trang trước nào được tạo ở trang trước" đến ""


0

Tốt hơn để đạt được công việc này là không đặt $page['content']['system_main']['default_message']trong hook_preprocess_theme hoặc trong page.tpl.phphoặc page--front.tpl.php.

tìm thấy

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

và thay thế bằng mã dưới đây.

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

HOẶC LÀ

  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"
     }
    }

Thưởng thức!!


0

Trong Drupal 8, cùng một "Chưa có nội dung trang đầu nào được tạo ra." cũng được hiển thị, ví dụ ngay sau khi bạn tạo một trang web mới và truy cập trang đầu của nó (trang chủ). Nhưng mọi thứ đã được đơn giản hóa nếu bạn muốn thay thế hoặc xóa nó ... Tất cả những gì cần thiết là như vậy:

  • Điều hướng đến /admin/structure/views/view/frontpage(để chỉnh sửa chế độ xem có tên "Frontpage").
  • Trong "Không có hành vi kết quả", hãy sử dụng liên kết "Toàn cầu: Văn bản chưa được lọc" để chỉnh sửa nó. Thay đổi thông báo (= "Chưa có nội dung trang trước nào được tạo.") Thành bất cứ điều gì bạn muốn hoặc chỉ xóa hoàn toàn.
  • Đừng quên lưu các thay đổi.

Để xác minh thay đổi của bạn, duyệt đến trang trước. Nếu cần lặp lại các bước trên để điều chỉnh thêm thông điệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.