Drupalサイトのブレッドクラムを計算するDrupalモジュール( Crumbs )を管理しています。
これらを使用して、パンくずリストをSEOフレンドリーにします。 schema.orgのメタデータセマンティックマークアップ。どのテーマがアクティブであっても、これはすべてのサイトで自動的に機能することが理想です。
一方、パンくずリストのHTMLをオーバーライドするテーマや、CSSでパンくずリストのHTMLをターゲットとするテーマには干渉しません。
これは、私が対立していることを意味します。モジュールがHTMLを制御するか、テーマが制御しますが、両方とも困難です。
だから私は回避策を考えました:モジュールによって生成された「display:none;」のSEO最適化されたブレッドクラムを隠し、(モジュールの構造化データに基づいて)テーマによってHTMLが生成されるブレッドクラムを目にします。
非表示のSEO最適化ブレッドクラムと可視の非SEO最適化ブレッドクラムがある場合、SEOへの影響は減少しますか?
Afaik、唯一の本当の効果はパンくずリストを検索結果に表示することです。その場合、すべてが良いですか?
Schema.orgページ http://schema.org/BreadcrumbList は、Microdata、RDFa、およびJSON-LDについて言及しています。当然、JSON-LDのバリエーションには出力がありません。したがって、おそらくこれが自然なフィットでしょうか。
モジュールは、ブレッドクラムメタデータにjson-ldを使用するようになりました。
3つの構文はすべて、非表示の構造化データを提供することを可能にします。
script
要素はデフォルトで非表示になっています。link
/meta
要素を使用できます(これらはグループ化が必要な場合は、body
+無意味なdiv
/span
要素でデフォルトで非表示になります。パンくずリストのマークアップを非表示にしても、SEOにはほとんど影響しません。これは、非表示の重複したブレッドクラムは、ページにも表示されないコンテンツを提供しないためです。
Drupalモジュールの場合、ベストプラクティスは構文RDFaを使用することです。
サポートはD7およびD8のDrupalコアの一部です( RDFモジュール 、 RDFマッピングAPI )
モジュールは、バンドルのデータとメタデータのRDFクラスとプロパティへのマッピングを提供できます。このモジュールは、これらのマッピングをテーマ関数およびテンプレートで使用可能な変数に注入します。すべてのDrupalコアテーマは、RDFaと互換性があるようにコーディングされています。
モジュールでRDF Mapping APIを使用する場合、テンプレートにRDFaの種類は表示されず、作業に使用される一般的なDrupal属性のみが表示されると思いますその他のテンプレートファイル( rdf_rdfa_attributes )
通常、この配列は
Drupal\Core\Template\Attribute
を介して渡され、テンプレートファイルで使用できる属性変数を作成します。これらには、$attributes
、$title_attributes
、$content_attributes
、およびフィールド固有の$item_attributes
変数が含まれます。
構造化データに興味がある場合、RDFaを学習する可能性が高いのは、それがDrupalがすぐにサポートするためです。何らかの方法で構造化データを操作し、別の構文を使用する場合は、モジュールのためだけに別の構文を学習する必要があります。
別の構文を使用すると、Microdata/JSON-LDをDrupalによって生成されたRDFaと統合することが難しくなります。
たとえば、BreadcrumbList
(JSON-LDまたはMicrodataの)アイテムを WebPage
プロパティでbreadcrumb
アイテム(RDFaのDrupalで生成)に追加するには、property
のリストをネストできませんWebPage
の下の属性。代わりに、BreadcrumbList
のURIを生成する必要があり(一意であること、つまり他の方法でサイト所有者が使用していないことを確認する)、このURIをbreadcrumb
のWebPage
プロパティの値として参照する必要があります(したがって、とにかくRDFaを使用します)。
サイトの所有者が自分のサイトでJSON-LDを出力したい場合、RDFa全体をJSON-LDに簡単に変換できます。ただし、JSON-LDを既存のマークアップを使用するRDFaに変換することはできません。マークアップからそのコンテンツへの接続はJSON-LDではキャプチャされないためです。