我的网站搜索无法正确链接到我的观看页面。我已经设置了一个视图页面来显示配方数据。它的URL属性为:
index.php?q=recipe/%1/%2
其中%1是配方类别,例如breakfast
,%2是配方名称,例如Muffin
。视图遍历配方节点内容,并根据需要显示。问题是网站搜索模块没有链接到视图,它链接到仍然可以看起来像的节点:
index.php?q=node/22
如果我使用URL别名编辑该节点,我可以将其转换为:
index.php?q=recipe/muffin
但是:这与网站上的视图显示冲突,搜索功能将它们带到NODE而不是VIEW。我真的非常需要他们接受观点。
这是清楚的吗?
如何解决?
编辑:视图包含配方类别和配方名称的变量(例如,早餐/松饼)。格式化节点页面本身是不可能的,所以我们不得不使用视图,我担心。
答案 0 :(得分:0)
视图究竟做了什么?
如果它在标题中搜索带有参数(例如“Muffin”)的节点,那么我认为您应该只是将视图URL更改为search_recipe,并使用它完成。
如果它确实显示了一个节点(因此配方/松饼将是一个合适的唯一ID),那你为什么要使用Views呢?
此外,您可以使用公开的视图过滤器替换网站的搜索页面。它非常强大。
答案 1 :(得分:0)
这可能有用吗?
我已经设置了一个可搜索的视图表单 - 在页面中显示了一些过滤器(在URL中也是如此)。
我已经禁用了网站搜索,但是在这个配方区域之外不需要它,我想我可以构建一个简单的块来$ GET(或$ POST,我总是忘记)将表单数据添加到视图中。
然后视图会读取网址并正确显示:
index.php?q=recipes%2Fsearch&time=All&keywords=pie
显示标题中包含“pie”的食谱。
现在只需要构建表单......
编辑 - 是的,这是一种享受!
<form id="search-block-form" action="index.php?q=recipes%2Fsearch&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>
答案 2 :(得分:0)
这是一种解决方法,但是:
您可以尝试使用Google自定义搜索引擎作为默认搜索,并使Google无法使用robots.txt查看节点/ *网址。
只需在Drupal根目录下的robots.txt
文件中添加“#Paths(clean URL)”:
Disallow: /node/
(不要忘记添加此行会阻止搜索引擎抓取所有节点/ **网址。)
同样adding views to the sitemap可能有助于此过程。
我从未尝试过这个过程,所以我无法确定它是否有效;)