Google测试工具显示Magento Breadcrumbs中的错误

时间:2015-03-04 03:46:26

标签: magento breadcrumbs magento-1.9 rich-snippets google-rich-snippets

我需要Magento面包屑的帮助。这是谷歌测试工具告诉我的:

面包屑1 网址:http://domain.com/ 标题:主页 面包屑2 网址:http://domain.com/category/ 标题:类别 面包屑3 标题:缺失和必需 url:缺少并需要

这是breadcrumbs.phtml

<?php if($crumbs && is_array($crumbs)): ?>
<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">
    <ul>
        <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
            <li class="<?php echo $_crumbName ?>" typeof="v:Breadcrumb">
            <?php if($_crumbInfo['link']): ?>
                <a rel="v:url" property="v:title" href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></a>
            <?php elseif($_crumbInfo['last']): ?>
                <strong><?php echo $this->escapeHtml($_crumbInfo['label']) ?></strong>
            <?php else: ?>
                <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
            <?php endif; ?>
            <?php if(!$_crumbInfo['last']): ?>
                <span>/ </span>
            <?php endif; ?>
            </li>
        <?php endforeach; ?>
    </ul>
</div>
<?php endif; ?>

我该如何解决?

提前致谢! 伊万

4 个答案:

答案 0 :(得分:1)

我已使用此代码解决了Google控制台发出的面包屑问题,请点击此处进行测试:https://search.google.com/structured-data/testing-tool#

<?php
$separator = $this->getBreadcrumbsSeparator();
 ?>

    <?php if($crumbs && is_array($crumbs)): ?>
    <div class="breadcrumbs"  >
    <ul itemscope itemtype="http://schema.org/BreadcrumbList">
      <?php $i = 0; ?>
        <?php foreach($crumbs as $_crumbName=>$_crumb): ?>
 <li class="<?php echo $_crumbName ?>" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <?php if(!empty($_crumb['link']) && (!$_crumb['last'])): ?>
            <a  itemprop="item" href="<?php echo $_crumb['link'] ?>" title="<?php echo $this->htmlEscape($_crumb['label']) ?>" rel="v:url" property="v:title">
                <?php echo $this->htmlEscape($_crumb['label']) ?>
                  <meta itemprop="position" content="<?php echo $i; ?>">
                  <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumb['label']) ?>">
            </a>
        <?php elseif($_crumb['last']): ?>
            <strong>
            <?php echo $this->htmlEscape($_crumb['label']) ?>
              <meta itemprop="position" content="<?php echo $i; ?>">
              <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumb['label']) ?>">

            </strong>
        <?php else: ?>
            <?php echo $this->htmlEscape($_crumb['label']) ?>
             <meta itemprop="position" content="<?php echo $i; ?>">
             <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumb['label']) ?>">
        <?php endif; ?>
        <?php if(!$_crumb['last']): ?>
            <span><?php echo $separator; ?></span>
             <meta itemprop="position" content="<?php echo $i; ?>">
             <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumb['label']) ?>">
        <?php endif; ?>
        </li>
          <?php $i++; ?>
        <?php endforeach; ?>
    </ul>
</div>

现在,将代码从开发站点上的产品页面复制到Google Web master工具Google结构化数据。如果Google可以阅读您的页面,那么一切都会很好。您可以在此处进行检查,如果需要的话,可以稍作修改。要修改您的代码,请点击此处:https://search.google.com/structured-data/testing-tool

答案 1 :(得分:0)

用以下代码替换您的代码..

<?php if($crumbs && is_array($crumbs)): ?>
<div class="breadcrumbs">
<ul xmlns:v="http://rdf.data-vocabulary.org/#">
    <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
        <li class="<?php echo $_crumbName ?>" typeof="v:Breadcrumb">
        <?php if($_crumbInfo['link']): ?>
            <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>" rel="v:url" property="v:title"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></a>
        <?php elseif($_crumbInfo['last']): ?>
            <strong rel="v:url" property="v:title"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></strong>
        <?php else: ?>
            <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
        <?php endif; ?>
        <?php if(!$_crumbInfo['last']): ?>
            <span>/ </span>
        <?php endif; ?>
        </li>
    <?php endforeach; ?>
</ul>
</div>
<?php endif; ?>

现在,将代码从开发网站上的产品页面复制到Google Web主工具Google Structured Data。如果Google可以阅读您的网页,那么一切都会好起来的。如果没有,则全页缓存消失。你需要解决Magento没有缓存面包屑的问题。此网站可能会帮助您解决缓存问题 - &gt; Fix Magento Cache Breadcrumb issue。我希望这能解决你的问题。另一个帮助的网站 - &gt;&gt; http://inchoo.net/magento/google-rich-snippets-in-magento/

答案 2 :(得分:0)

您没有针对痕迹导航的最后一项的链接。 Google需要它来显示路径而不是URL

<?php elseif($_crumbInfo['last']): ?>之后

<a href="<?php echo $path ?>" itemprop="url">前添加<strong>,不要忘记在课程结束时关闭代码</strong></a>

答案 3 :(得分:0)

我尝试了一切,没有任何效果,所以我最终选择了自己的解决方案。

我在自己的主题中为app\design\frontend\base\default\template\page\html\breadcrumbs.phtml创建了一个覆盖,并将其替换为:

<?php if($crumbs && is_array($crumbs)): ?>
<div class="breadcrumbs">
    <ul>
        <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
            <li class="<?php echo $_crumbName ?>">
                <?php if($_crumbInfo['link']): ?>
                    <a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>"><?php echo $this->escapeHtml($_crumbInfo['label']) ?></a>
                <?php elseif($_crumbInfo['last']): ?>
                    <strong><?php echo $this->escapeHtml($_crumbInfo['label']) ?></strong>
                <?php else: ?>
                    <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
                <?php endif; ?>
                <?php if(!$_crumbInfo['last']): ?>
                    <span>/ </span>
                <?php endif; ?>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

有了这个:

<?php if($crumbs && is_array($crumbs)): ?>
<div class="breadcrumbs">
    <ul itemscope itemtype="http://schema.org/BreadcrumbList">
        <?php $i = 0; ?>
        <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
            <li class="<?php echo $_crumbName ?>" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
                <?php if($_crumbInfo['link']): ?>
                    <a itemprop="item" href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $this->escapeHtml($_crumbInfo['title']) ?>">
                        <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
                        <meta itemprop="position" content="<?php echo $i; ?>">
                        <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumbInfo['label']) ?>">
                    </a>
                <?php elseif($_crumbInfo['last']): ?>
                    <strong itemprop="item">
                        <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
                        <meta itemprop="position" content="<?php echo $i; ?>">
                        <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumbInfo['label']) ?>">
                    </strong>
                <?php else: ?>
                    <span itemprop="item">
                        <?php echo $this->escapeHtml($_crumbInfo['label']) ?>
                        <meta itemprop="position" content="<?php echo $i; ?>">
                        <meta itemprop="name" content="<?php echo $this->escapeHtml($_crumbInfo['label']) ?>">
                    </span>
                <?php endif; ?>
                <?php if(!$_crumbInfo['last']): ?>
                    <span>/ </span>
                <?php endif; ?>
            </li>
            <?php $i++; ?>
        <?php endforeach; ?>
    </ul>
</div>