wake-up-neo.com

Werden meine dynamisch erstellten Inhalte in Suchmaschinen auf den Registerkarten Bootstrap angezeigt?

Ich habe eine Seite index.php mit 3 Bootstrap Registerkarten darin, und für jede Registerkarte erstelle ich den Inhalt, nachdem der Benutzer darauf geklickt hat.
Beispielsweise:

  • wenn die Seite geladen wird, führe ich eine SQL-Abfrage aus, die nur für die erste Registerkarte Daten aus der Datenbank abruft.
  • wenn der Benutzer auf die zweite Registerkarte klickt, wird eine Abfrage ausgeführt, die Daten aufnimmt und in der ausgewählten Registerkarte anzeigt.

Ist das ein guter Ansatz? Wird Google all diese Daten auch sehen, wenn es die Seite mit all diesen Registerkarten indiziert? Ich möchte aus Performance-Gründen nicht alle Daten auf einmal abrufen.

Hier ist mein Beispielcode. Bitte sagen Sie mir, ob dies ein guter Ansatz ist:

index.php Datei:

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

Ich befürchte, dass Suchmaschinen den Inhalt der zweiten und dritten Registerkarte nicht sehen. Oder sie werden sie zumindest nicht mit der index.php Seite in Verbindung bringen. Liege ich falsch?

57
offline

Nein, wir (Google) sehen den Inhalt hinter Registerkarten nicht, wenn der Inhalt unter der Registerkarte dynamisch generiert wird (d. H. Nicht nur ausgeblendet wird).

Sie können auch sehen, was wir "sehen", wenn Sie Fetch als Google in der Suchkonsole (ehemals Webmaster-Tools) verwenden. Weitere Informationen zu dieser Funktion finden Sie in unserem Beitrag mit dem Titel Rendern von Seiten mit Fetch als Google .

102
methode

Der beste Weg ist, die Website so zu gestalten, dass sie ohne Javascript funktioniert. Ersetzen Sie einfach alle Ihre Ankerelemente, die mit Ajax funktionieren, um eine GET-Variable an Ihren Web-Controller zu übergeben, damit er nur den HTML-Code zurückgibt, der mit Javascript eingefügt werden soll.

3
markush

Wenn Sie JS/AJAX verwenden (ich sehe keine, aber ich kann mir keine bessere Alternative vorstellen), wird es Ihnen schwer fallen, Google dazu zu bringen, Ihre Seiten zu indizieren. Google hat eine gute Dokumentation dazu, die mir in der Vergangenheit bei Projekten mit ähnlichen Zielen geholfen hat.

https://developers.google.com/webmasters/ajax-crawling/docs/learn-more

Ist es wirklich so schlimm, den Inhalt erst zu laden, wenn auf die Registerkarte geklickt wird? Wenn Sie nicht mit einer nicht zwischenspeicherbaren Datenbank arbeiten, die ständig aktualisiert wird, und einer massiven HTML-Ausgabe, die einen langen Flash mit nicht gestalteten Inhalten erzeugt, würde ich sagen, dass das Aufteilen des Tab-Ansichtscodes etwas trivial ist.

1
tomfordweb

Vielleicht kann das helfen:

Wenn es sich bei Ihrem Problem um die Leistung handelt, liegt dies möglicherweise an starken DB-Abfragen oder einem gemeinsam genutzten Server. Wenn nicht, ignorieren Sie dies bitte.

Fügen Sie beim Laden der gesamten Seite in jeden Tab einen "falschen" HTML-Code ein. Versuchen Sie, den HTML-Code so zu erstellen, dass er dem tatsächlichen Code entspricht, der beim Klicken auf die einzelnen Registerkarten geladen wird. Legen Sie all dies in einen unsichtbaren DIV. Geben Sie bei jedem Laden der Seite auch einige zufällige Daten ein (möglicherweise eine zufällig generierte Zeichenfolge mit 16 Zeichen). Auf diese Weise wird Google Ihre Daten meines Erachtens häufiger spinnen (dies gilt nicht für statische Inhalte).

Grüße.

0
Gorka Llona