Comment supprimer le message «Aucun contenu de première page n'a encore été créé» de la première page?

14

Je veux seulement des blocs sur la page d'accueil. Parce que je n'ai pas de nœuds et que je souhaite conserver la page d'accueil en tant que / nœud, je reçois un "Aucun contenu de première page n'a encore été créé". message sur ma page.

Comment puis-je contourner cela?

user12804
la source

Réponses:

13

Qui aurait deviné? Il y a un module pour ça. Découvrez le module Empty Front Page . Avec seulement 10 lignes de code, ce doit être l'un des modules les plus simples du marché.

marcvangend
la source
Comme note latérale, ce module supprimera également le lien "Ajouter un nouveau contenu" qui n'est pas nécessaire, si le site ne va pas avoir de nœuds.
kiamlaluno
2
Prudent!! Vous n'avez pas besoin d'ajouter de modules pour de petites modifications: vous pouvez remplacer votre fichier de modèle et ajouter le code suivant: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
Prudent? L'ajout de modules est-il dangereux de nos jours? En fait, je serais plus prudent de mettre des choses comme ça dans votre thème. Vous pouvez vous poser la question "Si jamais je choisissais un autre thème, ce changement devrait-il rester?" Si la réponse est oui, elle n'appartient pas à votre thème.
marcvangend
@HimanshuPathak Il est probablement préférable d'éviter d'ajouter du code à un thème simplement parce que c'est plus facile, surtout lorsque le comportement ne dépend pas d'un thème (ce qui signifie que le code que vous ajoutez à un thème doit être ajouté à chaque thème).
kiamlaluno
Merci, dans ce cas, nous devons remplacer MYTHEMEpar le MYMODULEdroit?
Himanshu Pathak
9

Vous pouvez le faire dans le fichier de modèle de votre thème:

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
la source
Est-ce que cela fonctionne pour drupal8?
Guru
même si je n'ai pas essayé et je suppose que non
Himanshu Pathak
Je n'ajouterais pas de code dans un thème pour quelque chose que je veux indépendamment du thème que j'utilise pour un site.
kiamlaluno
2

Une solution de contournement CSS rapide pour masquer le «message sans contenu» consiste simplement à ajouter la ligne suivante dans votre fichier CSS:

 #first-time {display:none;}
xaa
la source
1
C'est une chose dangereuse à faire. Il apparaît dans les résultats de Google;)
Tomáš Fejfar
Je suis d'accord avec toi. ce n'est pas la meilleure solution. c'est une solution de contournement. rien de plus.
xaa
1

Le message "Aucun contenu de première page n'a encore été créé." est affiché à partir du rappel de page pour la page que vous utilisez comme première page, node_page_default () , qui contient le code suivant.

  $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>';

    // …
  }

Il est simplement sorti car le site n'a pas de nœuds; le message n'est pas lié à la page d'accueil ayant (ou n'ayant pas) de blocs.

Si vous souhaitez conserver cette page d'accueil, sans voir ce message, vous pouvez implémenter le hook suivant dans un 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>', '');
  }
}

L'autre alternative serait d'ajouter le code suivant à la fin du fichier settings.php.

$conf['locale_custom_strings_en'][''] = array(
  'No front page content has been created yet.' => '',
);

Si d'autres langues sont activées sur votre site Web, vous pouvez ajouter une entrée similaire pour chaque langue. Par exemple, pour l'italien, le code à saisir serait le suivant. ( _enest remplacé par _it.)

$conf['locale_custom_strings_it'][''] = array(
  'No front page content has been created yet.' => '',
);

En utilisant cette méthode, "Aucun contenu de première page n'a encore été créé." serait remplacé dans chaque endroit où il est utilisé, pas seulement la première page. Cette chaîne est normalement utilisée uniquement dans la page d'accueil, lorsque la page d'accueil est celle par défaut. Je ne sais pas si un autre module utilise cette chaîne, mais avant de remplacer cette chaîne par une chaîne vide avec $conf['locale_custom_strings_en'][''], je vérifierais qu'aucun module activé ne l'utilise (sauf le module Node).

kiamlaluno
la source
Au fait, cela supprimera-t-il tous les blocs existants de ma page d'accueil? Vais-je devoir les refaire? Ou va-t-il seulement se débarrasser du message que je ne veux pas?
user12804
La modification du rappel de page d'une page ne modifie pas les blocs attribués à cette page, la réponse est donc non aux deux questions.
kiamlaluno
Désolé, une autre question. Dans quel module dois-je mettre cela? Si vous souhaitez conserver cette page d'accueil, sans voir ce message, vous pouvez implémenter le hook suivant dans un 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 (' Aucun contenu de première page n'a encore été créé. ').' </ p > ',' '); }}
user12804
Vous devez créer un module, si vous n'en avez pas déjà créé un pour personnaliser le site.
kiamlaluno
1

J'ai un modèle pour tous les nouveaux projets qui contient:

  1. hook_menu () pour faire un nouveau rappel de menu pour un chemin générique comme "home"
  2. Le rappel de page pour "home" qui renvoie une chaîne avec un espace '' (car Omega essaie d'être "intelligent" si vous retournez une chaîne vide)
  3. Une exportation forte qui définit la page d'accueil du site sur mon URL "home"

Ça y est, je n'ai plus jamais à gérer la page de noeud par défaut délirante.

David Meister
la source
Pourquoi exportez-vous et ne pas simplement mettre dans votre hook_enable () variable_set ('site_frontpage', 'home'); juste une note
Pan Chrono
1

Ceci est un extrait sympa pour se débarrasser de cette erreur sans confondre avec d'autres contenus placés dans la région de contenu . Cela ne fera que masquer cette erreur et affichera normalement les autres contenus.

Cet extrait est publié sur Supprimer le "Aucun contenu de première page n'a encore été créé." dans l'installation par défaut de 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
la source
0

accrochez votre page.tpl.php à la page - front.tpl.php et faites ce que vous voulez, accrochez-vous :-)

