django - 将微数据(用于 Schema.org VideoObject)添加到我的 Django 应用程序中的页面的正确方法是什么?

标签 django html schema.org microdata google-rich-snippets

我正在按照 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>

当我这样做的时候,我看到了一个白色的方 block ,上面有标题这个词。我看到了,说明上说我不会。我错过了什么吗?执行此操作的正确方法是什么?

编辑:我正在使用 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>

显示“视频:标题”和“视频描述”。

如果您不想显示它,请使用 meta 元素代替:

<meta itemprop="name" content="Title" />
<meta itemprop="description" content="Video description" />

但如果可能的话,当然最好使用您现有的标记,而不是添加复制内容的 meta/link 元素。

如果那不可能,就真的没有理由使用微数据,您可能想改用 JSON-LD(Google’s Video Rich Snippet 似乎也支持它)。


顺便说一句,谷歌的例子有三个错误:如果值是一个 URL,link element must be used instead meta 元素。所以应该是:

<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" />

关于django - 将微数据(用于 Schema.org VideoObject)添加到我的 Django 应用程序中的页面的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095264/

相关文章:

python - 无法在 Django 模板 html 中使用过滤器

python - Django 中的 setup_environ

python - Django Iframe Safari 修复

javascript - 在javascript中得到错误的总数

javascript - Jquery Datatable 主题隐藏页眉/页脚 balk

javascript - jQuery Masonry 插件 - 在父容器外部渲染元素

schema.org - 为什么 "availability"属性指向 schema.org 上的页面?

python - Django:数据导入脚本的标准位置/约定?

html - 可以有未定义的项目范围,还是我应该从可用模式中选择?

saas - SaaS 或订阅是否有 Schema.org 类型?