0

我的网站搜索无法正确链接到我的视图页面时遇到问题。我已经设置了一个视图页面来显示配方数据。它具有以下 URL 属性:

index.php?q=recipe/%1/%2

其中 %1 是配方类别,例如 ,breakfast而 %2 是配方名称,例如Muffin。该视图遍历配方节点内容,并在适当时显示它。问题是站点搜索模块没有链接到视图,它链接到仍然可以看起来像这样的节点:

index.php?q=node/22

如果我使用 URL 别名编辑该节点,我可以将其变为:

index.php?q=recipe/muffin

但是:这与站点上的视图显示冲突,搜索功能将它们带到节点而不是视图。我真的,真的需要他们去看风景。

明白了吗?

如何修复?

编辑:视图具有食谱类别和食谱名称的变量(例如,早餐/松饼)。自己格式化节点页面是不可能的,所以我们不得不使用视图,恐怕。

4

3 回答 3

0

视图究竟做了什么?

如果它在标题中搜索带有参数(例如“Muffin”)的节点,那么我认为您应该简单地将视图 URL 更改为类似 search_recipe 的内容并完成它。

如果它确实执行了显示单个节点之类的操作(因此配方/松饼将是一个适当的唯一 ID),那么您为什么要为此使用视图?

此外,您可以使用公开的视图过滤器替换站点的搜索页面。它非常强大。

于 2009-09-18T14:32:45.670 回答
0

这可能有用吗?

我已经设置了一个可搜索的视图表单 - 在页面中公开了一些过滤器(在 url 中也是如此)。

我已经禁用了站点搜索,在这个配方区域之外无论如何都不需要它,我想我可以构建一个简单的块来 $GET(或 $POST,我总是忘记)表单数据到视图。

然后视图读取 url 并正确显示:

index.php?q=recipes%2Fsearch&time=All&keywords=pie

显示标题中包含“派”的食谱。

现在只需要构建表单...

编辑-是的,这是一种享受!

<form id="search-block-form" action="index.php?q=recipes%2Fsearch&amp;time=All" accept-charset="UTF-8" method="get">
<div>
<div class="container-inline right-search">
<div id="edit-search-block-form-1-wrapper" class="form-item">
<label for="edit-search-block-form-1">Quick recipe search: </label>
<input name="q" value="recipes/search" type="hidden" />
<input name="time" value="All" type="hidden" />
<input id="edit-search-block-form-1" class="form-text" title="Enter the recipe terms you wish to search for." maxlength="128" name="keywords" size="15" type="text" />
</div>
<input id="edit-submit" class="form-submit" name="op" type="submit" value="Search" />
</div>
</div>
</form>
于 2009-09-18T15:52:24.750 回答
0

这是一种解决方法,但是:

您可以尝试使用 Google 自定义搜索引擎作为默认搜索,并使用robots.txt让 Google 看不到 node/* URL 。

robots.txt只需在 Drupal 根目录的文件中的“# Paths (clean URLs)”下面添加:

Disallow: /node/

(不要忘记添加此行将阻止搜索引擎抓取所有 node/** URL。)

向站点地图添加视图也可能有助于此过程。

我从来没有尝试过这个过程,所以我不能确定它是否有效;)

于 2009-09-19T02:04:40.777 回答