Вопрос

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

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

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

index.php?q=node/22

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

index.php?q=recipe/muffin

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

Это понятно?

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

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

Это было полезно?

Решение 2

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

Я настроил форму просмотра с возможностью поиска - с некоторыми фильтрами на странице (и так далее в 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>

Другие советы

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

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

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

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

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

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

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

Disallow: /node/

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top