0

我以前从未使用过 Rich Snippets,所以这对我来说有点学习曲线。我相信我的问题是嵌套问题,但我在任何地方都找不到任何明确说明如何正确嵌套这些属性的文档。

我想将具有多个评论的单个产品评论索引到 Rich Snippets 中,经典 ASP 拉入不同的数据字段,这是我的代码:

<div>
    <div itemscope itemtype="http://data-vocabulary.org/Review">
        <span itemprop="itemreviewed">Forma Stanzol</span><br />
        By <span itemprop="reviewer"><%=formaStanzolReviewArray(0,i)%></span><br />
        <time itemprop="dtreviewed" datetime="<%=FormatDateTime(formaStanzolReviewArray(1,i),2)%>"><%=FormatDateTime(formaStanzolReviewArray(1,i),2)%></time> <br />        
        <span itemprop="description"><%=formaStanzolComment%></span>
    </div>      
</div>

这将返回错误:不会为此数据生成丰富的代码段,因为它似乎包含对一个项目的多个评论,但没有汇总评论信息。

所以,我添加了一个带有静态值的虚拟聚合代码,它看起来像这样:

<div>
    <div itemscope itemtype="http://data-vocabulary.org/Review">
        <span itemprop="itemreviewed">Forma Stanzol</span><br />
        By <span itemprop="reviewer"><%=formaStanzolReviewArray(0,i)%></span><br />
        <time itemprop="dtreviewed" datetime="<%=FormatDateTime(formaStanzolReviewArray(1,i),2)%>"><%=FormatDateTime(formaStanzolReviewArray(1,i),2)%></time> <br />        
        <span itemprop="description"><%=formaStanzolComment%></span>
    </div>
    <div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
        <span itemprop="itemreviewed">Forma Stanzol</span>
        <span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
            <span itemprop="average">9</span>
            out of <span itemprop="best">10</span>
        </span>
        based on<span itemprop="count">5</span> user reviews.
    </div>           
</div>

这会导致我的“评论”不会出错,但随后我的所有“汇总评论”都会推出此错误:不会为此数据生成丰富的摘要,因为它似乎包含许多项目的多个汇总评论,而不是单个汇总审查一项。

似乎无论我做什么,它都在自相矛盾,所以这就是为什么我认为这是一个嵌套问题。

我怎样才能解决这个问题?

编辑:理想情况下,我不想要这个项目的聚合视图。审阅者、项目名称、审阅日期和审阅描述就是我所需要的。

编辑编辑:此代码也在 For 循环中运行,其中每次传递都从数据库中获取信息。

4

1 回答 1

0

好的,所以这里的问题是一个网站,只有一个产品,但多个评论只需要一个“评论汇总”和一个“评级”项目类型。但是,必须使用多个“Review”项目类型。

因此,我的 For 循环为数据库中的每一行创建一个“评论”,使用相关的数据字段,然后在条件语句之后,放置“评论-聚合”和“评级”代码。

代码:

For i = 0 to uBound(formaStanzolReviewArray,2)
    reviewCount = reviewCount + 1

    formaStanzolComment = trim(formaStanzolReviewArray(2,i))

    'Do not show reviews with empty comments
    If Not (formaStanzolComment = "") OR isNull(formaStanzolComment) Then
    %>
        <div>
            <div itemscope itemtype="http://data-vocabulary.org/Review">
                <span style="position: absolute; left: 9999px;" itemprop="itemreviewed">Forma Stanzol</span>
                Rating: <span itemprop="rating"><%=formaStanzolReviewArray(3,i)%></span> - 
                By <span itemprop="reviewer"><%=formaStanzolReviewArray(0,i)%></span> - 
                <time itemprop="dtreviewed" datetime="<%=FormatDateTime(formaStanzolReviewArray(1,i),2)%>"><%=FormatDateTime(formaStanzolReviewArray(1,i),2)%></time> <br />        
                <span itemprop="description"><%=formaStanzolComment%></span>
            </div>        
        </div>
    <%
    sumRating = sumRating + formaStanzolReviewArray(3,i)
    End If
Next
ratingAvg = sumRating / reviewCount
%>
<div style="position: absolute; left: 9999px;">
    <div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
        <span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
            <span itemprop="worst">1</span>
            <span itemprop="average"><%=ratingAvg%></span>
            out of <span itemprop="best">5</span>
        </span>
        based on <span itemprop="votes"><%=reviewCount%></span> ratings.
        <span itemprop="count"><%=reviewCount%></span> user reviews.
    </div>
</div>
<%

将其视为 For 循环中的多个用户评论,但我们将所有这些评论汇总一次,然后为该汇总提供评分量表。

希望这可以帮助任何有嵌套问题的人。

请注意:我对这个特定的代码使用经典的 ASP。

于 2014-10-29T21:20:55.553 回答