将微数据(对于 Schema.org VideoObject)添加到我的 Django 应用程序中的页面的正确方法是什么?
What's the proper way to add Microdata (for Schema.org VideoObject) to a page in my Django app?
我正在按照 Google 上的说明进行操作,上面写着
Add schema.org markup directly to the HTML of your video page. The markup will not be visible to users and will not affect how your page looks
所以我在我的视频顶部添加了以下内容html
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<h2>Video: <span itemprop="name">Title</span></h2>
<meta itemprop="duration" content="T1M33S" />
<meta itemprop="thumbnailUrl" content="thumbnail.jpg" />
<meta itemprop="contentURL" content="http://www.example.com/video123.flv" />
<meta itemprop="embedURL" content="http://www.example.com/videoplayer.swf?video=123" />
<meta itemprop="uploadDate" content="2011-07-05T08:00:00+08:00" />
<meta itemprop="expires" content="2012-01-30T19:00:00+08:00" />
<meta itemprop="height" content="400" />
<meta itemprop="width" content="400" />
<object ...>
<param ...>
<embed type="application/x-shockwave-flash" ...>
</object>
<span itemprop="description">Video description</span>
</div>
当我这样做的时候,我看到了一个白色的方块,上面有标题这个词。我看到了,说明上说我不会。我错过了什么吗?执行此操作的正确方法是什么?
编辑:我正在使用 Django,这是我的代码
{% block content %}
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<meta itemprop="duration" content="T1M33S" />
<meta itemprop="thumbnailUrl" content="thumbnail.jpg" />
<meta itemprop="contentURL" content="http://www.example.com/video123.flv" />
<meta itemprop="embedURL" content="http://www.example.com/videoplayer.swf?video=123" />
<meta itemprop="uploadDate" content="2011-07-05T08:00:00+08:00" />
<meta itemprop="expires" content="2012-01-30T19:00:00+08:00" />
<!--<meta itemprop="height" content="400" />-->
<!--<meta itemprop="width" content="400" />-->
<object ...>
<param ...>
<embed type="application/x-shockwave-flash" ...>
</object>
<span itemprop="description">Video description</span>
</div>
<h2 id="detail-h1">
{{ post.title }}
</h2>
{% if post.video %}
<div class="embed-responsive embed-responsive-16by9">
<iframe src="{{post.video_path}}?autoplay=1&autohide=1" class="embed-responsive-item"
frameborder="0" controls="0" allowfullscreen>
</iframe>
</div>
{% else %}
{% if post.image %}
<img src='{{ post.image.url }}' class="img-responsive" width="730px" height="500"/>
{% elif post.image_url %}
<img src="{{post.image_url}}" class="img-responsive">
{% else %}
<p>upload an image</p>
{% endif %}
{% endif %}
<div style="margin-top: 10px; background: white; padding: 10px 10px 10px 10px;">
<span>
<p style="float: left">
{% if post.author %}
Author: {{post.author}}
{% endif %}
</p>
<p style="float: right" id="pub">
{%if post.draft %}<span id="draft">Draft </span>{% endif %} Publicado: {{ post.publish|date }}
</p>
</span>
<p class="tags" style="clear: both">Tags:
{% for tag in post.tags.all %}
<a href="{% url 'blog:post_list_by_tag' tag.slug %}">
{{ tag.name }}
</a>
{% if not forloop.last %}, {% endif %}
{% endfor %}
</p>
Adding VideoObject to a video page 上引用的文字(或示例)具有误导性(或错误)。
这是有意且正确的
<h2>Video: <span itemprop="name">Title</span></h2>
<span itemprop="description">Video description</span>
显示 "Video: Title" 和 "Video description"。
如果您不想显示它,请使用 meta
元素代替:
<meta itemprop="name" content="Title" />
<meta itemprop="description" content="Video description" />
但如果可能的话,当然最好使用现有标记而不是添加 meta
/link
重复内容的元素。
如果那不可能,就真的没有理由使用 Microdata,您可能想改用 JSON-LD(Google’s Video Rich Snippet 似乎也支持)。
顺便说一句,Google的例子有三个错误:如果值为URL,meta
元素的link
element must be used instead。所以应该是:
<link itemprop="thumbnailUrl" href="thumbnail.jpg" />
<link itemprop="contentURL" href="http://www.example.com/video123.flv" />
<link itemprop="embedURL" href="http://www.example.com/videoplayer.swf?video=123" />
我正在按照 Google 上的说明进行操作,上面写着
Add schema.org markup directly to the HTML of your video page. The markup will not be visible to users and will not affect how your page looks
所以我在我的视频顶部添加了以下内容html
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<h2>Video: <span itemprop="name">Title</span></h2>
<meta itemprop="duration" content="T1M33S" />
<meta itemprop="thumbnailUrl" content="thumbnail.jpg" />
<meta itemprop="contentURL" content="http://www.example.com/video123.flv" />
<meta itemprop="embedURL" content="http://www.example.com/videoplayer.swf?video=123" />
<meta itemprop="uploadDate" content="2011-07-05T08:00:00+08:00" />
<meta itemprop="expires" content="2012-01-30T19:00:00+08:00" />
<meta itemprop="height" content="400" />
<meta itemprop="width" content="400" />
<object ...>
<param ...>
<embed type="application/x-shockwave-flash" ...>
</object>
<span itemprop="description">Video description</span>
</div>
当我这样做的时候,我看到了一个白色的方块,上面有标题这个词。我看到了,说明上说我不会。我错过了什么吗?执行此操作的正确方法是什么?
编辑:我正在使用 Django,这是我的代码
{% block content %}
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
<meta itemprop="duration" content="T1M33S" />
<meta itemprop="thumbnailUrl" content="thumbnail.jpg" />
<meta itemprop="contentURL" content="http://www.example.com/video123.flv" />
<meta itemprop="embedURL" content="http://www.example.com/videoplayer.swf?video=123" />
<meta itemprop="uploadDate" content="2011-07-05T08:00:00+08:00" />
<meta itemprop="expires" content="2012-01-30T19:00:00+08:00" />
<!--<meta itemprop="height" content="400" />-->
<!--<meta itemprop="width" content="400" />-->
<object ...>
<param ...>
<embed type="application/x-shockwave-flash" ...>
</object>
<span itemprop="description">Video description</span>
</div>
<h2 id="detail-h1">
{{ post.title }}
</h2>
{% if post.video %}
<div class="embed-responsive embed-responsive-16by9">
<iframe src="{{post.video_path}}?autoplay=1&autohide=1" class="embed-responsive-item"
frameborder="0" controls="0" allowfullscreen>
</iframe>
</div>
{% else %}
{% if post.image %}
<img src='{{ post.image.url }}' class="img-responsive" width="730px" height="500"/>
{% elif post.image_url %}
<img src="{{post.image_url}}" class="img-responsive">
{% else %}
<p>upload an image</p>
{% endif %}
{% endif %}
<div style="margin-top: 10px; background: white; padding: 10px 10px 10px 10px;">
<span>
<p style="float: left">
{% if post.author %}
Author: {{post.author}}
{% endif %}
</p>
<p style="float: right" id="pub">
{%if post.draft %}<span id="draft">Draft </span>{% endif %} Publicado: {{ post.publish|date }}
</p>
</span>
<p class="tags" style="clear: both">Tags:
{% for tag in post.tags.all %}
<a href="{% url 'blog:post_list_by_tag' tag.slug %}">
{{ tag.name }}
</a>
{% if not forloop.last %}, {% endif %}
{% endfor %}
</p>
Adding VideoObject to a video page 上引用的文字(或示例)具有误导性(或错误)。
这是有意且正确的
<h2>Video: <span itemprop="name">Title</span></h2>
<span itemprop="description">Video description</span>
显示 "Video: Title" 和 "Video description"。
如果您不想显示它,请使用 meta
元素代替:
<meta itemprop="name" content="Title" />
<meta itemprop="description" content="Video description" />
但如果可能的话,当然最好使用现有标记而不是添加 meta
/link
重复内容的元素。
如果那不可能,就真的没有理由使用 Microdata,您可能想改用 JSON-LD(Google’s Video Rich Snippet 似乎也支持)。
顺便说一句,Google的例子有三个错误:如果值为URL,meta
元素的link
element must be used instead。所以应该是:
<link itemprop="thumbnailUrl" href="thumbnail.jpg" />
<link itemprop="contentURL" href="http://www.example.com/video123.flv" />
<link itemprop="embedURL" href="http://www.example.com/videoplayer.swf?video=123" />