Jak usunąć komunikat „Nie utworzono jeszcze treści strony głównej” ze strony głównej?

14

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

użytkownik12804
źródło

Odpowiedzi:

13

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.

marcvangend
źródło
Na marginesie, ten moduł usunie również link „Dodaj nową treść”, który nie jest konieczny, jeśli strona nie będzie miała węzłów.
kiamlaluno
2
Ostrożny!! Nie musisz dodawać modułów do drobnych zmian: możesz przesłonić plik szablonu i dodać następujący kod: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
Ostrożny? Czy dodawanie modułów jest obecnie niebezpieczne? W rzeczywistości byłbym bardziej ostrożny w umieszczaniu takich rzeczy w swoim temacie. Możesz zadać sobie pytanie „Gdybym kiedykolwiek wybrał inny motyw, czy ta zmiana powinna pozostać?” Jeśli odpowiedź brzmi „tak”, nie należy do twojego motywu.
marcvangend,
@HimanshuPathak Prawdopodobnie lepiej unikać dodawania kodu do motywu tylko dlatego, że jest to łatwiejsze, zwłaszcza gdy zachowanie nie zależy od motywu (co oznacza, że ​​kod dodawany do motywu powinien zostać dodany do każdego motywu).
kiamlaluno
Dzięki, w takim przypadku musimy zastąpić MYTHEME, MYMODULEprawda?
Himanshu Pathak,
9

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)
  }
}
Himanshu Pathak
źródło
Czy to działa dla drupal8?
Guru,
chociaż nie próbowałem i chyba nie
Himanshu Pathak
Nie dodawałbym kodu do motywu dla czegoś, co chcę niezależnie od motywu używanego w witrynie.
kiamlaluno
2

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;}
xaa
źródło
1
To jest niebezpieczne. Pokazuje się w wynikach Google;)
Tomáš Fejfar
Zgadzam się z Tobą. to nie jest najlepsze rozwiązanie. to jest obejście. nic więcej.
xaa
1

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

kiamlaluno
źródło
Nawiasem mówiąc, czy spowoduje to usunięcie wszystkich istniejących bloków z mojej strony głównej? Czy będę musiał je ponownie wykonać? A może pozbędzie się tylko wiadomości, której nie chcę?
user12804,
Zmiana wywołania zwrotnego strony dla strony nie zmienia bloków przypisanych do tej strony, więc odpowiedź brzmi „nie” na oba pytania.
kiamlaluno
Przepraszam, kolejne pytanie. W którym module powinienem to umieścić? 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 (' Nie utworzono jeszcze żadnej zawartości strony głównej. ').' </ p > ',' '); }}
user12804,
Musisz utworzyć moduł, jeśli jeszcze go nie utworzyłeś, aby dostosować stronę.
kiamlaluno
1

Mam szablon dla wszystkich nowych projektów, który zawiera:

  1. hook_menu (), aby utworzyć nowe wywołanie zwrotne menu dla ogólnej ścieżki, takiej jak „home”
  2. Strona zwrotna dla „home”, która zwraca ciąg znaków z jedną spacją w nim ”(ponieważ Omega próbuje być„ inteligentny ”, jeśli zwrócisz pusty ciąg)
  3. Silny eksport, który ustawia stronę główną witryny na mój „domowy” adres URL

To wszystko, nie muszę już nigdy zajmować się domyślną stroną węzła.

David Meister
źródło
Dlaczego eksportujesz, a nie tylko ustawiasz w zmiennej hook_enable () zmienna_zestaw („strona_strony”, „strona główna”); tylko uwaga
Pan Chrono
1

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']);
      }
  }
WaQaR Ali
źródło
0

podłącz swoją page.tpl.php do strony - front.tpl.php i rób co chcesz, ciesz się :-)

Somik
źródło
Dziękuję za to. Jak „zaczepić” te dwa szablony? Czy to pozwoli pozbyć się „Nie utworzono jeszcze treści na pierwszej stronie”. tekst na stronie głównej?
user12804,
nie trzeba
podpinać
1) skopiuj całą zawartość page.tpl.php do zaczepionego front.tpl 2) następnie, aby sprawdzić, wpisz swoje imię i nazwisko na górze i odśwież swój dom 3) nadal, jeśli nie możesz znaleźć konfiguracji imienia -> wydajność-> wyczyść wszystkie podręczne odświeżanie strony głównej
Somik
2
Jeśli włączono więcej niż jeden motyw, wolałbym nie stosować tej metody.
kiamlaluno
0

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.

Po skomentowaniu treści na temat Bartika.

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:

Usunąłem treść i utrzymałem nagłówek.

Batandwa
źródło
Jest to zbyt wygórowane: Nie trzeba usuwać całej zawartości $page['content'].
kiamlaluno
Co zasugerowałbyś zamiast tego?
user12804,
Wolę pójść z sugestią marcvangend .
kiamlaluno
0

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!

EmilSamson
źródło
0

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

Paulson Peter
źródło
0

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

Kamal Oberoi
źródło
0

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

Yusef
źródło
0

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:

  • Nawigować do /admin/structure/views/view/frontpage (aby edytować widok o nazwie „Frontpage”).
  • W polu „Zachowanie bez wyników” użyj linku „Globalny: niefiltrowany tekst”, aby go edytować. Zmień wiadomość (= „Nie utworzono jeszcze żadnej zawartości strony głównej”) na dowolną lub po prostu ją całkowicie usuń.
  • Nie zapomnij zapisać zmian.

Aby zweryfikować zmiany, przejdź do strony głównej. W razie potrzeby powtórz powyższe kroki, aby dalej dostroić wiadomość.

Pierre.Vriens
źródło