Як видалити повідомлення "Ще не створено вміст передньої сторінки". З першої сторінки?


14

Я хочу лише блоки на домашній сторінці. Оскільки у мене немає вузлів, і я хочу зберегти домашню сторінку як / вузол, я отримую "Ще не створено вміст титульної сторінки". повідомлення на моїй сторінці.

Як мені це обійти?

Відповіді:


13

Хто б здогадався? Для цього є модуль. Перевірте модуль « Порожня передня сторінка» . Маючи лише 10 рядків коду, він повинен бути одним з найпростіших модулів.


Як зауваження, цей модуль видалить також посилання "Додати новий вміст", що не обов'язково, якщо на сайті не буде вузлів.
kiamlaluno

2
Обережно !! Вам не потрібно додавати модулі для невеликих змін: ви можете переосмислити файл шаблону та додати наступний код: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право?
Хіманшу Патхак

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?
Гуру

хоча я не пробував, і, мабуть, ні
Хіманшу Патхак

Я б не додавав код у тему для чогось, що я хочу незалежно від теми, яку я використовую для сайту.
kiamlaluno

2

Швидке вирішення CSS, щоб приховати "повідомлення про вміст" - це просто додавши наступний рядок у файл CSS:

 #first-time {display:none;}

1
Це робити небезпечно. Це відображається в результатах google;)
Томаш Фейфар

Я погоджуюсь з тобою. це не найкраще рішення. це вирішення. нічого більше.
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'][''], я би переконався, що немає жодних включених модулів, які використовують її (крім модуля "Вузол").


До речі, це видалить усі існуючі блоки з моєї домашньої сторінки? Чи доведеться мені їх переробляти ще раз? Або це позбудеться лише того повідомлення, яке я не хочу?
користувач12804

Зміна зворотного дзвінка на сторінку не змінює блоки, призначені для цієї сторінки, тому відповідь не на обидва питання.
kiamlaluno

Вибачте, ще одне питання. У який модуль я повинен це вкласти? Якщо ви хочете зберегти цю головну сторінку, але не бачите цього повідомлення, ви можете реалізувати наступний гак у модулі. функція 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 (' Ще не створено вміст титульної сторінки. ').' </ p > ',' '); }}
користувач12804

Вам потрібно створити модуль, якщо ви ще не створили його для налаштування сайту.
kiamlaluno

1

У мене є шаблон для всіх нових проектів, який містить:

  1. гачок_меню (), щоб створити новий зворотний виклик меню для загального шляху, наприклад "додому"
  2. Зворотний виклик сторінки "home", який повертає рядок з одним пробілом у ньому "(тому що Omega намагається бути" розумним ", якщо повернеш порожній рядок)
  3. Експорт сильної зброї, який встановлює домашню сторінку сайту на мою "домашню" URL-адресу

Ось так, мені більше не доводиться мати справу зі страшною сторінкою вузла за замовчуванням.


Чому ви експортуєте, а не просто встановлюєте їх у змінному_контакті__контажу () ('site_frontpage', 'home'); лише примітка
Пан Хроно

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

підключіть сторінку.tpl.php до сторінки - front.tpl.php і робіть все, що завгодно, насолоджуйтесь підключенням :-)


Дякую за це. Як я "зачепити" ці два шаблони? Чи позбудеться цього "Ще не створено контент на головній сторінці". текст на домашній сторінці?
користувач12804

не потрібно підключати обидва шаблони, просто виконайте наступні дії:
Сомік

1) скопіюйте загальний вміст page.tpl.php на зачеплений front.tpl 2), тоді для перевірки напишіть своє ім’я чи моє ім’я вгорі та оновіть свій будинок. всі кеш-пам'ять важко оновити головну сторінку
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

Що б ти запропонував замість цього?
користувач12804

Я б скоріше пішов із пропозицією маркандженда .
kiamlaluno

0

Я не знаю, чому ви, хлопці, так сильно ускладнюєте це. (ну я не знаю, чи працюють Abd-способи, але якщо це не спрацювало, скористайтеся рішенням нижче.

у page.tpl.php ви повинні знайти цю частину коду:

(ну у мене це моя адаптивна тема 7x-3.2)

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

Все, що вам потрібно зробити - це видалити його! Усі рядки.

Ця частина php просто говорить:

Якщо "title" існує, роздрукуйте його у форматі шрифту H1. Він надрукований на веб-сайті в тій області, в якій написаний код. У разі адаптивної теми він знаходиться в області заголовка.

Якщо у вашій підтемі немає сторінки.t.tl.php, ви повинні знайти її в основній темі, а потім скопіювати її в те саме місце, що і основна тема, у свою підтему.

В AT це /templates/page.tpl.php

це означає, що у вашій підтемі "Адаптивна тема" ви повинні створити папку з назвою "шаблони", а потім скопіювати туди page.tpl.php, а потім видалити частину коду, згадану вище.

Важливо, щоб ви не вносили жодних змін до основної теми!


0

Розмістіть цей код у page.tpl.php

if(drupal_is_front_page()) {

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

}

Або

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

На сторінці - front.tpl.php



0

Краще для досягнення цієї роботи не встановлено $page['content']['system_main']['default_message']в hook_preprocess_theme або в page.tpl.phpабоpage--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").
  • У розділі "Поведінка без результатів" скористайтеся посиланням "Глобальний: нефільтрований текст", щоб відредагувати його. Або змініть повідомлення (= "Ще не створено вміст титульної сторінки".) На все, що завгодно, або просто видаліть його повністю.
  • Не забудьте зберегти зміни.

Щоб підтвердити зміни, перейдіть на головну сторінку. Якщо потрібно, повторіть описані вище кроки, щоб подальше налаштування повідомлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.