Somik
la source
Merci pour ça. Comment "accrocher" ces deux modèles? Cela supprimera-t-il le «Aucun contenu de première page n'a encore été créé». texte sur la page d'accueil?
user12804
pas besoin d'accrocher les deux modèles, suivez simplement ces étapes:
Somik
1) copiez le contenu total de page.tpl.php sur votre front.tpl accroché 2) puis pour vérifier écrivez votre nom ou mon nom en haut et rafraîchissez votre maison 3) toujours si vous ne trouvez pas votre configuration de nom-> performance-> effacer All Cache Hard Refresh Front Page
Somik
2
S'il y a plus d'un thème activé, je préfère ne pas suivre cette méthode.
kiamlaluno
0

Je ne sais pas s'il existe un moyen de le faire à partir de l'interface d'administration de Drupal.

Une façon d'y parvenir, à ma connaissance, consiste à ajouter une ifdéclaration à votre page.tpl.php. Trouvez une ligne comme:

<?php print render($page['content']); ?>` 

... et changez-le en:

<?php if (!$is_front): ?>
  <?php print render($page['content']); ?>
<?php endif; ?>

Cela imprimera essentiellement le contenu de la page principale sur toutes les pages qui ne sont pas la première page. Mais cela pourrait vous laisser un trou béant au milieu de votre page.

Après avoir commenté le contenu du thème Bartik.

Donc, vous pourriez bien faire quelques autres ajustements à votre page.tpl.phpet peut-être englober plus de balises de conteneur environnantes. Modifier davantage le tamplate, en plaçant le titre au-dessus de la première barre latérale de la page d'accueil:

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

... et déplacer l' ifinstruction initiale et la placer juste à l'intérieur du conteneur de contenu:

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

... a donné les résultats suivants:

Suppression du contenu et maintien de l'en-tête.

Batandwa
la source
C'est trop excessif: il n'est pas nécessaire de supprimer tout le contenu de $page['content'].
kiamlaluno
Que suggéreriez-vous à la place?
user12804
Je préfère aller avec la suggestion de marcvangend .
kiamlaluno
0

Je ne sais pas pourquoi vous compliquez tant les choses. (eh bien, je ne sais pas si les méthodes d'Abd fonctionnent, mais au cas où cela ne fonctionnerait pas, utilisez la solution ci-dessous.

dans page.tpl.php vous devez trouver cette partie du code:

(eh bien j'ai le mien Adaptive Theme 7x-3.2)

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

Il vous suffit de le supprimer! Toutes les lignes.

Cette partie de php dit simplement:

Si "title" existe, imprimez-le en taille de police H1. Il est imprimé sur le site Web dans la zone dans laquelle le code est écrit. Dans le cas du thème adaptatif, il se trouve dans la zone d'en-tête.

Si vous n'avez pas page.tpl.php dans votre sous-thème, vous devez le trouver dans le thème principal, puis le copier au même emplacement que le thème principal, dans votre sous-thème.

Dans AT, c'est /templates/page.tpl.php

cela signifie que dans votre sous-thème de thème adaptatif, vous devez créer un dossier nommé "modèles", puis y copier page.tpl.php, puis supprimer la partie de code mentionnée ci-dessus.

Il est important que vous n'apportiez aucune modification au thème principal!

EmilSamson
la source
0

Placez ce code dans page.tpl.php

if(drupal_is_front_page()) {

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

}

Ou

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

Dans la page - front.tpl.php

Paulson Peter
la source
0

vous pouvez utiliser les remplacements de chaîne du module de remplacement de chaîne pour remplacer

"Aucun contenu de première page n'a encore été créé dans la première page" à ""

Kamal Oberoi
la source
0

Mieux vaut réaliser ce travail n'est pas défini $page['content']['system_main']['default_message']dans hook_preprocess_theme ou dans le page.tpl.phpou page--front.tpl.php.

trouver

<?php print render($page['content']); ?>

et remplacez par le code ci-dessous.

<?php  if(drupal_is_front_page()){
            unset($page['content']['system_main']['default_message']);
            } 
        print render($page['content']); 
    ?>

OU

  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"
     }
    }

Prendre plaisir!!

Yusef
la source
0

Dans Drupal 8, le même "Aucun contenu de première page n'a encore été créé." s'affiche également, par exemple juste après avoir créé un nouveau site et visité sa première page (page d'accueil). Mais les choses ont été simplifiées si vous voulez le remplacer ou le supprimer ... Tout ce dont vous avez besoin est comme ceci:

  • Accédez à /admin/structure/views/view/frontpage(pour modifier la vue nommée "Frontpage").
  • Dans "Aucun comportement de résultats", utilisez le lien "Global: Texte non filtré" pour le modifier. Modifiez le message (= "Aucun contenu de page d'accueil n'a encore été créé.") En ce que vous voulez, ou supprimez-le complètement.
  • N'oubliez pas de sauvegarder les modifications.

Pour vérifier vos modifications, accédez à la page d'accueil. Si nécessaire, répétez les étapes ci-dessus pour affiner davantage le message.

Pierre.Vriens
la source