¿Cómo eliminar el mensaje "Todavía no se ha creado contenido de la página principal" de la página principal?

14

Solo quiero bloques en la página de inicio. Debido a que no tengo ningún nodo, y quiero mantener la página de inicio como / node obtengo el mensaje "Todavía no se ha creado el contenido de la página principal". mensaje en mi página

¿Cómo puedo evitar esto?

usuario12804
fuente

Respuestas:

13

¿Quién lo hubiera adivinado? Hay un módulo para eso. Consulte el módulo Página frontal vacía . Con solo 10 líneas de código, debe ser uno de los módulos más simples que existen.

marcvangend
fuente
Como nota al margen, este módulo eliminará también el enlace "Agregar nuevo contenido" que no es necesario, si el sitio no va a tener nodos.
kiamlaluno
2
¡¡Cuidado!! No necesita agregar módulos para pequeños cambios: puede anular su archivo de plantilla y agregar el siguiente código: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
55
¿Cuidado? ¿Es peligroso agregar módulos hoy en día? De hecho, sería más cuidadoso al poner cosas como esta en su tema. Puede hacerse la pregunta "Si alguna vez elegiría otro tema, ¿debería permanecer este cambio?" Si la respuesta es sí, no pertenece a su tema.
marcvangend
@HimanshuPathak Probablemente sea mejor evitar agregar código a un tema solo porque es más fácil, especialmente cuando el comportamiento no depende de un tema (lo que significa que el código que está agregando a un tema debe agregarse a cada tema).
kiamlaluno
Gracias, en ese caso tenemos que reemplazar MYTHEMEpor MYMODULEderecho?
Himanshu Pathak
9

Puede hacer esto en el archivo de plantilla de su 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)
  }
}
Himanshu Pathak
fuente
¿Funciona para drupal8?
Guru
aunque no lo he intentado y supongo que no
Himanshu Pathak
No agregaría código en un tema para algo que quiero independientemente del tema que uso para un sitio.
kiamlaluno
2

Una solución rápida de CSS para ocultar el "mensaje sin contenido" es simplemente agregando la siguiente línea en su archivo CSS:

 #first-time {display:none;}
xaa
fuente
1
Esto es algo peligroso de hacer. Aparece en los resultados de Google;)
Tomáš Fejfar
Estoy de acuerdo contigo. Esta no es la mejor solución. Esta es una solución alternativa. nada mas.
xaa
1

El mensaje "No se ha creado aún el contenido de la página principal". se muestra en la página de devolución de llamada de la página que está utilizando como portada, node_page_default () , que contiene el siguiente código.

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

    // …
  }

Es simplemente salida porque el sitio no tiene nodos; el mensaje no está relacionado con la página principal que tiene (o no tiene) bloques.

Si desea mantener esa página principal, pero no ve ese mensaje, puede implementar el siguiente enlace en un módulo.

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>', '');
  }
}

La otra alternativa sería agregar el siguiente código al final del archivo settings.php.

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

Si tiene otros idiomas habilitados en su sitio web, puede agregar una entrada similar para cada idioma. Por ejemplo, para el italiano, el código para ingresar sería el siguiente. ( _ense reemplaza por _it)

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

Usando este método, "Todavía no se ha creado contenido de portada". sería reemplazado en todos los lugares donde se usa, no solo en la portada. Esa cadena normalmente se usa solo en la página principal, cuando la página principal es la predeterminada. No sé si algún otro módulo usa esa cadena, pero antes de reemplazar esa cadena con una cadena vacía $conf['locale_custom_strings_en'][''], verificaría que no haya módulos habilitados que la usen (excepto el módulo Node).

kiamlaluno
fuente
Por cierto, ¿esto eliminará todos los bloques existentes de mi página de inicio? ¿Tendré que rehacerlos nuevamente? ¿O solo eliminará el mensaje que no quiero?
user12804
Cambiar la devolución de llamada de una página no cambia los bloques asignados a esa página, por lo que la respuesta es no a ambas preguntas.
kiamlaluno
Lo siento, otra pregunta. ¿En qué módulo debo poner esto? Si desea mantener esa página principal, pero no ve ese mensaje, puede implementar el siguiente enlace en un módulo. 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 se ha creado aún el contenido de la portada. ').' </ p > ',' '); }}
usuario12804
Necesita crear un módulo, si aún no lo ha hecho para personalizar el sitio.
kiamlaluno
1

Tengo una plantilla para todos los proyectos nuevos que contiene:

  1. hook_menu () para hacer una nueva devolución de llamada de menú para una ruta genérica como "inicio"
  2. La devolución de llamada de la página para "inicio" que devuelve una cadena con un espacio en ella '' (porque Omega intenta ser "inteligente" si devuelve una cadena vacía)
  3. Una exportación de Strongarm que establece la página de inicio del sitio en mi url "home"

Eso es todo, no tengo que lidiar con la página de nodo por defecto nunca más.

