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?
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:
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ó.
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) }
MYTHEME
bằng MYMODULE
quyền?
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)
}
}
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;}
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).
Tôi có một mẫu cho tất cả các dự án mới có chứa:
Thế là xong, tôi không phải đối phó với trang nút mặc định kỳ quặc nữa.
Đâ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']);
}
}
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 :-)
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 if
tuyê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.
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.php
và 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 if
câ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:
$page['content']
.
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!
Đặ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
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 ""
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.php
hoặ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!!
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:
/admin/structure/views/view/frontpage
(để chỉnh sửa chế độ xem có tên "Frontpage").Để 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.