0

我有一个小问题,我一直在尝试为我一直合作的客户解决问题。我们有 4 组单页,它们使用 PHP 基于提供的获取字符串从数据库加载内容。生成的这些页面针对 SEO 进行了很好的优化,并且具有我们需要能够使用搜索功能进行搜索的图像和内容的 alt 标签。

现在我假设(每个人都知道假设会让你得到什么)默认情况下这些页面将能够通过具体的 5 内置搜索功能进行搜索。但它不起作用。如果我搜索一个我知道肯定在这些页面之一上的单词,甚至多次没有找到结果。

如何让 Concrete5 搜索这些页面。如果默认情况下或插件无法做到,那么有人可以就如何解决这个问题提供一些建议。这是一个重要的功能,必须完成。

编辑:见下面我的评论。我仍然需要一些帮助或指导,因为 CSE 提供了很多选择。EDIT2:安装爬虫和自定义搜索引擎来解决我的问题对我来说可能是可行的。我想到了蜘蛛。非常感谢有关该选项或其他选项的任何其他建议!

4

2 回答 2

0

不幸的是,C5 没有提供这样做的方法——利用搜索索引的唯一方法是使用块。即使您创建了一个虚假块只是为了将内容从 single_page 传递到搜索索引,也无法说某些内容来自一个 URL,而其他内容来自另一个 URL(您需要这样做,因为您的single_page 控制器正在处理许多不同的 URL)。

I don't know of a way to achieve what you want to do (and it appears that nobody else does either -- http://www.concrete5.org/community/forums/customizing_c5/make-content-in-single-pages-searchable/ ), other than building your own internal search engine.

EDIT: I just did some digging, and thought that perhaps you could manually insert records into the PageSearchIndex table and specify the searchable content and the desired path there -- but this won't work because it relies on one cID (collection id, a.k.a. page id) per entry -- so you'd only be able to insert one record for the top-level single_page path.

I think the simplest solution here would be to create your own searching infrastructure for your single_pages (like some kind of function in the controller that would return an array of page paths and searchable content for each one), then override the search block and perform an additional search of your single_page -- then combine the results on the search results page there. Or just use google site search for your site, which will actually crawl the pages and hence find your various single_page urls: https://www.google.com/cse/

Best of luck.

于 2013-09-15T19:05:41.107 回答
-1

我没有对此进行测试,但也许您可以function getSearchableContent()像处理块一样在单页控制器中放置一个。这将返回要搜索的字符串。看起来像这样:

function getSearchableContent() {
    // ... compose searchstring depending on the queried content.
    return $searchstring;
}

但我不知道这是否适用于动态内容。如果没有,我会查看 C5 的搜索索引核心类并尝试为您的项目扩展它们。

于 2013-09-14T09:00:18.373 回答