Tengo una página index.php
con 3 pestañas Bootstrap en ella, y para cada pestaña estoy generando su contenido después de que el usuario haga clic en ella.
Por ejemplo:
¿Es este buen enfoque? ¿Google también va a ver todos esos datos cuando indexa la página que contiene todas estas pestañas? No quiero extraer todos los datos a la vez debido a problemas de rendimiento.
Aquí está mi código de muestra, así que por favor dígame si este es un buen enfoque:
index.php
file:
<!DOCTYPE html>
<html>
<head>
<title>Tabs demo</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#home">Home</a></li>
<li><a data-toggle="tab" href="#menu1">Menu 1</a></li>
<li><a data-toggle="tab" href="#menu2">Menu 2</a></li>
</ul>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h3>HOME</h3>
<p>Some content.</p>
</div>
<div id="menu1" class="tab-pane fade">
<?php $model = [
0 => ['title' => 'First item', 'content' => 'Some first content'],
1 => ['title' => 'Second item', 'content' => 'Some second content']
]; ?>
<?php foreach ($model as $data): ?>
<h3><?= $data['title'] ?></h3>
<p><?= $data['content'] ?></p>
<?php endforeach ?>
</div>
<div id="menu2" class="tab-pane fade">
<h3>Menu 2</h3>
<p>Some content in menu 2.</p>
</div>
</div>
</div>
<!-- jQuery library -->
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>
Me temo que los motores de búsqueda no verán el contenido de las pestañas segunda y tercera. O al menos no los relacionarán con la página index.php. ¿Me equivoco?
No, nosotros (Google) no veremos el contenido detrás de las pestañas si el contenido debajo de la pestaña se genera dinámicamente (es decir, no solo oculto).
También puede ver lo que "vemos" utilizando Fetch como Google en la Consola de búsqueda (anteriormente, Herramientas para webmasters de Google); lea más sobre la función en nuestra publicación titulada Rendering pages with Fetch as Google .
El mejor enfoque es diseñar el sitio web para que funcione sin javascript y simplemente reemplazar todos los elementos de anclaje que funcionan con ajax para pasar una variable GET a su controlador web, por lo que sabe que solo debe devolver el código html para insertar con javascript.
Si está utilizando JS/AJAX, (realmente no veo ninguno, pero no puedo pensar en una mejor alternativa) le va a resultar difícil conseguir que Google indexe sus páginas. Google tiene una buena documentación sobre esto que me ha ayudado en el pasado en proyectos con objetivos similares.
https://developers.google.com/webmasters/ajax-crawling/docs/learn-more
¿Es realmente una gran cosa no cargar el contenido hasta que se haga clic en la pestaña? A menos que esté trabajando con una base de datos que no se pueda almacenar en caché que se actualiza constantemente y una salida HTML masiva que crearía un largo destello de contenido sin estilo, diría que dividir el código de vista de las pestañas es algo trivial.
Tal vez esto pueda ayudar:
Si su problema es el rendimiento, es posible que tenga consultas de base de datos sólidas o un servidor compartido. Si no, por favor ignora esto.
Al cargar la página completa, coloque un código HTML "falso" en cada pestaña. Intente generar el código HTML con la forma del código real que se carga cuando se hace clic en cada pestaña. Pon todo esto dentro de un DIV invisible. Cada vez que se carga la página, ponga también algunos datos aleatorios (tal vez una cadena generada aleatoriamente de 16 caracteres). De esta manera, creo que Google utilizará sus datos con mayor frecuencia (esto no ocurre con el contenido estático).
Saludos.