Проблема с Drupal - взгляды против узла - PullRequest
0 голосов
/ 18 сентября 2009

У меня проблема с поиском по сайту, который неправильно связывается с моими страницами просмотров. У меня есть страница просмотров, настроенная для отображения данных рецепта. Он имеет свойства URL:

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

где% 1 - это категория рецептов, например, breakfast, а% 2 - это название рецептов, например, Muffin. Представление просматривает содержимое узла рецепта и отображает его соответствующим образом. Проблема заключается в том, что модуль поиска по сайту не ссылается на представление, он ссылается на узел, который все еще может выглядеть следующим образом:

index.php?q=node/22

Если я отредактирую этот узел с помощью псевдонима URL, я могу превратить его в:

index.php?q=recipe/muffin

Но : это конфликтует с отображением представления на сайте, и функция поиска переводит их в УЗЕЛ, а не в ВИД. Я действительно очень нуждаюсь в том, чтобы их отвезли в поле зрения.

Это ясно?

Как это можно исправить?

Редактировать: представление имеет переменные как для категории рецепта, так и для названия рецепта (например, завтрак / кекс). Само форматирование страниц узла было невозможно, поэтому, боюсь, нам пришлось использовать представления.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2009

Это может сработать?

Я настроил форму просмотра с возможностью поиска - некоторые фильтры отображаются на странице (и так далее в URL).

Я отключил поиск по сайту, он все равно не нужен за пределами этой области рецептов, и я думаю, что могу построить простой блок для $ GET (или $ POST, я всегда забываю) данных для представления. *

Затем представление читает URL и отображает соответственно:

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

показывает рецепты, содержащие "пирог" в заголовке.

Просто нужно построить форму сейчас ...

edit - да, это сработало!

<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>
0 голосов
/ 19 сентября 2009

Это своего рода обходной путь, но:

Вы можете использовать поисковую систему Google в качестве поисковой системы по умолчанию и запретить Google видеть URL-адреса узлов / *, используя robots.txt .

Просто добавьте это ниже "# Paths (clean URLs)" в файле robots.txt, который находится в корне Drupal:

Disallow: /node/

(Не забывайте, что добавление этой строки остановит поисковые системы от сканирования всех узлов / ** URL.)

Также добавление просмотров на карту сайта может быть полезным для этого процесса.

Я никогда не пробовал этот процесс, поэтому я не уверен, работает он или нет;)

0 голосов
/ 18 сентября 2009

Что именно делает вид?

Если он ищет узлы с аргументом (скажем, «Маффин») в их заголовках, то я думаю, что вам следует просто изменить URL-адрес представления на что-то вроде search_recipe и покончить с этим.

Если это действительно что-то вроде отображения одного узла (поэтому recipe / muffin будет подходящим уникальным идентификатором), то почему вы используете Views для этого?

Также вы можете заменить поисковую страницу сайта открытыми фильтрами просмотра. Это довольно мощный.

...