Chcę tylko bloków na stronie głównej. Ponieważ nie mam żadnych węzłów i chcę zachować stronę główną jako / node, otrzymuję komunikat „Nie utworzono jeszcze treści strony głównej”. wiadomość na mojej stronie.
Jak to obejść?
Chcę tylko bloków na stronie głównej. Ponieważ nie mam żadnych węzłów i chcę zachować stronę główną jako / node, otrzymuję komunikat „Nie utworzono jeszcze treści strony głównej”. wiadomość na mojej stronie.
Jak to obejść?
Odpowiedzi:
Kto by zgadł? Jest do tego moduł. Sprawdź moduł pustej strony początkowej. Z zaledwie 10 liniami kodu, musi to być jeden z najprostszych modułów.
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, MYMODULEprawda?
Możesz to zrobić w pliku szablonu motywu:
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)
}
}
Szybkie obejście CSS w celu ukrycia „komunikatu o braku zawartości” polega po prostu na dodaniu następującego wiersza w pliku CSS:
#first-time {display:none;}
Komunikat „Nie utworzono jeszcze treści strony głównej”. jest wyświetlany z wywołania zwrotnego strony dla strony, której używasz jako strony głównej, node_page_default () , która zawiera następujący kod.
$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>';
// …
}
Jest po prostu wyprowadzany, ponieważ strona nie ma węzłów; wiadomość nie jest związana z tym, że strona główna ma (lub nie ma) bloków.
Jeśli chcesz zachować tę stronę główną, ale nie widzisz tego komunikatu, możesz zaimplementować następujący zaczep w module.
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>', '');
}
}
Inną alternatywą byłoby dodanie następującego kodu na końcu pliku settings.php.
$conf['locale_custom_strings_en'][''] = array(
'No front page content has been created yet.' => '',
);
Jeśli w Twojej witrynie są włączone inne języki, możesz dodać podobny wpis dla każdego języka. Na przykład dla języka włoskiego kod do wprowadzenia będzie następujący. ( _enzastępuje się _it.)
$conf['locale_custom_strings_it'][''] = array(
'No front page content has been created yet.' => '',
);
Przy użyciu tej metody „Nie utworzono jeszcze treści na stronie głównej”. będą zastępowane w każdym miejscu, w którym jest używany, nie tylko na pierwszej stronie. Ten ciąg znaków jest zwykle używany tylko na stronie głównej, gdy strona główna jest domyślna. Nie wiem, czy jakikolwiek inny moduł korzystający z tego ciągu, ale przed zamianą tego ciągu na pusty ciąg $conf['locale_custom_strings_en'][''], sprawdziłbym, czy nie ma włączonych modułów, które go używają (oprócz modułu Węzła).
Mam szablon dla wszystkich nowych projektów, który zawiera:
To wszystko, nie muszę już nigdy zajmować się domyślną stroną węzła.
To jest fajny fragment, aby pozbyć się tego błędu bez mylenia z innymi treściami umieszczonymi w obszarze zawartości . Spowoduje to jedynie ukrycie tego błędu i normalne wyświetlenie pozostałej zawartości.
Ten fragment kodu jest opublikowany pod adresem Usuń „Nie utworzono jeszcze treści strony głównej”. w domyślnej instalacji 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']);
}
}
podłącz swoją page.tpl.php do strony - front.tpl.php i rób co chcesz, ciesz się :-)
Nie jestem pewien, czy można to zrobić z poziomu interfejsu administracyjnego Drupala.
Jednym ze sposobów na osiągnięcie tego, o czym wiem, jest dodanie ifdo twojego oświadczenia page.tpl.php. Znajdź linię taką jak:
<?php print render($page['content']); ?>`
... i zmień na:
<?php if (!$is_front): ?>
<?php print render($page['content']); ?>
<?php endif; ?>
To w zasadzie wydrukuje zawartość strony głównej na wszystkich stronach, które nie są stroną główną. Ale może to pozostawić ci dziurę w środku strony.

Możesz więc zrobić kilka innych korekt page.tpl.phpi być może obejmować więcej otaczających tagów kontenerów. Dalsza zmiana tamplate, umieszczając nagłówek nad pierwszym paskiem bocznym strony głównej:
<?php if ($is_front): ?>
<?php if ($title): ?>
<h1 class="title" id="page-title">
<?php print $title; ?>
</h1>
<?php endif; ?>
<?php endif; ?>
... i przeniesienie początkowej ifinstrukcji i umieszczenie jej bezpośrednio w kontenerze treści:
<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 -->
... przyniosło następujące wyniki:

$page['content'].
Nie wiem, dlaczego tak bardzo to komplikujecie. (cóż, nie wiem, czy działają sposoby abd, ale jeśli to nie zadziała, skorzystaj z poniższego rozwiązania.
w page.tpl.php musisz znaleźć tę część kodu:
(cóż, mam to jest mój motyw adaptacyjny 7x-3.2)
<?php if ($title): ?>
<h1 id="page-title">
<?php print $title; ?>
</h1>
<?php endif; ?>
Wszystko, co musisz zrobić, to usunąć! Wszystkie linie
Ta część php po prostu mówi:
Jeśli „tytuł” istnieje, wydrukuj go czcionką H1. Jest wydrukowany na stronie internetowej w obszarze, w którym napisany jest kod. W przypadku motywu adaptacyjnego znajduje się w obszarze Nagłówek.
Jeśli nie masz page.tpl.php w swoim podtemacie, musisz go znaleźć w głównym motywie, a następnie skopiować go do tej samej lokalizacji, co główny motyw, do swojego podtematu.
W AT jest to /templates/page.tpl.php
oznacza to, że w podtematie motywu adaptacyjnego musisz utworzyć folder o nazwie „szablony”, a następnie skopiować tam page.tpl.php, a następnie usunąć część kodu wspomnianą powyżej.
Ważne jest, aby nie wprowadzać żadnych zmian w motywie Core!
Umieść ten kod w page.tpl.php
if(drupal_is_front_page()) {
unset($page['content']['system_main']['default_message']);
}
Lub
unset($page['content']['system_main']['default_message']);
Na stronie - front.tpl.php
możesz użyć Zastąpienia ciągów Moduł Zastąpienia ciągów do zamiany
„Nie utworzono jeszcze treści na pierwszej stronie na pierwszej stronie” do „”
Lepsze do osiągnięcia tej pracy jest rozbrojone $page['content']['system_main']['default_message']w hook_preprocess_theme lub w page.tpl.phplubpage--front.tpl.php .
odnaleźć
<?php print render($page['content']); ?>
i zamień na poniższy kod.
<?php if(drupal_is_front_page()){
unset($page['content']['system_main']['default_message']);
}
print render($page['content']);
?>
LUB
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"
}
}
Cieszyć się!!
W Drupal 8 ten sam „Nie utworzono jeszcze treści na pierwszej stronie”. jest również wyświetlany, np. zaraz po utworzeniu nowej witryny i wejściu na jej stronę główną (stronę główną). Ale wszystko zostało uproszczone, jeśli chcesz je wymienić lub usunąć ... Wszystko, co jest potrzebne, to:
/admin/structure/views/view/frontpage (aby edytować widok o nazwie „Frontpage”).Aby zweryfikować zmiany, przejdź do strony głównej. W razie potrzeby powtórz powyższe kroki, aby dalej dostroić wiadomość.