2012-07-03 4 views
2

Я создаю поисковый механизм поиска по сайту Google, и я пытаюсь отобразить определенные метаданные в результатах поиска, используя условную разметку, чтобы предотвратить отображение определенных вещей. Метаданные хранятся на своих страницах с помощью PageMaps, как это:Поиск по сайту Google: настройка расширенных фрагментов с метаданными в результатах поиска

<!-- 
    Google Search PageMap 
    <PageMap> 
     <DataObject type="document"> 
      <Attribute name="type">project</Attribute> 
      <Attribute name="title">Page title</Attribute> 
      <Attribute name="topic">Page topic</Attribute> 

      <Attribute name="topic_url">http://url.com/knowledge-hubs/resilient-catchments/river-restoration-partnerships/</Attribute> 
      <Attribute name="knowledge_hub">Page knowledge hub</Attribute> 
      <Attribute name="knowledge_hub_url">http://url.com/knowledge-hubs/resilient-catchments/</Attribute> 
      <Attribute name="sniffer_code">ABC123</Attribute> 
      <Attribute name="project_status">Active</Attribute> 
      <Attribute name="project_start">1 August 2010</Attribute> 
      <Attribute name="project_end">1 July 2012</Attribute> 
     </DataObject> 

     <DataObject type="thumbnail"> 
      <Attribute name="src">http://url.com/img.jpg</Attribute> 
      <Attribute name="width">100</Attribute> 
      <Attribute name="height">60</Attribute> 
     </DataObject> 
    </PageMap> 
--> 

Некоторые страницы генерировать все эту информацию, другие просто включают несколько вещей (например, название и тип).

Я хочу, чтобы отображать любую информацию, включенную здесь, в зависимости от страницы. Это зависит от условных атрибутов data-if в шаблоне webResult.

Это то, что я получил до сих пор:

<article id="sniffer_webResult"> 
      <div class="gs-title"> 
       <a data-attr="{href:unescapedUrl,target:target}" class="gs-title"> 
        <!--<span data-if="typeof richSnippet != 'undefined'" data-body="richSnippet.document.title"></span>--> 
        <span data-body="html(title)"></span> 
       </a> 
      </div> 

      <div data-if="Vars.richSnippet" data-attr="0" data-body="render('thumbnail',richSnippet,{url:unescapedUrl,target:target})"></div> 
      <div class="gs-snippet" data-body="html(content)"></div> 
      <div data-if="typeof richSnippet != 'undefined'" class="meta"> 
       <!--<article data-if="richSnippet.document.type == 'project'">--> 
        <!--<div data-if="richSnippet.document.snifferCode != 'undefined'"><strong>Sniffer code: </strong><span data-body="richSnippet.document.snifferCode" data-attr="0"></span></div>--> 
        <div data-if="richSnippet && richSnippet.document.snifferCode"><strong>Sniffer code: </strong><span data-body="richSnippet.document.snifferCode" data-attr="0"></span></div> 
        <div data-if="richSnippet.document.projectStatus != null"><strong>Status: </strong><span data-body="richSnippet.document.projectStatus" data-attr="0"></span></div> 
        <div data-if="richSnippet.document.topic != null" class="topic"><strong>Topic: </strong><a data-attr="{href:richSnippet.document.topicUrl}" data-body="richSnippet.document.topic" data-attr="0"></a></div> 
        <div data-if="richSnippet.document.knowledgeHub != null" class="hub"><strong>Knowledge hub: </strong><a data-attr="{href:richSnippet.document.knowledgeHubUrl}" data-body="richSnippet.document.knowledgeHub" data-attr="0"></a></div> 
       <!--</article>--> 
      </div> 
     </article> 

(Вы можете видеть, я отвод о комментировании вещи и т.д.)

Я не могу показаться, чтобы получить условные работать. Некоторые атрибуты отлично работают, поэтому я почти там. Страницы, как домашняя страница, которая не включает в себя большинство атрибутов, дают эту ошибку в результатах:

TypeError: Cannot read property 'snifferCode' of undefined: richSnippet && richSnippet.document.snifferCode

Я прошел через документации компании Google here, но я не нашел, что это будет особенно всеобъемлющим.

Любые мысли очень ценятся! :)

ответ

2

Вы решили спуститься по маршруту XML и проанализировать сервер результатов перед их отображением. Это дает намного больший контроль над тем, как и когда отображаются метаданные страницы, и в целом это намного более мощно. И это не так страшно, как это впервые появилось!

richSnippets полезны для базовых дисплеев, но я не чувствовал, что могу уверенно контролировать их отображение, так что это еще одна причина для XML.