Как удалить сообщение «Нет содержимого главной страницы еще не создано.» С главной страницы?

14

Я хочу только блоки на главной странице. Поскольку у меня нет никаких узлов, и я хочу сохранить домашнюю страницу как / узел, я получаю сообщение «Контент главной страницы еще не создан». сообщение на моей странице.

Как мне обойти это?

user12804
источник

Ответы:

13

Кто бы мог догадаться? Для этого есть модуль. Проверьте модуль Пустой главной страницы . Имея всего 10 строк кода, это должен быть один из самых простых модулей.

marcvangend
источник
Как примечание, этот модуль также удалит ссылку «Добавить новый контент», которая не нужна, если на сайте не будет узлов.
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'][''], я бы проверил, нет ли включенных модулей, которые ее используют (кроме модуля Node).

киамлалуно
источник
Кстати, это удалит все существующие блоки с моей домашней страницы? Придется ли мне снова их переделывать? Или это только избавится от сообщения, которое я не хочу?
user12804
Изменение обратного вызова страницы для страницы не изменяет блоки, назначенные этой странице, поэтому ответ на оба вопроса отрицательный.
kiamlaluno
Извините, еще один вопрос. В какой модуль я должен вставить это? Если вы хотите сохранить эту титульную страницу, но не видите этого сообщения, вы можете реализовать следующую ловушку в модуле. 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 (' Контент главной страницы еще не создан. ').' </ p > ',' '); }}
user12804
Вам нужно создать модуль, если вы еще не создали его для настройки сайта.
kiamlaluno
1

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

  1. hook_menu () для создания нового обратного вызова меню для общего пути, такого как "home"
  2. Обратный вызов страницы для «home», который возвращает строку с одним пробелом в ней »(потому что Omega пытается быть« умным », если вы возвращаете пустую строку)
  3. Экспорт сильного оружия, который устанавливает домашнюю страницу сайта на мой "домашний" URL

Вот и все, мне больше не нужно иметь дело со странной страницей узлов по умолчанию.

Дэвид Майстер
источник
Почему вы экспортируете, а не просто устанавливаете в свой hook_enable () variable_set ('site_frontpage', 'home'); просто примечание
Пан Chrono
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']);
      }
  }
WaQaR Али
источник
0

подключите ваш page.tpl.php к странице - front.tpl.php и делайте все, что хотите, наслаждайтесь подключением :-)

Сомик
источник
Спасибо за это. Как мне «зацепить» эти два шаблона? Избавит ли это от «контента на первой странице еще не создано». текст на главной странице?
user12804
не нужно подключать оба шаблона, просто следуйте этим шагам:
Somik
1) скопируйте все содержимое page.tpl.php в свой файл front.tpl 2), затем для проверки напишите свое имя или мое имя вверху и обновите свой дом. 3) если вы не можете найти конфигурацию своего имени-> производительность-> очистить вся кеш-страница обновляется
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; ?>

Это в основном напечатает содержимое главной страницы на всех страницах, которые не являются главной страницей. Но это может оставить вас с зияющей дырой в середине вашей страницы.

После комментирования контента на тему Бартик.

Таким образом, вы могли бы сделать несколько других корректировок 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 -->

... дал следующие результаты:

Удалил контент и сохранил заголовок.

Batandwa
источник
Это слишком излишне: нет необходимости удалять все содержимое $page['content'].
kiamlaluno
Что бы вы предложили вместо этого?
user12804
Я предпочел бы пойти с предложением Маркванджа .
kiamlaluno
0

Я не знаю, почему вы, ребята, так усложняете это. (ну, я не знаю, работают ли способы abd, но если это не сработало, используйте решение ниже.

в page.tpl.php вы должны найти эту часть кода:

(ну у меня это моя адаптивная тема 7х-3,2)

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

Все, что вам нужно сделать, это удалить его! Все строки

Эта часть PHP просто говорит:

Если «заголовок» существует, выведите его шрифтом H1. Он напечатан на сайте в той области, в которой написан код. В случае с адаптивной темой - в области заголовка.

Если в вашей подтеме нет файла page.tpl.php, вы должны найти его в основной теме, а затем скопировать в то же место, что и основная тема, в свою подтему.

В AT это /templates/page.tpl.php

это означает, что в вашей подтеме Adaptive theme вам нужно создать папку с именем «templates», затем скопировать туда page.tpl.php и затем удалить часть кода, упомянутую выше.

Важно, чтобы вы не вносили никаких изменений в базовую тему!

EmilSamson
источник
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

Вы можете использовать Overrides Строки модуль String Overrides для замены

Msgstr "Контент главной страницы еще не создан на первой странице" to ""

Камаль Оберой
источник
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»).
  • В разделе «Поведение без результатов» используйте ссылку «Global: нефильтрованный текст», чтобы отредактировать ее. Либо измените сообщение (= "Пока еще не было создано содержание главной страницы."), Либо удалите его полностью.
  • Не забудьте сохранить изменения.

Чтобы проверить ваши изменения, перейдите на первую страницу. При необходимости повторите описанные выше шаги для дальнейшей настройки сообщения.

Pierre.Vriens
источник