Come rimuovere il messaggio "Nessun contenuto di prima pagina è stato ancora creato". Dalla prima pagina?


14

Voglio solo blocchi sulla homepage. Perché non ho nessun nodo e voglio mantenere la homepage come / nodo, sto ottenendo un "Nessun contenuto di prima pagina è stato ancora creato." messaggio sulla mia pagina.

Come posso aggirare questo?

Risposte:


13

Chi avrebbe indovinato? C'è un modulo per quello. Dai un'occhiata al modulo Pagina iniziale vuota . Con solo 10 righe di codice, deve essere uno dei moduli più semplici disponibili.


Come nota a margine, questo modulo rimuoverà anche il link "Aggiungi nuovo contenuto" che non è necessario, se il sito non avrà nodi.
kiamlaluno

2
Attenzione !! Non è necessario aggiungere moduli per piccole modifiche: è possibile ignorare il file modello e aggiungere il seguente codice: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
Un'attenta? L'aggiunta di moduli è pericolosa al giorno d'oggi? In effetti, starei più attento a mettere cose del genere nel tuo tema. Puoi farti la domanda "Se mai dovessi scegliere un altro tema, questo cambiamento dovrebbe rimanere?" Se la risposta è sì, non appartiene al tuo tema.
marcvangend,

@HimanshuPathak Probabilmente è meglio evitare di aggiungere codice a un tema solo perché è più facile, specialmente quando il comportamento non dipende da un tema (il che significa che il codice che stai aggiungendo a un tema dovrebbe essere aggiunto a ogni tema).
kiamlaluno

Grazie, in tal caso dobbiamo sostituire MYTHEMEcon il MYMODULEdiritto?
Himanshu Pathak,

9

Puoi farlo nel file modello del tuo tema:

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

Funziona con drupal8?
Guru,

anche se non ho provato e credo di no
Himanshu Pathak,

Non aggiungerei il codice in un tema per qualcosa che desidero indipendentemente dal tema che uso per un sito.
kiamlaluno

2

Una rapida soluzione CSS per nascondere il "messaggio senza contenuto" è semplicemente aggiungendo la seguente riga nel file CSS:

 #first-time {display:none;}

1
Questa è una cosa pericolosa da fare. Si presenta nei risultati di Google;)
Tomáš Fejfar,

Sono d'accordo con te. questa non è la soluzione migliore. questa è una soluzione alternativa. niente di più.
xaa,

1

Il messaggio "Nessun contenuto di prima pagina è stato ancora creato." viene mostrato dal callback della pagina per la pagina che stai utilizzando come prima pagina, node_page_default () , che contiene il seguente codice.

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

    // …
  }

Viene semplicemente prodotto perché il sito non ha nodi; il messaggio non è correlato alla prima pagina che contiene (o non ha) blocchi.

Se vuoi mantenere quella prima pagina, ma non vedendo quel messaggio, puoi implementare il seguente hook in un modulo.

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'altra alternativa sarebbe l'aggiunta del seguente codice alla fine del file settings.php.

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

Se nel tuo sito web sono abilitate altre lingue, puoi aggiungere una voce simile per ogni lingua. Ad esempio, per l'italiano il codice da inserire sarebbe il seguente. ( _enè sostituito con _it.)

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

Utilizzando questo metodo, "Nessun contenuto di prima pagina è stato ancora creato." verrebbe sostituito in ogni luogo in cui viene utilizzato, non solo nella prima pagina. Tale stringa viene normalmente utilizzata solo nella prima pagina, quando la prima è quella predefinita. Non so se nessun altro modulo utilizza quella stringa, ma prima di sostituire quella stringa con una stringa vuota con $conf['locale_custom_strings_en'][''], verificherei che non ci siano moduli abilitati che la usano (tranne il modulo Node).


A proposito, questo rimuoverà tutti i blocchi esistenti dalla mia homepage? Dovrò rifarli di nuovo? O si libererà solo del messaggio che non desidero?
user12804

La modifica del callback di pagina per una pagina non modifica i blocchi assegnati a quella pagina, quindi la risposta è no a entrambe le domande.
kiamlaluno

Scusa, un'altra domanda. In quale modulo devo inserirlo? Se vuoi mantenere quella prima pagina, ma non vedendo quel messaggio, puoi implementare il seguente hook in un modulo. 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 (' Nessun contenuto di prima pagina è stato ancora creato. ').' </ p > ',' '); }}
user12804

Devi creare un modulo, se non ne hai già creato uno per personalizzare il sito.
kiamlaluno

1

Ho un modello per tutti i nuovi progetti che contiene:

  1. hook_menu () per effettuare una nuova richiamata del menu per un percorso generico come "home"
  2. Il callback della pagina per "home" che restituisce una stringa con uno spazio al suo interno '' (perché Omega cerca di essere "intelligente" se si restituisce una stringa vuota)
  3. Un'esportazione strongarm che imposta l'homepage del sito sul mio URL "home"

Questo è tutto, non ho più a che fare con la pagina del nodo predefinito whacky.


