首页 > 解决方案 > 如何与两种不同类型的搜索元素共享 Google CSE 结果元素

问题描述

高层次的目标是拥有一个“搜索”页面,其中包含“两列”Google CSE (API 2.0) 搜索和结果元素,并在“搜索”页面上显示结果的其他页面上拥有“两页”搜索元素。这似乎表明“搜索”页面上需要两种不同类型的结果元素。

设计应该是在“两栏”和“两页”搜索元素之间共享“搜索”页面结果元素还是有两个不同的结果元素?

从概念上讲,如果您可以确定结果是来自“两列”元素还是“两页”元素之一,您可以使用回调(开始?)来配置结果元素以匹配搜索。一旦搜索页面用于显示“两页”结果,它就需要能够显示该页面上搜索的“两列”结果。

  1. 有两个不同的结果元素并有一个回调(渲染?)隐藏未使用的结果元素会更好,还是动态配置单个结果元素会更好?

  2. 如果使用单个结果元素,如何在回调中确定结果的来源(“两列”或“两页”搜索)?

  3. 页面加载后回调是否可以多次自定义结果元素?

  4. gname 和结果元素自定义会有什么问题吗?

标签: javascripthtmlgoogle-custom-search

解决方案


一项实验发现了一些似乎可行的方法,但 Google 文档并未对此进行解释。该实验有两 (2) 个页面:Search1.htm 和 Serach2.htm。

搜索1.htm

<body>
  <h1>Search1.htm</h1>
  <h2>Two Page Search</h2>
  <div class="gcse-searchbox-only" data-gname="page" data-resultsUrl=”Search2.htm"></div>
</body>

搜索2.htm

<body>
  <h1>Search2.htm</h1>
  <h2>Two Column Search</h2>
  <div class="gcse-searchbox" data-gname="column"></div>
  <h2>Two Column Results</h2>
  <div class="gcse-searchresults" data-gname="column"></div>
  <h2>Two Page Results</h2>
  <div class="gcse-searchresults-only" data-gname="page"></div>
</body>

Search1.htm 中的搜索将结果生成到两个 Search2.htm 结果元素中。使用回调,两个 gname(页面和列)的所有回调都以相同的结果驱动。使用 Search2.htm 的搜索仅将结果放在 gname=”column” 元素中。

删除 Search2.htm gname="page" 元素会产生所需的行为,其中来自 Search1.htm 和 Search2.htm 的搜索共享相同的结果元素。这在 Google 文档中没有描述,但似乎是一个简单的解决方案。

此外,测试似乎没有在各种回调(initilaizationCallback、启动、准备和渲染)中找到任何信息,这些信息表明哪个搜索元素正在提供结果。


推荐阅读