David Meister
fuente
¿Por qué exporta y no solo establece en su hook_enable () variable_set ('site_frontpage', 'home'); solo una nota
Pan Chrono
1

Este es un fragmento interesante para deshacerse de este error sin confundirlo con otros contenidos ubicados en la región de Contenido . Esto solo ocultará este error y mostrará los demás contenidos normalmente.

Este fragmento se publica en Eliminar "Todavía no se ha creado contenido de la página principal". en la instalación predeterminada 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
fuente
0

enganche su page.tpl.php a la página - front.tpl.php y haga lo que quiera disfrutar enganchando :-)

Somik
fuente
Gracias por eso. ¿Cómo "engancho" esas dos plantillas? ¿Esto eliminará el "No se ha creado aún el contenido de la portada". texto en la página de inicio?
user12804
no es necesario conectar ambas plantillas solo siga estos pasos:
Somik
1) copie el contenido total de page.tpl.php en su front.tpl enganchado 2) luego, para verificar, escriba su nombre o mi nombre en la parte superior y actualice su hogar 3) aún si no puede encontrar la configuración de su nombre-> rendimiento-> borrar portada de actualización de todo el caché
Somik
2
Si hay más de un tema habilitado, prefiero no seguir este método.
kiamlaluno
0

No estoy seguro de si hay una manera de hacerlo desde la interfaz de administración de Drupal.

Una forma de lograr esto, que yo sepa, es agregar una ifdeclaración a su page.tpl.php. Encuentra una línea como:

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

... y cámbielo a:

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

Básicamente, se imprimirá el contenido de la página principal en todas las páginas que no sean la página principal. Pero, esto podría dejarlo con un agujero enorme en el medio de su página.

Después de comentar el contenido sobre el tema de Bartik.

Por lo tanto, puede hacer algunos otros ajustes a su page.tpl.phpy tal vez abarcar más de las etiquetas de contenedor circundantes. Alterando aún más el tamplate, colocando el encabezado sobre la primera barra lateral de la página de inicio:

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

... y moviendo la ifdeclaración inicial y colocándola dentro del contenedor de contenido:

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

... arrojó los siguientes resultados:

Eliminó el contenido y mantuvo el encabezado.

Batandwa
fuente
Esto es demasiado excesivo: no es necesario eliminar todo el contenido de $page['content'].
kiamlaluno
¿Qué sugerirías en su lugar?
usuario12804
Prefiero seguir con la sugerencia de Marcvangend .
kiamlaluno
0

No sé por qué lo complican tanto. (bueno, no sé si las formas de abd funcionan, pero en caso de que no funcionó, use la solución a continuación.

en page.tpl.php tienes que encontrar esta parte del código:

(bueno, este es el mío Adaptive Theme 7x-3.2)

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

¡Todo lo que tienes que hacer es eliminarlo! Todas las lineas.

Esta parte de php simplemente dice:

Si existe "título", imprímalo en tamaño de fuente H1. Está impreso en el sitio web en el área donde está escrito el código. En el caso del tema adaptativo, está en el área de encabezado.

Si no tiene page.tpl.php en su subtema, debe encontrarlo en el tema central y luego copiarlo en la misma ubicación que el tema central, en su subtema.

En AT es /templates/page.tpl.php

significa que en su subtema de tema adaptativo debe crear una carpeta llamada "plantillas" y luego copiar allí page.tpl.php y luego eliminar la parte del código mencionado anteriormente.

¡Es importante que no realice ningún cambio en el tema Core!

EmilSamson
fuente
0

Coloque este código en page.tpl.php

if(drupal_is_front_page()) {

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

}

O

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

En la página - front.tpl.php

Paulson Peter
fuente
0

puede usar String Overrides Module String Overrides para reemplazar

"Todavía no se ha creado contenido de primera página en la primera página" a ""

Kamal Oberoi
fuente
0

Es mejor lograr este trabajo $page['content']['system_main']['default_message']en hook_preprocess_theme o en el page.tpl.phpo page--front.tpl.php.

encontrar

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

y reemplazar con el siguiente código.

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

¡¡Disfrutar!!

Yusef
fuente
0

En Drupal 8, el mismo "Todavía no se ha creado contenido de primera página". también se muestra, por ejemplo, justo después de crear un nuevo sitio y visitar su página principal (página de inicio). Pero las cosas se han simplificado si desea reemplazarlo o eliminarlo ... Todo lo que se necesita es así:

  • Navegue hasta /admin/structure/views/view/frontpage(para editar la vista denominada "Portada").
  • Dentro de "Comportamiento sin resultados", utilice el enlace "Global: texto sin filtrar" para editarlo. Cambie el mensaje (= "Todavía no se ha creado contenido de la página principal") a lo que desee, o simplemente elimínelo por completo.
  • No olvides guardar los cambios.

Para verificar sus cambios, vaya a la página principal. Si es necesario, repita los pasos anteriores para ajustar aún más el mensaje.

Pierre.Vriens
fuente