5

現在、microdata と schema.org について少し混乱しています。microdata と schema.org は同じですか? GoogleMicrosoftのドキュメントを読みましたが、この 2 つの名前の違いを理解するのに役立ちませんでした。

これまでのところ、私はこの HTML コードを生成したことを理解しています。

<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
 <a href="/" itemprop="url"><span itemprop="title">My Page</span></a>
</span>
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
 <a href="/cat1" itemprop="url"><span itemprop="title">Category 1</span></a>
</span>
<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
 <a href="/cat1/content" itemprop="url"><span itemprop="title">Content</span></a>
</span>

私の意見では、オーバーヘッドが多すぎますが、検索結果が見栄えが良ければ問題ありません。HTMLコードの数を減らすことはできますか?

また、それが必要ない場合、検索エンジンはどのようにして 2 つの異なるトレイルを検出するのでしょうか?

次の問題は、この形式を drupal のブレッドクラムに適用したいということです。Web でこの修正を見つけ、次のように自分の SEO モジュールに含めようとしました。

function mymod_page_alter(&$variables) {
    if (!isset($variables['breadcrumb'])) {
        $variables['breadcrumb'] = theme('my_microdata', array('breadcrumb' => drupal_get_breadcrumb()));
    }
}
function mymod_theme($existing, $type, $theme, $path) {
  return array(
    'my_microdata' => array(
     'variables' => array('breadcrumb' =>array()),
    ),
  );
}
function mymod_menu_breadcrumb_alter(&$active_trail, $item){
  foreach($active_trail as $id=>$active_trail_item){
    $active_trail[$id]['localized_options']['attributes']['itemprop'][]="url";
  }
}
function theme_my_microdata($variables){
 $breadcrumb=$variables['breadcrumb'];
print_r(debug_backtrace());
 $output="*+*+*+*+*";
  if (!empty($breadcrumb)) {
    // Provide a navigational heading to give context for breadcrumb links to
    // screen-reader users. Make the heading invisible with .element-invisible.
    $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
    $output .= '<div class="breadcrumb">';
    $separator="";
    foreach($breadcrumb as $breadcrumb_item){
      $output.='<span typeof="datav:Breadcrumb">'.$separator.$breadcrumb_item."</span>";
      $separator="»";
    }
    $output .='</div>';
  }

    return $output."xXxXxXx";
}

これまでのところ、このコードがすべて実行されることを確認しました。しかし、このテーマは私のページには適用されません。そのコードが機能しないのはなぜですか? これはモジュールに関連している可能性がありますbreadcrumbか? この出力がガベージになることはわかっていますが、結果が表示されません。

私のコードではなく、 theme.inc行 1682ffによって作成された出力よりも正しいとtheme_breadcrumb(...)思います。

私の質問のすべての答えがわからない場合も、誰かが私を助けてくれるといいですね!

4

1 に答える 1

10

microdata と schema.org は同じですか?

いいえそうではありません!

microdata はWHATWG html 仕様です。コンピュータが文書の内容を読みやすくするためだと思われます。

Schema.org は、アイテムを説明するために使用される語彙です。Schema.org は、Bing、Google、および Yahoo によって導入されました。

http://en.wikipedia.org/wiki/Microdata_(HTML)

http://www.w3.org/TR/html5/microdata.html

http://schema.org/

HTMLコードの数を減らすことはできますか?

WebPage アイテムのマークアップについては、schema.org のサンプル コードを参照してください: http://schema.org/WebPage

<body itemscope itemtype="http://schema.org/WebPage">
...
<div itemprop="breadcrumb">
  <a href="category/books.html">Books</a> >
  <a href="category/books-literature.html">Literature & Fiction</a> >
  <a href="category/books-classics">Classics</a>
</div>

検索エンジンはどのようにして 2 つの異なるトレイルを検出するのですか

代わりに schema.org の上記の例を使用すると、個々のリンクではなくトレイルをマークアップします。2 つのトレイルをマークアップすると、両方とも 2 つの個別のトレイルとして認識されます。(または少なくともそうあるべきです)

そのコードが機能しないのはなぜですか?

この質問はこの投稿とは別にして、別の投稿で質問する必要があると思います。私は drupal に詳しくなく、microdata に関する質問に答えられる人の中には、PHP を知らない人もいます。

于 2012-04-29T15:52:59.277 に答える