Perché esportare e non solo impostare in hook_enable () variabile_set ('site_frontpage', 'home'); solo una nota
Pan Chrono

1

Questo è un frammento interessante per sbarazzarsi di questo errore senza confondere con altri contenuti collocati nell'area Contenuto . Questo nasconderà solo questo errore e mostrerà normalmente gli altri contenuti.

Questo frammento è pubblicato in Rimuovi il "Nessun contenuto di prima pagina è stato ancora creato." nell'installazione predefinita di 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

aggancia il tuo page.tpl.php alla pagina - front.tpl.php e fai quello che vuoi goditi l'aggancio :-)


Grazie per quello Come "aggancio" quei due modelli? Questo si libererà del "Nessun contenuto di prima pagina è stato ancora creato." testo sulla homepage?
user12804

non è necessario agganciare entrambi i modelli, basta seguire questi passaggi:
Somik,

1) copia il contenuto totale di page.tpl.php sul tuo front.tpl agganciato 2) quindi per controllare scrivi il tuo nome o il mio nome in alto e aggiorna la tua casa 3) ancora se non riesci a trovare la configurazione del tuo nome-> performance-> cancella pagina principale di tutti gli aggiornamenti della cache
Somik

2
Se sono abilitati più temi, preferirei non seguire questo metodo.
kiamlaluno

0

Non sono sicuro che ci sia un modo per farlo dall'interfaccia di amministrazione di Drupal.

Un modo per ottenere ciò, di cui sono a conoscenza, è quello di aggiungere una ifdichiarazione alla tua page.tpl.php. Trova una linea come:

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

... e cambiarlo in:

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

Fondamentalmente questo stamperà il contenuto della pagina principale su tutte le pagine che non sono la prima pagina. Ma questo potrebbe lasciarti con un buco nel mezzo della tua pagina.

Dopo aver commentato il contenuto sul tema Bartik.

Quindi, potresti fare bene ad apportare alcune altre modifiche al tuo page.tpl.phpe forse includere più tag dei contenitori circostanti. Ulteriore modifica del tamplate, mettendo l'intestazione sopra la prima barra laterale per la home page:

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

... e spostando la iffrase iniziale e inserendola nel contenitore del contenuto:

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

... ha prodotto i seguenti risultati:

Rimosso il contenuto e mantenuto l'intestazione.


Questo è troppo eccessivo: non è necessario rimuovere tutto il contenuto di $page['content'].
kiamlaluno

Cosa suggeriresti invece?
user12804


0

Non so perché voi ragazzi la compliciate così tanto. (beh non so se i modi di abd funzionano, ma nel caso in cui non funzionasse, usa la soluzione qui sotto.

in page.tpl.php devi trovare questa parte del codice:

(beh, ho questo è il mio tema adattivo 7x-3.2)

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

Tutto quello che devi fare è cancellarlo! Tutte le linee.

Questa parte di php dice semplicemente:

Se esiste "titolo", stampalo nella dimensione del carattere H1. È stampato sul sito Web nell'area in cui è scritto il codice. Nel caso del tema adattivo si trova nell'area dell'intestazione.

Se non hai page.tpl.php nel tuo sottotema, devi trovarlo nel tema principale, quindi copiarlo nella stessa posizione del tema principale, nel tuo sottotema.

In AT è /templates/page.tpl.php

significa che nel sottotema del tema Adaptive devi creare una cartella denominata "template" e quindi copiarvi page.tpl.php e quindi eliminare la parte del codice sopra menzionata.

È importante non apportare modifiche al tema Core!


0

Inserisci questo codice in page.tpl.php

if(drupal_is_front_page()) {

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

}

O

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

Nella pagina - front.tpl.php


0

è possibile utilizzare String Overrides Module String Overrides per la sostituzione

"Nessun contenuto di prima pagina è stato ancora creato nella prima pagina" a ""


0

Meglio realizzare questo lavoro è disinserito $page['content']['system_main']['default_message']in hook_preprocess_theme o nel page.tpl.phpo page--front.tpl.php.

trova

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

e sostituisci con il codice seguente.

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

O

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

Godere!!


0

In Drupal 8, lo stesso "Nessun contenuto di prima pagina è stato ancora creato." viene mostrato anche, ad es. subito dopo aver creato un nuovo sito e aver visitato la sua prima pagina (homepage). Ma le cose sono state semplificate se si desidera sostituirlo o rimuoverlo ... Tutto ciò che serve è così:

  • Navigare verso /admin/structure/views/view/frontpage (per modificare la vista denominata "Frontpage").
  • All'interno di "Nessun comportamento sui risultati", utilizzare il collegamento "Globale: testo non filtrato" per modificarlo. Cambia il messaggio (= "Non è stato ancora creato il contenuto della prima pagina.") Nel modo che preferisci, oppure rimuovilo completamente.
  • Non dimenticare di salvare le modifiche.

Per verificare le modifiche, passare alla prima pagina. Se necessario, ripetere i passaggi precedenti per ottimizzare ulteriormente il messaggio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.