Wie kann ich einer Seite ein nicht entkoppeltes Skript-Tag und Inhalte hinzufügen?

7

Ich möchte meinen Seiten die strukturierten Daten in JSON-LD hinzufügen ( https://developers.google.com/search/docs/guides/intro-structured-data ).

Grundsätzlich muss ich irgendwo im HTML-Code eine einfache Seite hinzufügen, beispielsweise einen Ausschnitt wie den folgenden:

<script type="application/ld+json">
{  "@context":"http://schema.org",
   "@type":"WebSite",
   "name":"Site name",
   "alternateName":"Site alternatime name",
   "description":"Site description",
   "keywords":"list of keyword",
   "inLanguage":"en",
   "url":"http://www.example.eu/en",
   "potentialAction":{
   "@type":"SearchAction",
   "target":"http://www.example.com/en/find/{search_term_string}",
   "query-input":"required name=search_term_string"
   }
}
</script>

Ich habe versucht, die vollständige HTML-Eingabe zu verwenden, aber das Snippet wird mit der CDATA (irgendwie) maskiert und Google kann es nicht analysieren.

Wie kann ich dieses Snippet bereitstellen, ohne dass es entkommt?

user3535189
quelle
Ist Ihnen bekannt, dass Drupal 8 RDFa-Unterstützung (eine Alternative zu JSON-LD) bietet? Siehe zB rdfui
unor
1
Willkommen bei Drupal Answers! Haben Sie eine spezifischere Frage, die nicht lautet ? Haben Sie Vorschläge? Diese Seite ist nicht für Vorschläge gedacht, sondern um klar definierte Fragen mit einer endgültigen Antwort zu beantworten.
Kiamlaluno
Meine spezielle Frage lautet: Ich muss dem HTML-Code der Seite (sagen wir die Basisseite) das oben bereitgestellte Snippet hinzufügen. Ich habe versucht, die vollständige HTML-Eingabe zu verwenden, aber das Snippet wird mit der CDATA (irgendwie) maskiert und Google kann es nicht analysieren. Wie kann ich dieses Snippet bereitstellen, ohne dass es entkommt?
Benutzer3535189
Ich denke, dass RDFa in gewisser Weise eine alte Methode zur Bereitstellung semantischer Metadaten über eine Website ist und durch strukturierte JSON-LD-Daten ersetzt wird. Jetzt drängt Google auf JSON-LD, wie Sie hier sehen können: developer.google.com/search/docs/guides/intro-structured-da‌ ta.
user3535189
1
Es gibt ein Sandbox-Modul für D8 JSON-LD (D8-Kern) . Da es sich um ein Sandbox-Projekt handelt, ist es nicht ratsam, es in der Produktion zu verwenden, da es nicht ordnungsgemäß getestet wurde. Aber Sie können es sich ansehen und es vor Ort versuchen, wenn es funktioniert. Sie können den Modulcode hier herunterladen . Wenn Sie daran interessiert sind, können Sie den Modulbesitzer auch bitten, Sie als Betreuer hinzuzufügen, damit Sie die Arbeit fortsetzen und das Modul vollständig und stabil machen können.
Yogesh

Antworten:

3

Hier ist eine einfache Möglichkeit, dies ohne zusätzliche Module zu tun. In diesem Beispiel füge ich dieses Feld dem Basic pageInhaltstyp hinzu, der mit dem StandardInstallationsprofil geliefert wird.

Lassen Sie uns zunächst ein neues Textformat erstellen. Gehen Sie zu admin/config/content/formatsund klicken Sie Add text format. Ich nenne das Textformat JSON-LD und stelle es nur Administratoren zur Verfügung. Achten Sie darauf , alle Optionen leer und Set zu verlassen , Text editorum None, etwa so:

Schritt 1

Fügen wir dann dem Basic pageInhaltstyp ein neues Feld hinzu . Gehen Sie zu admin/structure/types/manage/page/fields/add-fieldund wählen Sie Text (formatted, long). Ich benenne das Feld JSON-LD mit einem automatischen Maschinennamen von field_json_ld.

Schritt 2

Stellen wir dann sicher, dass wir die Beschriftung des Feldes ausblenden. Gehen Sie zu admin/structure/types/manage/page/displayund stellen Sie sicher, dass das Label für unser neues JSON-LD- Feld - Hidden -wie folgt festgelegt ist:

Schritt 3

Jetzt ist es Zeit, das Skript einer neuen Seite hinzuzufügen. Gehen Sie zu node/add/pageund füllen Sie den Titel und den Text aus, wie Sie möchten. Hier ist das Wichtige: Stellen Sie für den JSON-LD- Textbereich Folgendes Text formatauf JSON-LD ein :

Schritt 4

Klicken Sie nun auf Save and publish. Ihr Knoten sieht folgendermaßen aus:

Schritt 5

Nichts besonderes, oder? Schauen wir uns nun unseren Quellcode an:

Schritt 6

Bingo!

Wim Mostrey
quelle
Hallo, ich bin hier etwas verwirrt. Lassen Sie uns zunächst verstehen, was der Zweck dieses Skripts ist. Aus seinem Inhalt und aus JSON-LD-Wörtern sieht es so aus, als müsste es von Suchmaschinenbooten erkannt werden. Daher muss es im Abschnitt <head> </ head> der Site vorhanden sein. Bitte korrigieren Sie mich, wenn ich falsch liege. Danke
CodeNext
@CodeNext: Ja, es sollte sich innerhalb des Head-Tags befinden. Aber ich habe bemerkt, dass Google es liest, auch wenn es im Körper platziert ist. Gibt es eine Möglichkeit, benutzerdefiniertes HTML in das Head-Tag einzufügen?
Benutzer3535189
@ user3535189 Wenn Sie die Möglichkeit benötigen, diesen Teil hinzuzufügen, lesen Sie bitte meine Antwort HIER . Ich habe alle Möglichkeiten zum Hinzufügen von Code in <head> </ head> zusammengestellt. Ich hoffe, es wird helfen.
CodeNext
@CodeNext Vielen Dank für Ihren Vorschlag, es ist gut für so etwas wie ein Meta-Tag für die gesamte Website. Aber ich habe etwas Klügeres gesucht, ich meine, wenn ich 20 Seiten habe, sollte jede Seite ein anderes "JSON-LD" -Schnipsel haben. Also brauche ich wahrscheinlich ein Textfeld wie das von Wim erklärte, das dann im "head2" anstelle des "body" -Tags platziert wird.
user3535189
@ user3535189, Hhmmm, in diesem Fall ist dies angemessen. Bitte lassen Sie mich nach dem Testen auf Ihrer Live-Site wissen, ob Google dieses Snippet auf diese Weise identifiziert. Ich muss Kopfgeld für diese Antwort belohnen, wenn Sie als Antwort akzeptieren. Thx
CodeNext
1

Das standardmäßige vollständige HTML-Format verwendet CKEditor, das eine eigene Textfilterung durchführt und wahrscheinlich Ihre Probleme verursacht. Sie können den erweiterten Inhaltsfilter von CKEditor deaktivieren. Ich würde jedoch empfehlen, ein neues Textformat ohne Filterung und ohne Texteditor zu erstellen. Erstellen Sie dann ein neues Langtextfeld für den Inhaltstyp Ihrer Seite und legen Sie das neue Textformat als Standard fest.

Sie sollten in der Lage sein, alle benötigten Skripte in das neue Feld einzufügen.

Wille
quelle
-2

Wenn Sie das Skript zum Editor hinzufügen möchten, verwenden Sie den PHP-Codefilter anstelle des vollständigen HTML-Codes (PHP-Modul in Drupal 8) und fügen Sie dann Ihr Snippet hinzu. Es wird gut funktionieren. Hoffe, es löst Ihr Problem. Siehe beigefügte Screenshots:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Karuna
quelle
Dies könnte ein Weg sein, aber ich denke, dass Wims Antwort besser ist.
Benutzer3535189
Ja sicher, aber auf diese Weise muss das neue Textformat nicht hinzugefügt werden.
Karuna
-3

verwenden :

<pre> <code> your codes here </code> </pre>.

Auf diese Weise rendern alle Websites jede Art von Code in HTML.

und auf diese Weise schreiben Sie Code in Code-Tag, ich denke, Code wird nicht entkommen.

bhupendraosd
quelle
2
Swing, aber ein Miss :) Das OP möchte das Skript nicht in Pre-Tags anzeigen, sondern das Skript in eine normale Seite einfügen, ohne dass Drupal eine XSS-Filterung durchführt
Clive